我想知道OpenMP和MPI之间的主要区别(简单介绍几句)。
for
循环时发生并行性。
MPI 是一种用于分布式内存设备编程的方式。这意味着并行性发生在每个并行进程单独在自己的内存空间中与其他进程隔离工作的位置。MPI代表消息传递接口。它是一组关于消息传递(例如发送、接收、广播等)及其实现应该具有的行为的API声明。
“消息传递”的概念相当抽象。它可能是在本地进程之间传递消息,也可能是在分布在网络主机上的进程之间传递消息等。现代实现尝试非常努力地成为通用的并且抽象化多种底层机制(共享内存访问、网络IO等)。
OpenMP是一个API,它专注于使编写共享内存多处理程序更容易(可能)。没有传递消息的概念。相反,使用一组标准函数和编译器指令,您编写可并行执行本地线程的程序,并控制这些线程的行为(它们应该访问哪些资源、如何进行同步等)。 OpenMP需要编译器的支持,因此您还可以将其视为受支持语言的扩展。
一个应用程序同时使用MPI和OpenMP也很常见。