我们用 C++ 开发了一个算法库,它允许用户实现自己的数据类型,以便在各个算法之间共享数据(也由用户实现)。这很好用,但我们希望在库级别提供并行化。各个算法应该在分布式内存机器的不同节点上并行执行。
我们决定使用 MPI 进行并行化,因为它可以用于分布式和共享内存机器而无需更改代码。不幸的是,我们现在正在解决如何在节点之间分配用户实现的数据类型的问题。我们有以下问题:
- 我们不知道数据可能有多大,它甚至可能会随着运行而变化。
- 我们不知道数据结构中的数据是什么。
- 数据量可以很大到1GB(这个用MPI应该没问题)
- 用户在实现并行执行的数据类型或算法时不应该看到任何差异(对于算法实际上没有问题)
是否有可能使用 MPI 在节点之间共享这些数据,或者是否有可用的方法,这可能更适合此类问题。我们希望有一个至少可以在共享内存机器上工作的解决方案,但是我们希望有一个在共享和分布式内存机器上无需更改代码即可工作的解决方案。