论文部分内容阅读
在我的工作中,我尽量到处去和从事并行计算的研发团队进行交流。在这个过程中,我惊奇地发现并行计算的硬件和软件状态之间的差异竟是如此之大。
在硬件方面,我们对各种细节都非常满意。我们知道,多核将会成为主流,单个处理器中不同的核心可以同时做不同的工作,将会有可扩展的互联模型,为了尽量实现本地化需要更多的缓存。
然而,在软件方面,情况却是一团糟。
我们需要一种新的编程语言吗?还是说对当前的语言进行扩展就能够满足需求呢?数据并行编程语言可以让一般程序员轻松地编写并行代码吗?还是像HPF(高性能FORTRAN)一樣成为程序员的噩梦,仅仅是无限地浪费时间?
所有高可扩展性的代码都使用消息传递?还是用于消息传递类似的共享内存系统方法呢?我们能够做到让一般程序员轻松使用消息传递吗?还是会因为太难而在HPC之外从来不用呢?Visual Basic这些语言带来了PC应用的革命。那么我们能够为并行编程设计一个新的时代吗?我们应该如何教会程序员“并行地思考”?
有位我很尊敬的人告诉我,我不该为此担心。当多核芯片成为主流之后,将会有无数的软件工程师充满激情地去从事并行编程,总会有人为我们解决这些问题的。
但是,我的确是很担心。我们的高性能计算社区在并行编程问题上的工作已经超过25年了,但遗憾的是,这些年来我们并没有什么了不起的成果。我当然希望这些乐观主义者是对的,这些问题都能够迎刃而解,但现在似乎只有信心。我们需要直面这些尖锐的问题,并找到坚实而系统的解决方案。
我写博客的目的就是希望能找到通往这样解决方案的道路。希望大家与我一起披荆斩棘通向未来“减少串行编程”之路。
在硬件方面,我们对各种细节都非常满意。我们知道,多核将会成为主流,单个处理器中不同的核心可以同时做不同的工作,将会有可扩展的互联模型,为了尽量实现本地化需要更多的缓存。
然而,在软件方面,情况却是一团糟。
我们需要一种新的编程语言吗?还是说对当前的语言进行扩展就能够满足需求呢?数据并行编程语言可以让一般程序员轻松地编写并行代码吗?还是像HPF(高性能FORTRAN)一樣成为程序员的噩梦,仅仅是无限地浪费时间?
所有高可扩展性的代码都使用消息传递?还是用于消息传递类似的共享内存系统方法呢?我们能够做到让一般程序员轻松使用消息传递吗?还是会因为太难而在HPC之外从来不用呢?Visual Basic这些语言带来了PC应用的革命。那么我们能够为并行编程设计一个新的时代吗?我们应该如何教会程序员“并行地思考”?
有位我很尊敬的人告诉我,我不该为此担心。当多核芯片成为主流之后,将会有无数的软件工程师充满激情地去从事并行编程,总会有人为我们解决这些问题的。
但是,我的确是很担心。我们的高性能计算社区在并行编程问题上的工作已经超过25年了,但遗憾的是,这些年来我们并没有什么了不起的成果。我当然希望这些乐观主义者是对的,这些问题都能够迎刃而解,但现在似乎只有信心。我们需要直面这些尖锐的问题,并找到坚实而系统的解决方案。
我写博客的目的就是希望能找到通往这样解决方案的道路。希望大家与我一起披荆斩棘通向未来“减少串行编程”之路。