小编Jim*_*son的帖子

如何使用现代 CMAKE(每个目标)添加多个 CUDA gencode?

我无法让现代 cmake(每个目标)设置多个CUDA gencode 标志。

CMake 示例:

target_compile_options(myHeaderLib INTERFACE                        
                        $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_50,code=sm_50>
                        $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_52,code=sm_52>
                        $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_53,code=sm_53>
                        $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_60,code=sm_60>
                        $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_62,code=sm_62>
                        )
Run Code Online (Sandbox Code Playgroud)

这将输出:

... -gencode arch=compute_50,code=sm_50 arch=compute_52,code=sm_52 arch=compute_53,code=sm_53
Run Code Online (Sandbox Code Playgroud)

但需要的是:

... -gencode arch=compute_50,code=sm_50  -gencode arch=compute_52,code=sm_52  -gencode arch=compute_53,code=sm_53 ...
Run Code Online (Sandbox Code Playgroud)

仅仅设置 ${CUDA_NVCC_FLAGS} 并不是一个可靠的解决方案(这不是现代 CMAKE 应该做的事情)。

cuda compilation cmake

5
推荐指数
1
解决办法
1988
查看次数

某些机器上无法加载C++ DLL

我试图弄清楚我的DLL无法在某些机器上加载的原因.

我的应用程序:

使用setup.msi安装程序部署AC#程序.安装程序内部是放置在应用程序的安装目录中的DLL.例如:

OUTDIR = c:\Program Files\MyApplicationName\%OUTDIR%\MyApplication.exe
dir %OUTDIR%\DLL_FOLDER\\*.dll 
Run Code Online (Sandbox Code Playgroud)

MYDLL.DLL

C#应用程序调用LoadLibrary指定:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr LoadLibrary(string libname);   
Run Code Online (Sandbox Code Playgroud)

所以基本上

intPtr dll_handle = LoadLibrary("myDll.dll");
Run Code Online (Sandbox Code Playgroud)

被调用,我们使用dll_handle来调用所需的函数.

到目前为止,这已经在我部署的5/7台机器上工作了......我在这里犯的明显错误是什么?:-)

感谢任何帮助!

c# c++ dll

0
推荐指数
1
解决办法
571
查看次数

标签 统计

c# ×1

c++ ×1

cmake ×1

compilation ×1

cuda ×1

dll ×1