我正在尝试通过充分利用所有可用内核来提高命令行工具的性能。我选择openmp因为它不会改变语义,对于像我这样的初学者来说非常简单。我描述了程序找出哪些循环运行了很多次(300+)并寻求并行化这些循环以试图使软件更快。
#pragma omp parallel for reduction(+:sum)
for (int j = minx; j <= maxx; ++j) {
sum += row_in[j] * kernel[j - x + offset];
}
上面的代码使用OpenMP提供了正确的输出,但比顺序版本慢了几个数量级。
P.S 我愿意建议更快地制作具有较小交互(3-7)的循环,因为它们可以多次使用