我正在学习并行编程。我想知道分布式内存是否总是多进程,多线程总是共享内存?如果多进程可以用于分布式内存和共享内存? 谢谢和问候!

有帮助吗?

解决方案

是,是,和“是的,在某种意义上”

在分布式内存系统中,不同的CPU单元有自己的内存系统。如果确实可能的话,来自另一个CPU的访问很可能会更慢或具有更有限的一致性模型。这将是消息传递多处理器的典型特征。

使用多个线程进行并行编程更多的是软件范例而不是硬件问题,但是你是对的,使用术语线程本质上指定单个共享内存正在使用中,它可能包括也可能不包括实际的多处理器。它甚至可能不包括多个内核线程,在这种情况下,线程不会并行执行。

我对最后一个问题的含义并不完全清楚。当然,通过说“分布式存储器”,或“共享存储器”或“共享存储器”。它暗示“分布在处理器上”。并且“由处理器共享”,因此我认为这些术语仅合理地应用于多处理器或潜在的多处理器系统。如果我们在讨论软件意义上的多个进程,我想这对分布式内存系统来说几乎是一个要求,而且对于共享内存系统来说基本上是一个要求(它们可能是称为线程)。 p>

我应该补充说,分布式内存但缓存一致的系统确实存在,并且是一种称为 NUMA。 仅在几年前这些机器是并行计算的疯狂边缘,但现在英特尔酷睿i7处理器已经使NUMA成为主流。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top