for(k = 0; k < m; k++)
{
#pragma omp parallel for private(i) reduction(+:mysum) schedule(static)
for (i = 0; i < m; i++)
{
mysum += a[i][k] * a[i][k];
}
}
我想创建一个与此代码等效的代码,但使用OpenMP任务。以下是我通过以下方式尝试的内容
this
第条:
for(k = 0; k < m; k++)
{
#pragma omp parallel reduction(+:mysum)
{
#pragma omp single
{
for (i = 0; i < m; i++)
{
#pragma omp task private(i) shared(k)
{
partialSum += a[i][k] * a[i][k];
}
}
}
#pragma omp taskwait
mysum += partialSum;
}
}
变量
partialSum
threadprivate
它也是一个全局变量:
int partialSum = 0;
#pragma omp threadprivate(partialSum)