【开源之夏专访】在项目中实践理论——陈国凯
夏天渐行渐远,秋天匆匆晃过,开源之夏2022在洁白如新的冬天如期收获了350 位同学的结项成果,这些同学也在开源软件社区留下了自己的足迹,感谢各位同学的支持。今年我们依旧按照最佳质量奖、突出贡献奖、最快进步奖、最具潜力奖四个角度评选出了具有代表性的20位优秀学生。
本次采访,我们邀请了最具潜力奖获奖者陈国凯,分享他的经验。
姓名:陈国凯
性别:男
年龄:23
学校:中国科学院大学/中科院计算所
兴趣爱好:探索并参与开源项目,红警2
--自我介绍--
1、首先请简单介绍一下自己。
我是陈国凯,本科毕业于中国科学院大学,毕业后留在本校于中科院计算所继续读研,研究方向是计算机体系结构。我目前的主要研究内容是超标量乱序处理器前端(取指与分支预测)设计和自定义指令集扩展。这方面的知识积累也有效帮助我实现了本年度的开源之夏项目。
2、最开始是在哪里了解开源的,是什么让你决定参与开源?
如果说接触是指使用开源软件,我在初中时尝试在自己的电脑上安装 Linux 操作系统,以体验不同于 Windows 的另一种生态,是对开源的第一次尝试。在本科期间,我参与了学校的开源社团,也随之阅读了开源领域的一些经典文献,对开源有了更深刻的理解。在学习生活中,我使用了LaTeX、GCC、Clang等大量开源软件,伴随着学习的深入,我逐渐有能力读懂开源项目并解决一些项目的小问题,随着解决问题的逐步增加,我也自然融入到了开源活动中。
3、我们了解到,目前你在担任国科大开源协会(OpenCAS)副会长,可以介绍一下这个组织吗?
国科大开源协会是一个开源领域的社团,主要为国科大的同学们提供一个开源相关话题的讨论平台,考虑到国科大各位同学广泛的地理分布与当前形势,目前主要在线上活动。
4、你的研究和参加的活动很多和RISC-V有关,还参加过UCB的访学,是哪些原因让你对RISC-V“情有独钟”,给大家安利一下吧。
RISC-V是一个开源精简指令集架构,它吸取了以往各RISC架构设计的经验教训,在标准指令集中去除了诸如分支延迟槽、条件执行等不利于现代处理器设计的特性;引入了模块化设计,在最小仅几十条指令的基础指令集外提供了丰富的标准指令集扩展来满足各领域的特定需要,还为非标准的自定义指令集预留了编码空间;其宽松的指令集授权降低了科研及产业应用的门槛,也催生出了一系列开源的硬件实现。此外,RISC-V架构的软件适配是难得的实践新架构新算法的试验田。
--关于开源之夏2022--
5、请简单介绍一下你在开源之夏2022中的项目。
本次我参与的项目是为 RISC-V 架构优化 Kprobe。Kprobe 是 Linux 内核提供的一种插桩机制,允许使用者在内核代码内注册断点处理函数,当内核自身执行到对应位置,相关处理函数就会得到通知以统计信息或做出修改。Kprobe 的优化则是采用分支(跳转)指令替代断点指令来实现执行到断点位置的执行流劫持。我对该机制在RISC-V架构上可能的各种实现方案进行了较为详尽评估并从中选择了分析指令流寻找隐藏空闲寄存器的方法实现优化。截至目前,这一优化目标已经达成,在带有相关机制的 RISC-V 版 Linux 内核上可以使用优化的 Kprobe 加速执行。
6、之前有参加过开源之夏系列活动吗,每次参加的感受和收获有什么不同?
第一次参与开源之夏的主要感受是成功挑战了自己的预期,完成了一件之前没有很大把握做成的任务。第二次作为 Mentor 参与开源活动,让我认识了更多开源社区的小伙伴,也极大程度提升了开源项目的完成度。而今年再次以学生申请者身份参加,选择了一个相对第一次参与难度更大的项目,让我的知识储备得到了进一步丰富,也从不同于平时硬件开发的角度实践了学习过的学科理论。
7、在项目中遇到最印象深刻的问题是什么?如何解决的?有什么收获吗?
在最初的实现中,我并未充分考虑到多处理器场景下的缓存一致性问题,误认为某个替换函数能够保证多核场景下的缓存一致性,实际在替换内核代码仅清空了当前正在执行的处理器核心的指令缓存。这导致这一实现仅能在单核场景下可靠工作而在多核场景下时常出错并导致内核崩溃。为解决这一问题,我分析了可能出现的并发场景并深入阅读代码替换所用的函数细节实现,发现其并未处理多核场景。最终,我参考已有的仅支持替换4字节的多核替换代码实现了支持更大范围数据替换的多核替换代码。这一探索过程让我对多处理器缓存同步机制有了更加深入的认识。
--关于开源和学习--
8、目前有加入到开源社区吗,你认为一个合格的开源社区需要有哪些特征?
目前我主要活跃在香山开源社区,当然除此之外我也会因遇到的各项问题或个人兴趣而参与其他开源社区的活动。我认为一个合格的开源社区需要有活跃并得到一定程度关注的开源项目,需要有开放的讨论与反馈平台,社区外开发者应当能够相对简单地融入项目开发,最好能有一份完善的文档供使用及开发入门。
9、看到你在高中就深度学习了编程,参加过NOIP并获得一等奖,可以分享你的学习技巧吗?
学习是自己的事。编程/算法/开源类的知识,通常需要自己主动查找学习资料并寻找实践场景。而至少在初学阶段,遇到的大部分问题都会是前人经历并解决过的,要善于利用搜索引擎查找前人的探索记录。如果这一特定领域有经典的教科书,也可以从教科书出发学习以避免点歪技能树,但要切记实践是检验学习效果的金标准,学习的知识最终要落实到实践。
10、关于编程语言,你目前了解哪些,如果给同学们推荐的话,你有什么建议吗?
目前我主要使用的编程语言是Chisel(Scala)和C,前者主要应用于香山处理器的硬件开发,后者主要用于各种基础软件(bootloader、内核等)开发。此外,由于平时科研需要,我还会接触一些DSL,比如Gem 5模拟器使用的译码语言、Makefile等。在各种开源项目开发过程中有很大概率接触到各种语言,其中很可能出现之前未接触到的语言。我的观点是学习编程的重点在于学习背后的编程思想与设计范式,在用一门编程语言完成入门后,学习其他语言是一个非常自然的过程。
11、RISC-V是否是你未来计划深耕的领域,你对RISC-V之后的发展有哪些期待?
是,不管是香山开源处理器还是本次开源之夏参与的Kprobe优化项目,我比较深入参与的各项目都是围绕RISC-V开源指令集的。得益于RISC-V的开源可扩展特性,我期待RISC-V在从嵌入式到桌面再到高性能计算的各领域中通过各种灵活的指令集组合解决领域特定问题,得到广泛应用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【FAQ】申请Health Kit权限的常见问题及解答
华为运动健康服务(HUAWEI Health Kit)提供原子化数据开放,用户数据被授权获取后,应用可通过接口访问运动健康数据,对相关数据进行增、删、改、查等操作。这篇文章汇总了申请开通Health Kit测试权限的常见问题,并给出了详细解答,希望为开发者提供相关参考。 (1) 申请Health Kit 审核时限多久? 答:审核周期约15个工作日,审批结果将以短信和邮件的形式通知开发者。若材料审核被驳回,请按照审核意见修改后重新提交,重新提交后审核周期仍为15个工作日。为了加快您的审核进度,请认真对待每一次申请。 (2) 个人开发者是否可以申请接入华为运动健康服务? 答:基于隐私政策要求,个人开发者如果以短暂研究、开发、测试为目的,可以申请接入华为运动健康服务,读/写开放等级为基础的用户数据(如步数、热量、距离等)。但是需要注意以下内容: 1.申请过程中,需在申请材料清单中明确项目或测试结束时间,相关管理人员将在您相关工作结束后关闭权限。 2.高阶用户数据(如心率、睡眠、血压、血糖、血氧等健康数据)不开放给个人开发者。 3.申请材料、个人征信情况审核通过后,仅限前100名用户可以使用开...
- 下一篇
vivo 推荐业务 x DeepRec:全链路优化实践
作者: vivo - 人工智能推荐团队:何鑫、李恒、周健、黄金宝 背景 vivo 人工智能推荐算法团队在深耕业务同时,也在积极探索适用于搜索/广告/推荐大规模性稀疏性算法训练框架。分别探索了 tensornet/XDL/tfra 等框架及组件,这些框架组件在分布式、稀疏性功能上做了扩展,能够弥补 tensorflow 在搜索/广告/推荐大规模性稀疏性场景不足,但是在通用性、易用性以及功能特点上,这些框架存在各种不足。 DeepRec 是阿里巴巴集团提供的针对搜索、推荐、广告场景模型的训练/预测引擎,在分布式、图优化、算子、Runtime 等方面对稀疏模型进行了深度性能优化,提供了丰富的高维稀疏特征功能的支持。基于 DeepRec 进行模型迭代不仅能带来更好的业务效果,同时在 Training/Inference 性能有明显的性能提升。 作为 DeepRec 最早的一批社区用户,vivo 在 DeepRec 还是内部项目时,就与 DeepRec 开发者保持密切的合作。经过一年积累与打磨,DeepRec 赋能 vivo 各个业务增长,vivo 也作为 DeepRec 深度用户,将业务中的需...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用