作为来自企业 Web 开发领域的HPC领域的人,我总是很想知道“现实世界”中的开发人员如何利用并行计算。现在所有芯片都在走向多核,这一点更加重要,当一个芯片上有数千个核心而不是几个核心时,它会更加重要。
我的问题是:
- 这对您的软件路线图有何影响?
- 我对有关多核如何影响不同软件领域的真实故事特别感兴趣,因此请在您的答案中指定您所做的开发类型(例如服务器端、客户端应用程序、科学计算等)。
- 您如何处理现有代码以利用多核机器,您面临哪些挑战?你在使用OpenMP、Erlang、Haskell、CUDA、TBB、UPC还是别的什么?
- 随着并发水平的不断提高,您打算做什么,您将如何处理成百上千个内核?
- 如果您的领域不容易从并行计算中受益,那么解释为什么也很有趣。
最后,我把这个问题描述为一个多核问题,但请随意谈论其他类型的并行计算。如果您正在移植应用程序的一部分以使用MapReduce,或者如果大型集群上的MPI是您的范例,那么也一定要提到这一点。
更新:如果您确实回答了 #5,请提及您是否认为如果内核数(100、1000 等)超过可用内存带宽所能提供的数量(看看每个内核的带宽如何变得越来越小),情况是否会发生变化)。您仍然可以将剩余的内核用于您的应用程序吗?