我想在常量內存中設置我的模擬參數,但沒有運氣(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