MPI和OpenMP之间有什么区别?

MPI和OpenMP之间有什么区别?,mpi,openmp,difference,Mpi,Openmp,Difference,我想知道(用几句话)OpenMP和MPI之间的主要区别。OpenMP是一种在共享内存设备上编程的方法。这意味着并行性发生在每个并行线程都可以访问所有数据的地方 您可以这样认为:在执行特定的for循环期间,通过在不同线程之间拆分循环,可以实现并行性 MPI是在分布式内存设备上编程的一种方法。这意味着,当每个并行进程在自己的内存空间中独立于其他进程工作时,就会发生并行性 您可以这样想:您编写的每一段代码都由每个进程独立执行。之所以会出现并行性,是因为您完全根据每个进程的进程ID准确地告诉它们应该处理

我想知道(用几句话)OpenMP和MPI之间的主要区别。OpenMP是一种在共享内存设备上编程的方法。这意味着并行性发生在每个并行线程都可以访问所有数据的地方

您可以这样认为:在执行特定的
for
循环期间,通过在不同线程之间拆分循环,可以实现并行性

MPI是在分布式内存设备上编程的一种方法。这意味着,当每个并行进程在自己的内存空间中独立于其他进程工作时,就会发生并行性

您可以这样想:您编写的每一段代码都由每个进程独立执行。之所以会出现并行性,是因为您完全根据每个进程的进程ID准确地告诉它们应该处理全局问题的哪一部分


当然,编写OpenMP和MPI程序的方式也非常不同。

MPI代表消息传递接口。它是一组关于消息传递(如发送、接收、广播等)的API声明,以及实现中应该预期的行为

“消息传递”的概念相当抽象。这可能意味着在本地进程之间或分布在网络主机上的进程之间传递消息,等等。现代实现非常努力做到通用,并抽象出多种底层机制(共享内存访问、网络IO等)


OpenMP是一种API,其目的是(大概)使编写共享内存多处理程序变得更容易。没有传递信息的概念。相反,使用一组标准函数和编译器指令,您可以编写并行执行本地线程的程序,并控制这些线程的行为(它们应该访问什么资源、如何同步等等)。OpenMP需要编译器的支持,因此您也可以将其视为受支持语言的扩展


而且应用程序可以同时使用MPI和OpenMP的情况并不少见。

但现在MPI的目标是共享内存设备well@NoseKnowsAll,当代码的一部分需要从代码的“早期”部分更新变量值时,时间是什么?