全部展开
MPI(MPI是标准的,并且有多种实现方式,例如MPICH。)它是并行计算工具的多主机网络协作,当然也可以用于多核/多CPU并行计算。仅主机。但是,效率低。
因为可以在多个主机之间调整并行计算,所以它可以在并行规模上高度扩展,并且可以在从PC到世界TOP10的超级计算机上使用。
缺点是并行计算是通过进程之间的通信来协调的,这降低了并行效率,增加了内存开销,并且不涉及很多直观且繁琐的编程。
OpenMP是设计用于在单个主机上进行多核/多CPU并行计算的工具。换句话说,OpenMP适用于在单台计算机的共享内存结构上进行并行计算。
将并行计算与线程之间的共享内存进行协调,因此多核/多CPU架构,低内存开销,简单直观的编程语句非常高效,因此编程容易实现编译器很简单(当前最新版本的C,C ++和Fortran编译器基本上都内置了OpenMP支持)。
但是,OpenMP的最大缺点是它只能在单个主机上运行,??而不能用于多个主机之间的并行计算!
如果将OpenMP用于多主机网络(例如超级计算机),则需要其他工具,例如MPI + OpenMP混合编程。
或在共享内存环境中虚拟化多个主机(英特尔拥有这样的平台),效率不如混合编程。唯一的优点是程序员不需要学习MPI编程。