【发布时间】:2020-03-16 19:54:14
【问题描述】:
我最近开始学习 openMP,我正在尝试并行化我的卷积代码。一旦我将#pragma 添加到初始化图像数组并且没有数据依赖性的for循环中,代码就会中断并引发分段错误(核心转储)。我不知道出了什么问题。请帮忙!
// map values from original image to padded image
#pragma omp parallel for schedule(static)
for (size_t j = 0; j < n * n; j++) {
size_t row = (j / n) + padding;
size_t col = (j % n) + padding;
size_t pos = (n + (padding * 2)) * row + col;
padded_image[pos] = image[j];
}
【问题讨论】:
-
output在哪里分配/声明?添加(或删除)代码,突然之间没有明显原因的事情发生了,具有内存损坏的所有特征。 -
您应该为函数提供输入。似乎您的段错误发生是因为您正在访问不属于您的内存。
-
输出分配在另一个文件的 main() 中。代码在顺序版本中运行,但在并行版本中中断