Pointers 指向任意值的Cuda复制指针
假设我有这样的课Pointers 指向任意值的Cuda复制指针,pointers,cuda,memcpy,Pointers,Cuda,Memcpy,假设我有这样的课 class TheBox{ public: int value1; int value2; int **p; int size; int result; int test(){ result = 0; for (int i = 0; i < size; i++){ result += *p[i]; } return result; } }; int main(){ T
class TheBox{
public:
int value1;
int value2;
int **p;
int size;
int result;
int test(){
result = 0;
for (int i = 0; i < size; i++){
result += *p[i];
}
return result;
}
};
int main(){
TheBox b;
b.value1 = 5;
b.value2 = 7;
b.size = 10;
b.p = (int**)malloc(sizeof(int*)*b.size);
b.p[0] = &b.value1;
b.p[1] = &b.value1;
b.p[2] = &b.value2;
b.p[3] = &b.value1;
b.p[4] = &b.value1;
b.p[5] = &b.value2;
b.p[6] = &b.value2;
b.p[7] = &b.value1;
b.p[8] = &b.value1;
b.p[9] = &b.value1;
cout << b.host() << endl; //should output 56
b.value2 = 8;
cout << b.host() << endl; //should output 59
}
class对话框{
公众:
int值1;
int值2;
int**p;
整数大小;
int结果;
int测试(){
结果=0;
对于(int i=0;i
我是这样用的
class TheBox{
public:
int value1;
int value2;
int **p;
int size;
int result;
int test(){
result = 0;
for (int i = 0; i < size; i++){
result += *p[i];
}
return result;
}
};
int main(){
TheBox b;
b.value1 = 5;
b.value2 = 7;
b.size = 10;
b.p = (int**)malloc(sizeof(int*)*b.size);
b.p[0] = &b.value1;
b.p[1] = &b.value1;
b.p[2] = &b.value2;
b.p[3] = &b.value1;
b.p[4] = &b.value1;
b.p[5] = &b.value2;
b.p[6] = &b.value2;
b.p[7] = &b.value1;
b.p[8] = &b.value1;
b.p[9] = &b.value1;
cout << b.host() << endl; //should output 56
b.value2 = 8;
cout << b.host() << endl; //should output 59
}
intmain(){
盒子b;
b、 值1=5;
b、 数值2=7;
b、 尺寸=10;
b、 p=(int**)malloc(sizeof(int*)*b.size);
b、 p[0]=&b.value1;
b、 p[1]=&b.value1;
b、 p[2]=&b.value2;
b、 p[3]=&b.value1;
b、 p[4]=&b.value1;
b、 p[5]=&b.value2;
b、 p[6]=&b.value2;
b、 p[7]=&b.value1;
b、 p[8]=&b.value1;
b、 p[9]=&b.value1;
库特
是否有一种方法可以正确地对对象“b”执行cudaMemcpy
,而无需
这个信息
一句话,不。鉴于指针数组的内容包含主机地址,因此,只有在GPU内存中已经建立了类的实例之后才能正确设置,因此“正确地执行cudaMemcpy
”在本文中的含义甚至都不明显
唯一可行的方法是在内存中构造一个GPU可以直接访问的实例。您可以使用统一内存(例如,请参阅)或通过在主机内存中构建设备结构的副本并将其复制到设备(例如,请参阅)来实现这一点
是否有一种方法可以正确地对对象“b”执行cudaMemcpy
,而无需
这个信息
一句话,不。鉴于指针数组的内容包含主机地址,因此,只有在GPU内存中已经建立了类的实例之后才能正确设置,因此“正确地执行cudaMemcpy
”在本文中的含义甚至都不明显
唯一可行的方法是在内存中构造一个GPU可以直接访问的实例。您可以使用统一内存(例如,请参阅)或通过在主机内存中构建设备结构的副本并将其复制到设备(例如,请参阅)来实现这一点