我在自学并行编程。我想知道是不是分布式内存总是多进程,而多线程总是共享内存?如果多进程既可以用于分布式内存,也可以用于共享内存?感谢和问候!
发布于 2009-10-25 09:19:25
是的,是的,还有“是的,在某种意义上”
在分布式存储系统中,不同的CPU单元具有自己的存储系统。来自另一个CPU的访问很可能会更慢,或者使用更有限的一致性模型,如果确实可以的话。这将是更典型的消息传递多处理器。
使用多线程进行并行编程更多的是一种软件范例,而不是硬件问题,但您是正确的,使用术语线程本质上指定了正在使用的单个共享内存,它可能包括也可能不包括实际的多个处理器。它甚至可能不包括多个内核线程,在这种情况下,线程将不会并行执行。
我不完全清楚最后一个问题的意思。当然,所谓的“分布式内存”或“共享内存”意味着“分布在处理器上”和“由处理器共享”,所以我认为这些术语只合理地应用于多处理器或潜在的多处理器系统。如果我们在讨论软件意义上的多进程,我猜这是对分布式内存系统的要求,也是对共享内存系统的要求(它们可能被称为线程)。
我应该补充的是,分布式内存但缓存一致的系统确实存在,并且是一种称为的共享内存多处理器设计。就在几年前,这些机器还是并行计算的疯狂边缘,但现在英特尔酷睿i7处理器已经将NUMA带入了主流。
https://stackoverflow.com/questions/1619648
复制相似问题