とてもシンプルです。マスター/コントローラー コンピューターと、複数のワーカー コンピューターまたはスレーブが必要です。マスターは問題をチャンクに分割し、チャンクをスレーブに割り当てます。スレーブは作業のチャンクを実行し、完了したらマスターに報告します。
最も複雑な部分は、マスター/スレーブが互いに通信できるようにすることです。比較的単純な解決策は、ソケットを使用して、簡単な通信プロトコルを発明することです。
マスター アルゴリズムは次のようになります。
break problem into chunks
while problem not solved {
wait for socket comms from slave
if slave is asking for a chunk of work
allocate chunk to slave
else if slave is reporting a chunk didn't contain the solution
mark chunk as completed
allocate chunk to slave
else if slave is reporting a chunk did contain the solution
problem is solved
}
スレーブ アルゴリズムは次のようになります。
while problem not solved {
ask master for a chunk of work
process this chunk
if chunk contains solution
problem is solved
report results back to master
}
スレーブがほとんどの時間を問題の解決に費やし、マスターとの通信を行わないように、チャンク サイズを十分に大きくする必要があります。スレーブがマスターと通信する頻度によって、1 つのマスターが処理できるスレーブの数が決まる可能性があります。最初の推測では、スレーブが処理に 2 ~ 3 分かかるようにチャンクのサイズを設定すると思います。