Как я могу проверить, работает ли разгрузка на AMD GPU, используя OpenMP
Я пытаюсь использовать 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: я использую gcc 5.1.0 в Windows
Любая помощь приветствуется.