如果我们要实现共享内存模型和并行进程线程,是否正确,我们将需要诸如OpenMP之类的实用程序。共享内存是L3高速缓存还是RAM主内存?要实现分布式内存模型,我们需要一些实用程序,例如MPI和多个计算系统(计算机)吗?
答案 0 :(得分:0)
是的,直到您开始使用NUMA为止。
所以让我们从头开始。如果您拥有共享相同内存空间的内核,则可以使用线程和库/工具,例如OpenMP或TBB(如果您使用的是C ++,请使用TBB,而不是OpenMP)。您也可以在此处使用MPI。
如果具有互连,则唯一的选择是使用MPI之类的库。
现在,在非均匀内存体系结构之间存在这种情况。例如,如果您有两个套接字,这意味着两个内存空间分别连接到一个套接字,并且仍然可以从另一个套接字访问,并且如果您的一个程序在多套接字节点上运行了多个线程,则会发生这种情况分配在一个插槽上,而另一个插槽的内核可以访问该插槽,这很慢。
在这种情况下人们可以做的是:
我并不是说“经常”,因为许多科学代码仍仅是MPI,并且可能难以引入线程,由于内存共享,这是一种完全不同的方法。