我正在自学并行编程。我想知道分布式内存是否总是多进程而多线程总是共享内存?如果多进程既可以用于分布式内存,也可以用于共享内存?谢谢并恭祝安康!
问问题
12615 次
1 回答
5
是的,是的,而且“是的,在某种意义上”
在分布式内存系统中,不同的 CPU 单元有自己的内存系统。如果确实可能的话,来自另一个 CPU 的访问很可能会更慢或使用更有限的一致性模型。这将是更典型的消息传递多处理器。
使用多线程进行并行编程更多的是一种软件范例,而不是硬件问题,但你是对的,使用术语线程本质上指定正在使用单个共享内存,它可能包括也可能不包括实际的多个处理器。它甚至可能不包括多个内核线程,在这种情况下线程不会并行执行。
我对最后一个问题的含义并不完全清楚。当然,通过说“分布式内存”或“共享内存”,它意味着“分布在处理器上”和“由处理器共享”,所以我认为这些术语仅适用于多处理器或潜在的多处理器系统。如果我们在软件意义上谈论多个进程,我想这几乎是分布式内存系统的要求,本质上是共享内存系统的要求(它们可能被称为线程)。
我应该补充一点,分布式内存但缓存一致的系统确实存在,并且是一种称为NUMA 的共享内存多处理器设计。就在几年前,这些机器还是并行计算的疯狂边缘,但现在英特尔酷睿 i7 处理器已将 NUMA 带入主流。
于 2009-10-25T01:19:25.467 回答