私には、SMPと非常によく並列化する大規模な科学計算タスクがありますが、レベルが細かすぎるため、明示的なメッセージパッシングを介して簡単に並列化できません。アドレス空間と物理マシン間で並列化したいと思います。次の条件下で、複数の物理コンピューター間ですでにマルチスレッド化されたコードを並列化するスケジューラーを作成することは可能ですか?
- コードはすでにマルチスレッド化されており、SMP構成でかなり適切に拡張できます。
- すべてのスレッドが同じアドレス空間または同じ物理マシンで実行されているわけではないという事実は、一部のユースケースでパフォーマンスが大幅に低下したとしても、プログラムに対して透過的である必要があります。
- 関連するすべての物理マシンが、バイナリ互換のオペレーティングシステムとCPUアーキテクチャを実行していると想定する場合があります。
- ロックや不可分操作のようなものは遅いかもしれませんが(処理するためのネットワーク遅延があります)、「正しく機能する」必要があります。
編集:
- レイテンシーではなく、スループットのみを気にします。
- 私はDプログラミング言語を使用していますが、定型的な解決策はないとほぼ確信しています。私は、特定の缶詰のソリューションよりも、これが原則として実行可能かどうかに関心があります。