Есть ли способ скопировать двойной массив из Host в массив float на Device. Я не беспокоюсь о потере точности? У меня есть следующий случай:cudaMemcpy double array to float array
double* host = new[N];
... // Perform some calculations on host array
float* device;
cudaMalloc((void**) &device, N * sizeof(float));
cudaMemcpy(device, host, N * sizeof(float), cudaMemcpyHostToDevice);
При попытке выше написанного кода я получаю ошибку недопустимый аргумент. Есть ли какое-либо решение для этого, кроме изменения массива хоста для float?
Я не уверен, что вы понимаете, что делает memcpy или cudaMemcpy. Он выполняет байтовую двоичную копию без учета точности поплавка или двойной. Поэтому, даже если вы запустите код и не получите никаких ошибок, у вас будет мусор в вектор устройства. –