我正在尝试使用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,但我的计算机输出的是非常大而且也是负数的数字。