【问题标题】:Is it possible to move/distribute the cuda compiler (nvcc) after installation?安装后是否可以移动/分发 cuda 编译器(nvcc)?
【发布时间】: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


【解决方案1】:

是的,我是在 Windows 上完成的,因为构建机器没有 Nvidia 显卡,因此无法运行 CUDA 安装程序或驱动程序安装。

我只是从我的工作 PC 复制文件夹并添加环境变量:

CUDA 工具包 - CUDA_PATH (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0)

CUDA 示例 - NVCUDASAMPLES_ROOT (C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0)

(当然取决于您在代码项目中引用的内容,这是我需要的)

这在 CUDA 9.2 (MVS 2015) 和 10.0 (MVS 2017) 上对我有用。

【讨论】:

    【解决方案2】:

    很有可能。 CUDA 安装(与 nVIDIA 驱动程序安装相反)只是磁盘上的一堆文件。如果您甚至愿意将它们全部放在一个公共目录中,那么它是C:\Program Files\CUDA(或Windows 上的默认值)还是C:\thirdparty\cuda 都无关紧要。

    您的“唯一”问题是您的相关环境变量,也许还有某些注册表项(不确定,因为我的经验是使用 Linux)。环境变量可能(或可能不)包括以下一些:CUDA_DIRLD_LIBRARY_PATHC_INCLUDE_PATHLIBRARY_PATHCPLUSINCLUDE_PATH。环境变量肯定包括PATH

    警告:我只有在 Linux 上将 CUDA 放置在任意位置的经验。

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 1970-01-01
      • 2019-08-26
      • 2021-12-27
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 2013-05-06
      相关资源
      最近更新 更多