У меня есть такая структура:
typedef struct Data_{
double **v;
.
.
.
double *press;
}Data;
В основной функции у меня есть цикл while, внутри которого он называется подпрограммой, в которой объявлены данные, и я использую следующую прагму:
static Data data;
#pragma acc enter data copyin(data[:7])
В этой программе он называется другим (RHS (&data, ...)
). Опять же, внутри последнего я вызываю другую процедуру (RHS1(data,...)
), в которой есть цикл, который я хочу ускорить:
#pragma acc parallel loop present(data[:7])
for (i = beg; i <= end; i++) {
rhs[i][MX1] += dt*data->src[i][MX1];
. += .
. += .
. += .
. += .
. += .
rhs[i][ENG] += dt*sweep->src[i][ENG];
}
Я получаю эту ошибку при компиляции с помощью -managed: FATAL ERROR: переменная в разделе данных частично присутствует на устройстве: name = data