C++ でアルゴリズム ライブラリを開発しました。これにより、ユーザーは、個々のアルゴリズム間でデータを共有するための独自のデータ型を実装できます (これもユーザーによって実装されます)。これは問題なく動作しますが、ライブラリ レベルで並列化を提供したいと考えています。個々のアルゴリズムは、分散メモリ マシンの異なるノードで並行して実行する必要があります。
コードを変更せずに分散および共有メモリ マシンに使用できるため、MPI を並列化に使用することにしました。残念ながら、ユーザーが実装したデータ型をノード間でどのように配布するかという問題に取り組んでいます。次の問題があります。
- データがどれほど大きくなるかはわかりません。実行ごとに変化する可能性さえあります。
- データ構造の中にどんなデータが入っているかわかりません。
- データ量は最大 1GB まで非常に大きくなる可能性があります (これは MPI では問題になりません)。
- ユーザーは、並列実行用のデータ型またはアルゴリズムの実装に違いを感じないはずです (アルゴリズムに関しては、実際には問題はありません)。
ノード間でこれらのデータを共有するためにMPIを使用する可能性はありますか、またはこの種の問題により適したアプローチが利用可能ですか? 少なくとも共有メモリ マシンで動作するソリューションが必要ですが、共有および分散メモリ マシンでコードを変更せずに動作するソリューションが必要です。