【发布时间】:2011-02-23 07:04:17
【问题描述】:
我有一个大型科学计算任务,它可以很好地与 SMP 并行化,但粒度太细,无法通过显式消息传递轻松并行化。我想跨地址空间和物理机器并行化它。在以下条件下,是否可以创建一个调度程序来在多台物理计算机上并行处理已经多线程的代码:
- 代码已经是多线程的,可以在 SMP 配置上很好地扩展。
- 并非所有线程都在同一地址空间或同一物理机器上运行这一事实必须对程序透明,即使这在某些用例中会导致显着的性能损失。
- 您可以假设所涉及的所有物理机都在运行二进制兼容的操作系统和 CPU 架构。
- 锁和原子操作之类的东西可能很慢(需要处理网络延迟等等),但必须“正常工作”。
编辑:
- 我只关心吞吐量,而不是延迟。
- 我正在使用 D 编程语言,而且我几乎可以肯定没有固定解决方案。我更感兴趣的是这在原则上是否可行,而不是特定的罐装解决方案。
【问题讨论】:
-
请详细说明:操作系统、环境、编程语言等。可以容忍多少延迟?
-
问题标题对我来说是“分布式共享内存”,而第 2 点说没有共享地址空间,即“分布式内存”。你需要共享内存吗?如果是,第 2 点是否要求线程了解环境?
标签: performance multithreading message-passing parallel-processing