0
我正在使用PGI 15.7编译器。我想知道如何通过OpenACC将定义的结构从CPU复制到GPU。如何通过OpenACC复制用户定义的类型
typedef struct str_
{
int n;
int m;
int* col; // size [n*m]
double* val; // size [n*m]
}str;
非常感谢。
我正在使用PGI 15.7编译器。我想知道如何通过OpenACC将定义的结构从CPU复制到GPU。如何通过OpenACC复制用户定义的类型
typedef struct str_
{
int n;
int m;
int* col; // size [n*m]
double* val; // size [n*m]
}str;
非常感谢。
“深度复制”是我们试图在3.0规范中解决的一项功能。今天以下应该为你工作。
#pragma acc enter data copyin(str)
#pragma acc enter data copyin(str.col[:n*m],str.val[:n*m])
...
#pragma acc exit data copyout(str.col[:n*m],str.val[:n*m])
#pragma acc exit data delete(str)
这是干什么复制结构本身到设备,然后复制其中包含的数组。然后我在返回的路上做相反的事情。如果您不需要移动数据,则可以使用create/delete替换copyin/copyout。
是否只有其中之一或它们的数组? – jefflarkin
这是一个数组的结构;只有一个具有这两个分配数组的结构。 –