我正在尝试使用 OpenMP 任务将两个矩阵相乘。这是一个基本代码:
long i, j, k;
for (i = 0; i < N; i ++)
for (j = 0; j < N; j ++)
for (k = 0; k < N; k ++)
c[i * N + j] += a[i * N + k] * b[k * N + j];
所以,我想在列级别使用任务,然后我修改了这样的代码:
long i, j, k;
#pragma omp parallel
{
#pragma omp single
{
for (i = 0; i < N; i ++)
#pragma omp task private(i, j, k)
{
for (j = 0; j < N; j ++)
for (k = 0; k < N; k ++)
c[i * N + j] += a[i * N + k] * b[k * N + j];
}
}
}
当我运行一个程序时,我收到这样的消息:
分段错误(核心转储)
现在,我知道我错过了一些东西,但不知道是什么。任何想法?