我有一个大型科学计算任务,可以很好地与 SMP 并行化,但粒度太细,无法通过显式消息传递轻松并行化。我想跨地址空间和物理机器并行化它。在以下条件下,创建一个可以在多台物理计算机上并行处理已经多线程代码的调度程序是否可行:
- 该代码已经是多线程的,并且可以在 SMP 配置上很好地扩展。
- 并非所有线程都在同一地址空间或同一物理机器上运行这一事实必须对程序透明,即使这在某些用例中会导致显着的性能损失。
- 您可以假设所涉及的所有物理机器都在运行二进制兼容的操作系统和 CPU 架构。
- 诸如锁和原子操作之类的东西可能很慢(需要处理网络延迟等等),但必须“正常工作”。
编辑:
- 我只关心吞吐量,而不关心延迟。
- 我正在使用 D 编程语言,我几乎可以肯定没有固定的解决方案。我对这在原则上是否可行比在特定的罐装解决方案中更感兴趣。