nvidia GPU で OpenMP オフロードを試しており、C++ で配列計算を実行しようとしています。
OpenMP で計算をオフロードするのは初めてなので、今のところ私の出力は望ましくありません。誰かが私を正しい方向に向けることができれば幸いです。
コードスニペット:
#include <omp.h>
#include <iostream>
using namespace std;
int main(){
int totalSum, ompSum;
const int N = 1000;
int array[N];
for (int i=0; i<N; i++){
array[i]=i;
}
#pragma omp target
{
#pragma omp parallal private(ompSum) shared(totalSum)
{
ompSum=0;
#pragma omp parallel for
for (int i=0; i<N; i++){
ompSum += array[i];
}
#pragma omp critical
totalSum += ompSum;
}
printf ( "Caculated sum should be %d but is %d\n", N*(N-1)/2, totalSum );
}
return 0;
}
今のところ、合計は499500になるはずですが、私のマシンは負の非常に大きな数値を出力しています。