OpenMP タスクを使用して 2 つの行列を乗算しようとしています。これは基本的なコードです:
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];
}
}
}
プログラムを実行すると、次のようなメッセージが表示されます。
セグメンテーション違反 (コアダンプ)
今、私はいくつかのピースが欠けていることを知っていますが、それが何であるかわかりません. 何か案が?