c++ - 共享内存系统性能上的消息传递接口(interface)

标签 c++ multithreading mpi shared-memory performance-testing

据我所知,并行处理消息传递接口(interface)和多线程有两种方式。多线程不能用于没有消息传递接口(interface)的分布式内存系统;但消息传递接口(interface)可用于任何系统“共享内存”和“分布式内存”。我的问题是关于与 MPI 并行化并在共享内存系统上运行的代码的性能。这段代码的性能是否与多线程并行的代码在同一范围内?

更新:

我的工作是因为进程之间需要反复通信,通信数组可以是200*200的矩阵

最佳答案

答案是:视情况而定。 MPI 进程主要是独立的操作系统进程,当通信进程在同一共享内存节点上运行时,它们之间的通信通过某种共享内存 IPC 技术发生。作为独立的操作系统进程,MPI 进程通常不共享数据,有时数据必须在每个进程中复制,这导致内存使用率达不到最佳水平。另一方面,线程可以共享大量数据并且可以从缓存重用中获益,尤其是在具有大型共享末级缓存(例如,当前一代 x86 CPU 上的 L3 缓存)的多核 CPU 上。与用于线程间数据交换的更轻量级方法(通常只是同步,因为工作数据已经共享)相结合时,缓存重用可以带来比单独进程实现的性能更好的性能。

但再一次 - 这取决于。

关于c++ - 共享内存系统性能上的消息传递接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766263/

相关文章:

c++ - 有没有办法使用 MPI 在并行进程上共享内存?

c++ - 在QT中将16位QImage转换为8位无符号字符

java - 我如何启动一个线程但让它存活一段时间?

c++ - 使用 impi 库删除未分配内存时的错误

algorithm - 分析和理解这个算法

python - 在多线程中使用锁

c++ - 如何对齐结构数组,每个都需要对齐(SSE)

c++ - filesystem::canonical 能否用于防止传递给 fstream 的文件路径的文件路径注入(inject)

c++ - AIR native 扩展 "The extension context does not have a method with the name"

c - 并行化 : bad results with threads, 进程的良好结果。为什么?