现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

刘文志:异构并行计算的未来很光明

2015-07-10 07:13 工业·编程 ⁄ 共 3209字 ⁄ 字号 暂无评论

刘文志,花名风辰,毕业于中国科学院研究生院,闻名于并行计算江湖,尤其善长异构并行计算(X86、ARM、GPU、APU、PHI)和大规模集群计算相关技术,有7年相关经验,涉及图像处理、计算机视觉、数据挖掘和石油勘探。曾任英伟达并行计算工程师(协助建立英伟达北京CUDA团队)、百度在线高级研发工程师(协助建立百度深度学习实验室异构计算团队)。著有《并行算法设计与性能优化》、《并行编程方法与优化实践》

异构计算在国内外的发展趋势怎样?它在企业的就业情况如何?开发者又该如何学习并行计算?深度学习与机器学习有何区别?带着这些疑问,CSDN联系上了刘文志,请他对此一一解答。

CSDN:请先自我介绍下以及目前所负责的领域。

刘文志:大家好,我是刘文志,从事异构并行计算、尤其是基于GPU的异构并行计算的同学可能更熟悉我的网名“风辰”。2011年,我从中科院毕业后加入了NVIDIA CUDA团队,2014年初离开了NVIDIA 加入了吴韧老师的团队,是吴老师的第一位下属。我现在在一家创业公司负责异构并行计算团队,团队的主要职责是为公司的应用、系统提供基于GPU、X86、ARM及其它嵌入式处理器的性能优化支持。一句话总结是:这几年从和学术界打交道转到了和工业界打交道。

CSDN:你从事并行计算这么多年,尤其在异构并行计算领域颇有造诣,你为何会想到从事这一领域?有没有什么故事可以分享?

刘文志:从事这一领域可以说是机缘巧合,也可以说是兴趣使然。我本科时学习的是应用化学专业,因为化学方面有很多并行计算的需求,比如要模拟分子的最优构型、模拟一些特质的化学性质,当时通过高斯等软件了解到并行计算,觉得并行计算比较有意思,能做单机做不了的事情。2008年进入中科院读研,那个时候基于GPU的并行计算刚出现,当时的导师对GPU并行计算比较感兴趣,想做一些试验,而我的背景正合适,所以就成为了试验品。知识和经验丰富后,就扩充了GPU并行计算方面的知识和实践,渐渐的覆盖到集群、X86、ARM等领域的并行计算。

CSDN:《并行算法设计与性能优化》与《并行编程方法与优化实践》汇聚了你的真知灼见,在你看来该书适合什么样的读者?这两本书有何不同?

刘文志:我还是先来说两本书的不同吧!《并行算法设计与性能优化》侧重在并行计算和代码性能优化的理论,以及一些辅助理解理论的实例;而《并行编程方法与优化实践》侧重在进行并行编程需要掌握的一些库、程序设计语言的细节,以及一些如何使用这些语言、库来优化算法的实例。

对于《并行算法设计与性能优化》来说,它适合想要建立雄厚的并行计算和代码性能优化的基础的同学。而《并行编程方法与优化实践》适合因为项目需要,需要学习一种语言或库来解决问题的同学。如果想要长期从事并行计算方面的工作的同学,更要关注《并行算法设计与性能优化》。

从另外一方面来说,《并行算法设计与性能优化》可以看成《并行编程方法与优化实践》的基础,需要《并行编程方法与优化实践》的同学一定需要《并行算法设计与性能优化》。

CSDN:当初写这两本书的初衷是什么?分别历时多久完成的?你如何在进度压力下,享受写书带来的快乐?

刘文志:最早是因为想总结一下自己的知识,避免知识过时和跟踪并行计算领域的最新进展。开始并没有打算出版,所以语言、表达方式、内容结构都没有特别的在意,可以说只有我自己能看懂。后来决定出版后,花了大约一年的时间来补充、删减内容,让它们更具有系统性和可读性。

写书本身是一个富有乐趣的行为,写技术书籍更有乐趣,如何在解说知识更形象,更具有趣味性,何时恰当的增加代码示例都是非常有趣的,而想到读者能够从书中获得更多的知识时,这又是一项更大的乐趣。

写书时,进度的压力永远存在,所以计划非常重要。合理的计划之后,写书的压力就变成了工作的压力之下的一种消遣。

CSDN:目前,异构计算在国内外的发展趋势是怎样的?你怎么看待异构并行计算的未来?

刘文志:异构并行计算在国内外正在迅猛发展,我毕业的时候都担心找不到相关的工作,而今天无论是学校、超算中心还是企业对异构并行计算人士的需求都得不到很好的满足。整体来说,异构并行计算现在向以下几个方向发展:

  1. 集群计算。这是传统高性能计算的领域。但是今天高性能计算已经演变成了异构并行计算的一部分,越来越多的高性能计算集群使用GPU、MIC,甚至FPGA等。
  2. 单机计算。推动单机计算向异构并行计算发展的主要动力是游戏、计算机辅助设计等,而主要表现是GPU+CPU的异构计算。X86处理器满足不了游戏渲染对计算能力的需求,必须需要GPU的存在,实际上现在Intel X86处理器芯片中集成显卡所使用的面积已经超过了CPU的面积。
  3. 移动计算。近几年发展表明,人们对手机的需求比对PC的需求更大。目前几乎所有的移动芯片解决方案都是异构的,除了有CPU、GPU之外,他有视频编解码单元,有音频处理单元。人类倾向于把更多工作内容转移到手机上,而为了保证续航时间,移动处理器的设计一开始就不是以高性能为目标,这使得要在移动处理器上获取高性能是比较难的。
  4. 嵌入式计算。在一些恶劣工作环境下,只有DSP和FPGA能够满足要求,在DSP和FPGA上优化程序性能需要的技能和X86/GPU具有明显的区别。

在我看来,异构并行计算的未来是光明的,在未来几年内异构并行计算会得到进一步的发展。目前来说更多的是异构并行计算围绕算法发展,即软件开发人员将算法移植到异构并行计算平台上,未来将会出现越来越多的为异构并行计算平台设计的算法,而企业对异构并行计算人士的需求缺口会进一步扩大。

CSDN:深度学习领域是计算机科学一个新兴领域,什么是深度学习?它与机器学习有何区别?目前深度学习面临的挑战有哪些?

刘文志:深度学习并不是一个新兴领域,一些著名的研究人员(如hinton)80年代就已经在研究它了。深度学习主要是指神经网络,它的主要特征是:不需要手动选择特征,特征是通过算法从数据中学习得到的,这能够减少人工选择特征的一些缺点。深度学习是机器学习这个大方向中的一个小方向。传统的机器学习算法需要手动选取特征,而深度学习则从数据中学习特征。

目前深度学习面临的挑战有很多,有算法方面的,也有实现方面的。从算法方面来说,如何设计一个高性能的神经网络很重要,如何组织神经网络(有多少层,每层做什么操作,每层的神经元数量),如何初始化参数。

从实现方面来说,如何高效的实现算法,降低神经网络的训练时间,如何在分布式环境下高效的训练神经网络。最后如何收集到足够的数据来训练神经网络的同时又避免过拟合。

CSDN:对于开发者而言应该如何学习并行计算,有没有经验可以分享下?

刘文志:并行计算的思维方式和串行计算具有明显的区别,要想学好并行计算建议同学们从以下几个方面努力:

  1. 培养并行思维,学习一些如何通过并行计算解决常见问题的实例,比如nbody问题、偏微分方程求解问题等。
  2. 了解一些硬件、系统的细节。并行编程以提高计算速度为目的,这要求开发人员了解硬件、系统的具体细节,以避免走进了硬件、系统的缺陷。
  3. 学习一些常见的并行编程语言、工具的使用。只有使用编程语言、工具才能实现并行算法,才能在某个具体的硬件上运行,才能了解算法是否优良。
  4. 边学习边编写并行代码。学习的最好的办法是做出来,如果你制造出了飞机,还需要学习制造飞机吗?做才是最好的学习方法。
  5. 保持正直、谦逊的心态。

CSDN:未来的下一步规划是什么?

刘文志:从短期、中期和长期来说,我的规划如下:

1. 我的短期规划是准备写一本OpenCL的技术书籍;让国人更了解OpenCL这个生态环境。这件事情正在做,希望不久之后就可以完成。

2. 我的中期规划是建立一个世界领先的异构并行计算团队;这件事情现在正常做,相信三四年后会成功。

3. 我的长期规划想改变中国在异构并行计算领域的现状。这件事情我正在想如何去做,有人如果想到如何去做,可以联系我。

给我留言

留言无头像?