CUDA有一個選項可以在仿真模式下編譯代碼,這在他們提供的.rules文件中受支持。在VS2008中調試從.NET代碼調用的CUDA內核,仿真模式
我有一個調用本機DLL,使用的DllImport, 天然dll是使用NVCC經由VS2008編譯和它的功能是從內存和CUDA轉移以及調用CUDA內核C#的.NET 3.5 SP1代碼。
當CUDA內核正確時,一切運行良好,但是當出現錯誤時,我只能插入代碼,直到內核的標題並查看它們接收的參數。 (我啓用調試的啓動項目的調試選項本地代碼。)
我試圖與仿真模式下進行編譯,但是我得到的CUDA錯誤「混合設備執行」調用CUDA存儲器複製主機時 - >設備。 我試着用等效的非CUDA版本 切換alloc + dealloc + memcopy,但是當調用內核時發生同樣的錯誤。
我在嘗試使用調試仿真模式時做了什麼錯誤?
P.S.我在Vista x64 SP1 + VS2008上嘗試了這一點,在x86和x64中都使用相同的解決方案,既不能在仿真模式下工作,也不能在非仿真模式下工作。
我有一個項目充滿C#dll只有一個本機/ CUDA DLL。 – 2009-10-17 00:39:30
這就是我所擁有的。將C#應用程序調用到C++/CLI DLL中,後者又調用一些CUDA代碼。您在CUDA構建規則中設置了哪些編譯選項?例如優化被禁用? – 2009-10-17 06:28:51
我在調試模式下使用標準的CUDA 2.3 .rules文件選項(無優化)。我做的唯一更改是將編譯器/鏈接器路由到x86和x64中的不同CUDA Toolkit/SDK文件夾,以便我可以在兩者中進行編譯。 – 2009-10-17 16:06:59