Как я могу проверить, работает ли разгрузка на 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

Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам