【发布时间】:2011-10-19 14:02:57
【问题描述】:
我们用 C++ 开发了一个算法库,它允许用户实现自己的数据类型,以便在各个算法之间共享数据(也由用户实现)。 这很好用,但我们希望在库级别提供并行化。各个算法应该在分布式内存机器的不同节点上并行执行。
我们决定使用 MPI 进行并行化,因为它可以用于分布式和共享内存机器而无需更改代码。 不幸的是,我们现在正在解决如何在节点之间分配用户实现的数据类型的问题。我们有以下问题:
- 我们不知道数据可能有多大,它甚至可能会随着运行而变化。
- 我们不知道数据结构中的数据是什么。
- 数据量可以很大,最高可达 1GB(MPI 应该没问题)
- 用户在实现并行执行的数据类型或算法时应该看不到任何差异(对于算法实际上没有问题)
是否有可能使用 MPI 在节点之间共享这些数据,或者是否有可用的方法,可能更适合此类问题。 我们希望有一个至少可以在共享内存机器上运行的解决方案,但是我们希望有一个无需更改代码即可在共享和分布式内存机器上运行的解决方案。
【问题讨论】:
-
你遇到过 boost.mpi 吗?除非我误解了,否则应该按照你的要求做。
-
Boost.mpi 是 MPI 的 C++ 包装器,我仍然有一个问题,只有:“映射到 MPI 数据类型的类型”可以传输,这可能不是这种情况,因为我没有定义数据类型。
-
你问 MPI 是否可以发送任意数据结构,只要给它们一个指针(或类似的结构)?
标签: c++ parallel-processing mpi hpc