如何使用OpenMP检查卸载到AMD gpu是否正常工作

时间:2016-05-25 19:23:01

标签: c++ gcc openmp gpgpu offloading

我正在尝试使用OpenMP卸载到AMD GPU,我已经在OpenMP 4.5规范中读到, 目标设备 表示代码和数据可能在其上的设备卸载,但我不知道卸载是否成功,或者是否确实已卸载到我的AMD GPU。

为了测试卸载是否确实有效,我尝试使用和不使用编译指示来计算时间,并使用挂起时间检查差异,但在两种情况下返回的时间都是0:

这是用于测试的简单代码,我将尝试在我的项目中使用它:

int n = 10240; float a = 2.0f; float b = 3.0f;
float *x = (float*) malloc(n * sizeof(float));
float *y = (float*) malloc(n * sizeof(float));
double start = omp_get_wtime();
#pragma omp target data map(to:x)
{
#pragma omp target map(tofrom:y)
#pragma omp teams
#pragma omp distribute parallel for
for (int i = 0; i < n; ++i){
    y[i] = a*x[i] + y[i];
}
#pragma omp target map(tofrom:y)
for (int i = 0; i < n; ++i){
    y[i] = b*x[i] + y[i];
}

}
std::cout << "Time: " << (omp_get_wtime() - start) * 1000.0 << " ms" <<std::endl;
free(x); free(y); return 0;
}

NB:我在windows中使用gcc 5.1.0

非常感谢任何帮助。

0 个答案:

没有答案