Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将矢量布尔复制到CUDA内存时出错_C++_Vector_Cuda_Nvidia - Fatal编程技术网

C++ 将矢量布尔复制到CUDA内存时出错

C++ 将矢量布尔复制到CUDA内存时出错,c++,vector,cuda,nvidia,C++,Vector,Cuda,Nvidia,我遇到了一个编译错误,将布尔向量复制到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), cudaMemcpyHostToDevic

我遇到了一个编译错误,将布尔向量复制到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);
但是使用浮点向量的相同代码将被编译

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);
float*gpu;
Cudamaloc(重新解释铸件和gpu),100;
std::向量cpu(100);
for(int i=0;i是C++98中的一个错误,我们无法摆脱它(至少在占用名称方面)。标准建议它将存储保持为位的空间优化表示,这是大多数实现所做的


您可以通过使用
向量来解决此问题。

是一种特殊的方法,而且不是一种好方法。经过快速测试后,它似乎工作正常。而且它应该是uint8\u t而不是uin8\u t。
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);