簡単に並列化可能な計算 (マンデルブローなど) を異なる粒子で並列に Orleans で計算し、粒子が完了したら結果をマージしたいと考えています。ただし、これを行う方法や、Orleans がこの種の問題に対する適切なフレームワークであるかどうかはわかりません。また、これは生産に入るプロジェクトではありません。私は Orleans と遊んでいるだけです。
これまでの私のアイデアは次のとおりです。クライアントのエントリポイントである1つのグレインタイプ(「メイングレイン」と呼びましょう)があります(グレインでもある可能性があります)。次に、このグレインは必要な処理能力の量を推定し、タスクを小さな部分に分割して、別のグレインタイプの他のグレインに分散します (これらを「サブグレイン」と呼びます)。これらのサブグレインに作業を任せて、クライアントに返される結果を待つことは大したことではありませんが、サブグレインを処理する方法がわかりません。
たとえば、10 個のサブグレインを使用したい呼び出しがあるとします。それぞれを新しい GUID で取得し、機能させます。それらは完了し、クライアントは結果を取得します。ここで、X サブグレインを使用したい呼び出しがあります。
- X 個の新しい GUID を使用して X 個の新しいサブグレインをアクティブ化し、ガベージ コレクターにクリーンアップを行わせる必要がありますか?
- 以前にアクティブ化されたサブグレインを何らかの方法で再利用する必要がありますか (ある種のプーリング)、サブグレインが既に再利用可能であること (=ビジーでないこと) をどのように知ることができますか?
- 複数のメイングレインを使用したい場合はどうなりますか。それぞれが独自のサブグレインを処理しますか?
どのようにしますか?ありがとうございました。