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