gpt4 book ai didi

库达cudaMemcpy "invalid argument"

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:37 25 4
gpt4 key购买 nike

尝试调试更大的应用程序时遇到一个问题,我似乎无法将值从主机复制到设备。我在下面提供了一个最小的示例,我认为应该将 6 复制到设备然后再复制回来。

#include <stdio.h>
__device__ float a_d;

main(){
float a = 6.0;
float b;
puts(cudaGetErrorString(cudaMemcpy(&a_d,&a,sizeof(float),cudaMemcpyHostToDevice)));
puts(cudaGetErrorString(cudaMemcpy(&b,&a_d,sizeof(float),cudaMemcpyDeviceToHost)));
printf("%e",b);
}

我在 64 位 Linux 上使用 CUDA 5.5 得到以下输出。

$ nvcc test.cu -run
invalid argument
invalid argument
0.000000e+00

而我期望 cudaSuccess6.000000e+00

最佳答案

您不能将 cudaMemcpy 直接与 __device__ 变量一起使用。 correct API to usecudaMemcpyTo/FromSymbol

以下应该有效:

#include <stdio.h>
__device__ float a_d;

main(){
float a = 6.0;
float b;
puts(cudaGetErrorString(cudaMemcpyToSymbol(a_d,&a,sizeof(float)));
puts(cudaGetErrorString(cudaMemcpyFromSymbol(&b,a_d,sizeof(float)));
printf("%e",b);
}

不清楚您为什么期望 0.000000e+00。根据您的代码,我希望 6.000000e+00 或类似的代码。

关于库达cudaMemcpy "invalid argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com