【发布时间】:2018-12-02 08:28:23
【问题描述】:
如果我们想要实现共享内存模型和并行进程线程,是否需要一些实用程序,例如 OpenMP。共享内存是 L3 缓存还是 RAM 主内存?而要实现分布式内存模型,我们需要一些实用程序,例如 MPI 和多个计算系统(计算机)?
【问题讨论】:
-
您对分布式 L1/2 缓存有疑问吗?
-
我试图了解这些内存模型如何转化为真正的硬件逻辑组件。共享内存模型上的内存是主存还是共享三级缓存?
-
不,主内存通常是主内存。事实上,并行执行与缓存无关,如果缓存是有益的,那么是优化编译器的结果,而不是并行库的结果。分布式内存模型假设不同的地址空间和所有,您可以使用 MPI(最好)或结合管道的原始进程。
-
那么什么是共享内存?它必须是 RAM,当机器被加载并运行时,操作系统会创建一个带有虚拟内存的进程,一个主线程执行,辅助线程从这个主线程执行,它们可以访问进程共享资源....
-
共享内存是指拥有一大块内存,“许多”进程可以以读、写或两者的方式访问。通过并行执行共享内存并不意味着“分布式”。也就是说,您可以认为分布式系统只是包括所有内核和进程的更大系统的一部分,那么共享内存需要“分布式”,但这仍然意味着可以被(大型)系统中的任何进程访问.此模型不涉及缓存,即使它可能会产生影响(需要保持整个共享区域的一致性,有时可能会使缓存失效......)
标签: c++ memory parallel-processing shared-memory