非常に大きな配列の要素を合計するプログラムがあります。この合計を並列化したい。
#define N = some_very_large_no; // say 1e12
float x[N]; // read from a file
float sum=0.0;
main()
{
for (i=0, i<N, i++)
sum=sum+x[i];
}
スレッドを使用してこの合計を並列化するにはどうすればよいですか (c/c++/Java の任意のコード例で問題ありません)。マシンに 8 つのコアがある場合、最適なパフォーマンスを得るにはいくつのスレッドを使用する必要がありますか?
編集: N は非常に大きく (実際には 1e6 より大きい)、データを読み取ったファイルのサイズによって異なります。ファイルは GB の順序になっています。
編集:Nが大きな値に変更されます(1e12から1e16)