Простое использование
map(tofrom:arrayA)
должно помочь.
Если это не сработает, пожалуйста, сообщите нам об ошибках, которые вы получите.
У вас естьПрограммное обеспечение цели установлено правильно (nvcc - компилятор Nvidia)?Обратитесь к этому вопросу, чтобы убедиться, что он настроен.Если нет, загрузите инструментарий с здесь .
РЕДАКТИРОВАТЬ:
Скомпилированный ниже код:
typedef struct{
int **a;
int *x;
int *y;
int ny;
int nx;
} A;
A *arrayA = (A*)malloc(sizeof(A) * maxSize);
for(int i=0; i<maxSize; i++){
arrayA[i].a = (int**)(malloc(sizeof(int*)*arrayA[i].nx));
for(int j=0; j< arrayA[i].nx; j++)
arrayA[i].a[j] = (int*)(malloc(sizeof(int)*arrayA[i].ny));
arrayA[i].x = (int*)(malloc(sizeof(int)*arrayA[i].ny));
arrayA[i].y = (int*)(malloc(sizeof(int)*arrayA[i].ny));
}
#pragma omp target data map(tofrom:arrayA)
#pragma omp target teams distribute parallel for
for(int i=0;i<maxSize; i++){
methodA(arrayA[i].x,arrayA[i].a, arrayA[i].ny,arrayA[i].nx, arrayA[i].y);
}