Emr*_*koz 4 c++ parallel-processing tbb mpi openmp
我正在使用c ++为我的计算动力学研究开发一些代码.我的代码解决了稀疏和密集的矩阵,生成网格,并在最微不足道的意义上做类似的操作.我需要并行化我的代码以减少计算时间并为此目的使用OpenMP.
但仔细观察一下商用代码,比如ANSYS CFX,我发现该软件中使用的并行化方案是MPICH2,它是MPI的一种实现方式.
所以你有很多并行化工具/ API:
我使用了其中一些工具,并使用每个工具在本地计算机上获得100%的CPU使用率.
在选择合适的并行化工具时,我不知道应该注意什么标准.什么样的应用需要哪种工具?上述任何一项可用于研究目的吗?其中哪些主要用于商业软件?
至于这种类型的许多问题,没有一个真正明确的答案.你不能真正说出什么更好,因为答案总是"它取决于".关于你正在做什么,你的代码是如何编写的,你的可移植性要求是什么等等.
在你的清单后面:
用什么?我没有答案,只是尝试选择你觉得更舒服的东西(看看Boost Threads).请注意,不知何故,你可以混合它们,例如OpenMP + MPI,MPI + TBB甚至MPI + PLL).我倾向于PPL但是如果你正在开发一个真实世界的应用程序,你可能需要一个长时间的测试来决定什么是更好的.实际上我喜欢Concurrency Runtime(PPL的基础),因为它是"水平的",它为并行计算和许多"垂直"包(Agents,PPL,TPL)提供了一个基本框架(带有结构和算法).
也就是说,当您将计算并行时,您可能需要提高某些CPU密集型例程的性能.您可以考虑使用GPU来完成这项任务,我认为它将为短期大规模并行计算提供最佳功能(当然,即使CUDA性能可能更高,我也更喜欢OpenCL而非专有CUDA).实际上,如果您对此主题感兴趣,您甚至可以查看OpenHMPP.
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |