假设您的cpu具有下面逻辑门中的当前硬件体系结构:

假设我们有一个共享内存模型和一个分布式模型:


如果我们想要实现共享内存模型和并行进程线程,那么我们需要一些实用工具(比如OpenMP ),这是正确的吗?共享内存是L3缓存还是内存主存?为了实现分布式内存模型,我们需要一些实用工具,如MPI和多个计算系统(计算机)?
发布于 2018-12-02 10:35:02
是的,就是这样,直到你开始研究NUMA。
所以让我们从头开始。如果您的内核共享相同的内存空间,那么您可以使用线程和库/工具,如OpenMP或TBB (如果您使用的是TBB,则使用TBB而不是OpenMP)。您也可以在这里使用MPI。
如果您有互连,那么唯一的选择是使用像MPI这样的库。
现在,中间的情况是,不统一的内存体系结构。例如,如果您有两个套接字,即两个内存空间,每个套接字连接到一个套接字,但仍然可以从另一个套接字访问,如果有一个程序在多套接字节点上运行多个线程,则可以在一个套接字上分配内存,而另一个套接字上的核心可以访问该套接字,这很慢。
因此,在这种情况下,人们能做的是:
我并不是说“经常”,因为很多科学代码仍然只是MPI,并且可能很难引入线程,这是一种完全不同的方法,因为内存共享。
https://stackoverflow.com/questions/53578654
复制相似问题