je rencontrais une erreur de compilation où la copie d'un vecteur bool à la mémoire cuda échoueraErreur lors de la copie vecteur bool à la mémoire 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);
Il retourne
error: invalid use of void expression cudaMemcpyHostToDevice);
mais le même code avec un vecteur de flotteur compilera.
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);
Pourquoi cela se produit-il?
['vector'] (http://fr.cppreference.com/w/cpp/container/vector_bool) est spécial, et pas dans le bon sens. –