【发布时间】:2017-03-06 15:04:33
【问题描述】:
我遇到了一个编译错误,将布尔向量复制到 cuda 内存将失败
bool *gpu;
cudaMalloc(reinterpret_cast<void **>(&gpu), 100);
std::vector<bool> cpu(100);
for(int i=0;i<100;i++){
cpu[i]=true;
}
cudaMemcpy(gpu, cpu.data(), 100*sizeof(bool), cudaMemcpyHostToDevice);
返回
error: invalid use of void expression cudaMemcpyHostToDevice);
但带有浮点向量的相同代码将编译。
float *gpu;
cudaMalloc(reinterpret_cast<void **>(&gpu), 100);
std::vector<float> cpu(100);
for(int i=0;i<100;i++){
cpu[i]=i;
}
cudaMemcpy(gpu, cpu.data(), 100*sizeof(float), cudaMemcpyHostToDevice);
为什么会这样?
【问题讨论】:
-
vector<bool>很特别,而且不是很好。