首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享内存模型和分布式内存模型

共享内存模型和分布式内存模型
EN

Stack Overflow用户
提问于 2018-12-02 08:28:23
回答 1查看 1K关注 0票数 0

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

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

如果我们想要实现共享内存模型和并行进程线程,那么我们需要一些实用工具(比如OpenMP ),这是正确的吗?共享内存是L3缓存还是内存主存?为了实现分布式内存模型,我们需要一些实用工具,如MPI和多个计算系统(计算机)?

EN

回答 1

Stack Overflow用户

发布于 2018-12-02 10:35:02

是的,就是这样,直到你开始研究NUMA。

所以让我们从头开始。如果您的内核共享相同的内存空间,那么您可以使用线程和库/工具,如OpenMP或TBB (如果您使用的是TBB,则使用TBB而不是OpenMP)。您也可以在这里使用MPI。

如果您有互连,那么唯一的选择是使用像MPI这样的库。

现在,中间的情况是,不统一的内存体系结构。例如,如果您有两个套接字,即两个内存空间,每个套接字连接到一个套接字,但仍然可以从另一个套接字访问,如果有一个程序在多套接字节点上运行多个线程,则可以在一个套接字上分配内存,而另一个套接字上的核心可以访问该套接字,这很慢。

因此,在这种情况下,人们能做的是:

  • 每个套接字一个进程(而不是每个节点,因为NUMA)
  • 将线程固定在核心上,内存固定在套接字上
  • 在插座上,使用TBB
  • 在一个插座外,使用MPI。

我并不是说“经常”,因为很多科学代码仍然只是MPI,并且可能很难引入线程,这是一种完全不同的方法,因为内存共享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53578654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档