我想在常量内存中设置我的模拟参数,但没有运气(CUDA.NET)。 cudaMemcpyToSymbol函数返回cudaErrorInvalidSymbol。 cudaMemcpyToSymbol中的第一个参数是字符串...它是符号名称吗?实际上我不明白如何解决。任何帮助赞赏。分配常量内存
//init, load .cubin
float[] arr = new float[1];
arr[0] = 0.0f;
int size = Marshal.SizeOf(arr[0]) * arr.Length;
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(arr, 0, ptr, arr.Length);
var error = CUDARuntime.cudaMemcpyToSymbol("param", ptr, 4, 0, cudaMemcpyKind.cudaMemcpyHostToDevice);
我.CU文件包含
__constant__ float param;
工作液
cuda.LoadModule(Path.Combine(Environment.CurrentDirectory, "name.cubin"));
simParams = cuda.GetModuleGlobal("params");
float[] parameters = new float[N]{...}
cuda.CopyHostToDevice<float>(simParams, parameters);
谢谢你的想法很清楚,适用于cpp(--compile)。但是,如果nvcc myfile.cu --cubin在.net应用程序的后期构建事件中。 “(-cubin)将所有.cu/.ptx/.gpu输入文件编译为仅限设备的.cubin文件。这一步放弃每个.cu输入文件的主机代码。”所以当我加载这个模块时,它不包含主机功能。 – Vladimir 2010-03-16 19:57:45