【发布时间】:2019-02-28 11:44:13
【问题描述】:
我们正在着手开展一个 CUDA/C++ 项目。我们正在使用几台运行 Windows 和 Linux 的开发机器,以及一些 CI 服务器。我们有一个 CMake 项目以及一个预先指定的本地目录,用于预编译的第三方库(例如 C:\thirdparty)。
我的问题是:有没有办法将nvcc.exe 和相关的二进制文件复制到第三方目录中?还是每个开发者和构建机器都需要运行 CUDA 安装程序?
我一直在关注这篇博文:https://devblogs.nvidia.com/building-cuda-applications-cmake/
在本地安装 CUDA 后,他们的解决方案对我有用。但是,您似乎无法将 nvcc 二进制文件移出其默认安装位置,并且仍然可以构建所有内容。我将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 复制到C:\thirdparty\CUDA\10.0.,接下来我在CMakeLists.txt 中调用了set(CMAKE_CUDA_COMPILER "C:/thirdparty/CUDA/10.0/bin/nvcc.exe")。 CMake 失败:
AddCudaCompileDeps:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64\cl.exe /E /nologo /showIncludes /TP /D__CUDACC__ /DCMAKE_INTDIR="Debug" /DCMAKE_INTDIR="调试" /D_MBCS /I"C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v10.0\bin" /I"C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v10.0\include" /I. /FIcuda_runtime.h /c C:\Users\me\projects\cuda-test\build\CMakeFiles\CMakeTmp\main.cu C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.0.targets(536,9): error : CUDA Toolkit v10.0 目录 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\' 没有 存在。请验证 CUDA Toolkit 是否已正确安装或定义 CudaToolkitDir 属性来解决此错误。 [C:\Users\me\projects\cuda-test\build\CMakeFiles\CMakeTmp\cmTC_64f0a.vcxproj] 完成构建项目“C:\Users\me\projects\cuda-test\build\CMakeFiles\CMakeTmp\cmTC_64f0a.vcxproj” (默认目标)--失败。
我正在运行带有 CMake 3.12.0 的 Windows 10。
这里是 CMakeLists.txt 供参考:
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
set(CMAKE_CUDA_COMPILER "C:/thirdparty/CUDA/10.0/bin/nvcc.exe") 项目(cmake_and_cuda LANGUAGES CXX CUDA)
包括(CTest)
add_library(粒子静态随机化.cpp randomize.h
粒子.cu 粒子.h v3.cu v3.h)# 请求使用 -std=c++11 构建粒子 # 因为这是一个公共编译特性,任何链接到粒子的东西 # 还将使用 -std=c++11 target_compile_features(particles PUBLIC cxx_std_11) 构建
# 我们需要明确声明我们需要粒子中的所有 CUDA 文件 # 要使用 -dc 构建的库,因为可以通过以下方式调用成员函数 # 其他库和可执行文件 set_target_properties(particles 属性 CUDA_SEPARABLE_COMPILATION ON )
如果(BUILD_TESTING)
add_executable(particle_test test.cu)
set_target_properties(particle_test 属性 CUDA_SEPARABLE_COMPILATION ON) target_link_libraries(particle_test 私人粒子)
add_test(NAMEparticle_10k COMMANDparticle_test 10000)
add_test(NAMEparticle_256k COMMANDparticle_test 256000)如果(苹果) # 我们需要将驱动的默认路径(libcuda.dylib)添加为rpath, # 以便静态 cuda 运行时可以在运行时找到它。 set_property(TARGETparticle_test PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}) endif() endif()
【问题讨论】:
-
可能有任何许可问题?
标签: visual-studio cmake cuda