0

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 への同時アクセスを非難し始める前に。ここで何か間違っていることがあるかどうか知りたいです。

4

0 に答える 0