,之前也看了论坛有人发的帖子,但是和我的情况不太一样,琢磨了好久,还是没搞明白,索性再发一次。
class implicant
{
public:
string info;
string includes;
int weight;
bool mark;
implicant()
{
weight = 0;
mark = true;
}
implicant &operator=(const implicant &s)
{
info = s.info;
includes = s.includes;
weight = s.weight;
mark = s.mark; //标志也要赋值,否则原来memcpy拷过去的有可能mark=false的
return *this;
}
};
在这里,我可以做如下处理吗?maxSize*maxSize/2表示分配的数组的大小,表示常数
unsigned int mem_size = sizeof(implicant)*maxSize*maxSize/2
implicant* h_imp = (implicant*)malloc(mem_size);
//在device端分配显存,d_表示device端
implicant* d_imp;
CUDA_SAFE_CALL(cudaMalloc((void**)&d_imp,mem_size));
//将内存中的输入数据读入显存,这样就完成了主机对设备的数据写入
CUDA_SAFE_CALL(cudaMemcpy(d_imp,h_imp,mem_size,cudaMemcpyHostToDevice));
还是分别将h_imp.info h_imp.includes h_imp.weight h_imp.mark 在device端分配显存,再从主机传到设备显存
|