我正在使用 CAPS OpenACC 编译器。我尝试在 OpenACC pragma 行中的 struct 数据类型中使用动态数组。我的代码是这样的:
struct Structure{
int val[n];
int length;
int *valdyn;
};
#pragma acc parallel copyin(sa,sb) copyout(c[0:n])
{
#pragma acc loop
for (int i = 0; i < n; i++)
c[i] = sa.valdyn[i] + sb.valdyn[i];
}
它编译成功。但是当我尝试运行时,我得到了这些错误
terminate called after throwing an instance of 'hmpperr::DeviceError'
what(): cuCtxSynchronize() failed: Launch failed (700)
所以我的问题是,有什么方法可以将 struct 数据类型与 OpenACC 一起使用?此外,我的情况也适用于 struct in struct 这样的:
struct Structure{
int val[20];
int length;
struct Other_Struct *Residue ;
int *valdyn;
};