OpenMP (および C) を使用してアプリケーションを並列化しようとしていますが、I/O 部分から始めたいと考えていました。最初は読み取りと計算部分が順次処理され、それぞれ約 3 秒かかります。
int *mask, width, height
Picture *pic;
pic = readFile("some big file"); // 3 secs
mask = computeMask(width, height); // 3 secs
OpenMP の場合:
#pragma parallel default(none) shared(pic, mask, width, height)
{
#pragma sections
{
#pragma section
{
pic = readFile("some big file");
}
#pragma section
{
mask = computeMask(width, height);
}
}
}
しかし、全体の時間は約 10 秒になりました (そして、実際には I/O タスクに費やされています)。
そのボトルネックを作成するために RAM への同時アクセスを非難し始める前に。ここで何か間違っていることがあるかどうか知りたいです。