問題は、n個のプロセスで約20GBのサイズのファイルを同時に読み取ることです。ファイルには各行に1つの文字列が含まれ、文字列の長さは同じでも異なっていてもかまいません。文字列の長さは、たかだか10バイトまでです。cでファイルを並列読み書きする
私は16のノードを持つクラスターを持っています。各ノードはユニプロセッサーで、6GBのRAMを搭載しています。MPIを使用して並列コードを作成しています。
すべてのリソースを利用できるように、この大きなファイルを効率的に分割する方法を教えてください。
注:パーティションの制約は、ファイルを固定数の行のチャンクとして読み込むことです。 ファイルに1600行(たとえば、1600文字列)が含まれていると仮定します。最初のプロセスは1行目から100行目まで、2行目は101行目から200行目までのようにする必要があります。
複数のプロセスでファイルを読み取ることはできません1つの文字列だけを指すファイルハンドラが1つしかないため、時間がかかります。どのように他のプロセスが異なるチャンクから並行して読み込むことができますか?
ありがとうございました!実り多い答えとして、私は自分の制約を加えました。 – Gopal
あなたの均等分配ロジックはとても良いです。しかし、一度に複数のプロセスでファイルを読み取ることはできません。ファイルハンドラが1つのみの文字列を指していると思います。他のプロセスはどのようにして異なるチャンクから並行して読み込むことができますか? – Gopal