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