CUDA Windows系统安装指南

在Microsoft Windows系统上安装CUDA工具包的说明。

1. 简介

CUDA® 是由NVIDIA发明的并行计算平台和编程模型。通过利用图形处理器(GPU)的强大性能,它能显著提升计算性能。

CUDA的开发设定了几个设计目标:

  • 为标准编程语言(如C语言)提供一小部分扩展,使得并行算法的实现更加直接。借助CUDA C/C++,程序员可以专注于算法的并行化任务,而无需花费时间在实现细节上。

  • 支持异构计算,应用程序可同时使用CPU和GPU。应用程序的串行部分在CPU上运行,并行部分则卸载到GPU处理。因此,CUDA可以逐步应用于现有应用程序。CPU和GPU被视为拥有各自独立内存空间的分离设备。这种配置还允许CPU和GPU同时进行计算,而不会争用内存资源。

支持CUDA的GPU拥有数百个核心,可共同运行数千个计算线程。这些核心具有共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些核心上运行的并行任务共享数据,而无需通过系统内存总线传输。

本指南将向您展示如何安装并验证CUDA开发工具的正确运行。

1.1. 系统要求

要在您的系统上使用CUDA,需要安装以下组件:

支持的 Microsoft Windows® 操作系统:

  • 微软 Windows 11 24H2 版本

  • 微软 Windows 11 22H2-SV2 版本

  • 微软 Windows 11 23H2 版本

  • 微软Windows 10 22H2版本

  • Microsoft Windows Server 2022

  • Microsoft Windows Server 2025

表 1 CUDA 12.8中的Windows编译器支持

编译器*

集成开发环境

原生x86_64

交叉编译(64位系统上编译32位程序)

C++语言标准

MSVC 版本 193x

Visual Studio 2022 17.x

支持

不支持

C++14 (默认), C++17, C++20

MSVC版本192x

Visual Studio 2019 16.x

C++14 (默认), C++17

* 自12.5版本起,对Visual Studio 2017的支持已被弃用,并将在未来版本中移除。为避免使用nvrtc_static.libnvJitLink_static.lib时出现链接错误,请使用Visual Studio 2019或更高版本。

从CUDA 12.0及更高版本的工具包中移除了32位本地编译和交叉编译功能。如需进行32位编译,请使用早期版本的CUDA工具包。CUDA驱动程序将继续支持在GeForce GPU上运行32位应用程序二进制文件,直到Ada架构为止。Ada将是最后一个支持32位应用程序的驱动架构。Hopper架构不支持32位应用程序。

在x86_64 Windows系统上运行x86 32位应用程序的支持仅限于以下用途:

  • CUDA 驱动程序

  • CUDA运行时 (cudart)

  • CUDA数学库 (math.h)

1.2. 关于本文档

本文档面向熟悉微软Windows操作系统和Microsoft Visual Studio环境的读者。您无需具备CUDA或并行计算的相关经验。

2. 安装CUDA开发工具

基础操作指南可在快速入门指南中查阅。下文将提供更详细的说明。

在运行适当版本Windows的系统上设置CUDA开发工具只需几个简单步骤:

  • 验证系统是否具备支持CUDA的GPU。

  • 下载NVIDIA CUDA工具包。

  • 安装NVIDIA CUDA工具包。

  • 测试已安装的软件是否能正常运行并与硬件正常通信。

2.1. 验证您是否拥有支持CUDA的GPU

您可以通过Windows设备管理器中的显示适配器部分来验证您的GPU是否支持CUDA。在这里您可以看到显卡的供应商名称和型号。如果您拥有https://developer.nvidia.com/cuda-gpus中列出的NVIDIA显卡,则该GPU支持CUDA。CUDA工具包的发行说明中也包含了支持的产品列表。

Windows 设备管理器可以通过以下步骤打开:

  1. 从开始菜单打开运行窗口

  2. 运行:

    control /name Microsoft.DeviceManager
    

2.2. 下载NVIDIA CUDA工具包

NVIDIA CUDA工具包可在https://developer.nvidia.com/cuda-downloads获取。请选择您使用的平台及以下安装程序格式之一:

  1. 网络安装程序:一个最小化的安装程序,后续会下载安装所需的软件包。仅下载安装程序选择阶段选中的软件包。该安装程序适合希望最小化下载时间的用户。

  2. 完整安装包:包含CUDA Toolkit所有组件的安装程序,无需额外下载。此安装包适用于无网络访问的系统和企业部署。

CUDA Toolkit 安装了创建、构建和运行 CUDA 应用程序所需的驱动程序、工具以及库、头文件和其他资源。

下载验证

下载文件的完整性可通过将https://developer.download.nvidia.com/compute/cuda/12.8.0/docs/sidebar/md5sum.txt上发布的MD5校验和与下载文件的校验和进行比对来验证。若任一校验值不匹配,则表明下载文件已损坏,需要重新下载。

2.3. 安装CUDA软件

在安装工具包之前,您应阅读发布说明,其中提供了有关安装和软件功能的详细信息。

注意

必须安装驱动程序和工具包才能使CUDA正常运行。如果您尚未安装独立驱动程序,请从NVIDIA CUDA工具包中安装驱动程序。

注意

如果在安装开始后Windows更新启动,安装可能会失败。请等待Windows更新完成,然后再次尝试安装。

图形化安装

通过执行CUDA安装程序并按照屏幕提示安装CUDA软件。

静默安装

安装程序可以通过使用-s标志运行包来以静默模式执行。可以传递其他参数来安装特定的子包而不是所有包。有关所有子包名称的列表,请参见下表。

表 2 可能的子包名称

子包名称

子包描述

工具包子包(默认路径为 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8)

cuda_profiler_api_12.8

CUDA性能分析器API。

cudart_12.8

CUDA运行时库。

cuobjdump_12.8

从cubin文件中提取信息。

cupti_12.8

CUDA性能分析工具接口,用于创建针对CUDA应用程序的性能分析和跟踪工具。

cuxxfilt_12.8

CUDA cu++名称还原工具。

demo_suite_12.8

使用CUDA构建的预置演示应用程序。

documentation_12.8

CUDA HTML and PDF documentation files including the CUDA C++ Programming Guide, CUDA C++ Best Practices Guide, CUDA library documentation, etc.

nvcc_12.8

CUDA编译器。

nvdisasm_12.8

从独立的cubin文件中提取信息。

nvfatbin_12.8

用于在运行时创建fatbinaries的库。

nvjitlink_12.8

nvJitLink库。

nvml_dev_12.8

NVML开发库和头文件。

nvprof_12.8

用于从命令行收集和查看CUDA应用程序性能分析数据的工具。

nvprune_12.8

修剪主机目标文件和库,使其仅包含指定目标的设备代码。

nvrtc_12.8

nvrtc_dev_12.8

NVRTC运行时库。

nvtx_12.8

Windows平台上的NVTX。

opencl_12.8

OpenCL库。

visual_profiler_12.8

可视化性能分析器。

sanitizer_12.8

计算Sanitizer API。

thrust_12.8

CUDA Thrust。

cublas_12.8

cublas_dev_12.8

cuBLAS运行时库。

cufft_12.8

cufft_dev_12.8

cuFFT运行时库。

curand_12.8

curand_dev_12.8

cuRAND运行时库。

cusolver_12.8

cusolver_dev_12.8

cuSOLVER运行时库。

cusparse_12.8

cusparse_dev_12.8

cuSPARSE运行时库。

npp_12.8

npp_dev_12.8

NPP运行时库。

nvjpeg_12.8

nvjpeg_dev_12.8

nvJPEG库。

nsight_compute_12.8

Nsight Compute工具。

nsight_systems_12.8

Nsight Systems系统分析工具。

nsight_vse_12.8

在所有VS中安装Nsight Visual Studio Edition插件。

occupancy_calculator_12.8

安装CUDA_Occupancy_Calculator.xls工具。

visual_studio_integration_12.8

在VS中安装CUDA项目向导并构建自定义文件。

驱动程序子包

Display.Driver

NVIDIA显示驱动程序。运行CUDA应用所必需的组件。

例如,仅安装编译器和驱动程序组件:

<PackageName>.exe -s nvcc_12.1 Display.Driver

如果不想在安装或卸载后自动重启(即使需要重启),请使用-n选项。

手动提取和检查文件

有时可能需要直接提取或检查可安装文件,例如在企业部署中,或在安装前浏览文件。完整安装包可以使用支持LZMA压缩方法的解压工具进行提取,例如7-zipWinZip

解压后,CUDA Toolkit文件将位于CUDAToolkit文件夹中,CUDA Visual Studio集成文件同理。每个目录中都包含一个.dll和.nvi文件,这些文件可以忽略,因为它们不属于可安装文件部分。

注意

以这种方式访问文件不会设置任何环境配置,例如变量或Visual Studio集成。这适用于企业级部署。

2.3.1. 卸载CUDA软件

所有子包都可以通过Windows控制面板中的"程序和功能"小部件进行卸载。

2.4. 使用Conda安装CUDA软件

本节介绍使用Conda安装程序时CUDA的安装与配置。Conda包可在https://anaconda.org/nvidia获取。

2.4.1. Conda概述

Conda安装会安装CUDA工具包。以下是安装步骤。

2.4.2. 安装

要使用Conda执行CUDA Toolkit所有组件的基础安装,请运行以下命令:

conda install cuda -c nvidia

2.4.3. 卸载

要使用Conda卸载CUDA工具包,请运行以下命令:

conda remove cuda

2.4.4. 安装旧版CUDA

所有在特定CUDA版本下发布的Conda软件包都会标注该发布版本号。如需安装旧版本,请在install命令中包含该版本标签,例如:

conda install cuda -c nvidia/label/cuda-11.3.0

注意

某些CUDA版本不会更新所有可安装组件到新版本。在这种情况下,这些组件将被移至新标签下,您可能需要修改安装命令以包含两个标签,例如:

conda install cuda -c nvidia/label/cuda-11.3.0 -c nvidia/label/cuda-11.3.1

此示例将安装作为CUDA 11.3.1版本发布的所有软件包。

2.5. 使用合适的驱动模型

在Windows 10及更高版本上,操作系统提供了两种驱动程序模型,NVIDIA驱动程序可在其中运行:

  • WDDM驱动模型用于显示设备。

  • NVIDIA驱动的Tesla计算集群(TCC)模式适用于非显示设备,如NVIDIA Tesla GPU和GeForce GTX Titan GPU;它使用Windows WDM驱动模型。

在最新的NVIDIA Tesla GPU上默认启用了TCC。要检查当前使用的驱动模式或切换驱动模式,可使用NVIDIA驱动安装包中包含的nvidia-smi工具(详情请参阅nvidia-smi -h)。

注意

请注意,当为特定GPU启用TCC模式时,该GPU无法用作显示设备。

注意

NVIDIA GeForce GPU(不包括GeForce GTX Titan GPU)不支持TCC模式。

2.6. 验证安装

在继续之前,验证CUDA工具包能否正确识别并与支持CUDA的硬件通信非常重要。为此,您需要编译并运行一些包含的示例程序。

2.6.1. 运行编译示例

可以通过在命令提示符窗口中运行nvcc -V来检查CUDA Toolkit的版本。您可以通过以下路径打开命令提示符窗口:

开始 > 所有程序 > 附件 > 命令提示符

CUDA示例代码位于https://github.com/nvidia/cuda-samples。要使用这些示例,请克隆项目,构建示例,并按照Github页面上的说明运行它们。

为了验证硬件和软件配置是否正确,强烈建议您构建并运行deviceQuery示例程序。该示例可以使用deviceQuery文件夹中提供的VS解决方案文件进行构建。

这里假设您使用了默认的安装目录结构。如果CUDA已正确安装并配置,输出应类似于图1所示。

Valid Results from deviceQuery CUDA Sample

图1 deviceQuery CUDA示例的有效结果

在您的系统上,具体显示外观和输出行可能会有所不同。关键结果是检测到了设备,该设备与您系统中安装的硬件相匹配,并且测试已通过。

如果已安装支持CUDA的设备和CUDA驱动程序,但deviceQuery报告未检测到支持CUDA的设备,请确保设备和驱动程序已正确安装。

运行位于上述deviceQuery同一目录下的bandwidthTest程序,可确保系统与支持CUDA的设备能够正确通信。输出结果应类似于图2

Valid Results from bandwidthTest CUDA Sample

图2 bandwidthTest CUDA示例的有效结果

设备名称(第二行)和带宽数值因系统而异。关键信息是第二行(确认检测到CUDA设备)以及倒数第二行(确认所有必要测试均已通过)。

如果测试未通过,请确保您的系统确实配备了支持CUDA的NVIDIA GPU,并确认其已正确安装。

要查看CUDA功能的图形化展示,请运行particles示例

https://github.com/NVIDIA/cuda-samples/tree/master/Samples/2_Concepts_and_Techniques/particles

3. Pip 安装包

NVIDIA提供了通过pip安装CUDA的Python Wheels,主要用于在Python中使用CUDA。这些软件包旨在运行时使用,目前不包含开发工具(这些工具可以单独安装)。

请注意,采用此安装方式时,CUDA的安装环境是通过pip管理的,必须额外注意配置主机环境以便在pip环境之外使用CUDA。

前提条件

要安装Wheels,首先需要安装nvidia-pyindex包,这是为了配置您的pip安装环境以便从NVIDIA NGC PyPI仓库获取额外的Python模块。如果您的pip和setuptools Python模块不是最新版本,请使用以下命令升级这些Python模块。如果这些Python模块版本过旧,本节后续的命令可能会执行失败。

py -m pip install --upgrade setuptools pip wheel

您现在应该能够安装nvidia-pyindex模块了。

py -m pip install nvidia-pyindex

如果你的项目使用requirements.txt文件,那么你可以将以下行添加到你的requirements.txt文件中,作为安装nvidia-pyindex包的替代方案:

--extra-index-url https://pypi.ngc.nvidia.com

步骤

安装CUDA运行时包:

py -m pip install nvidia-cuda-runtime-cu12

可选地,使用以下命令安装下面列出的额外软件包:

py -m pip install nvidia-<library>

元包

以下元包将在Windows上为指定的CUDA版本安装对应组件的最新版本。"cu12"应理解为"cuda12"。

  • nvidia-cublas-cu12

  • nvidia-cuda-runtime-cu12

  • nvidia-cuda-cupti-cu12

  • nvidia-cuda-nvcc-cu12

  • nvidia-cuda-nvrtc-cu12

  • nvidia-cuda-sanitizer-api-cu12

  • nvidia-cufft-cu12

  • nvidia-curand-cu12

  • nvidia-cusolver-cu12

  • nvidia-cusparse-cu12

  • nvidia-npp-cu12

  • nvidia-nvfatbin-cu12

  • nvidia-nvjitlink-cu12

  • nvidia-nvjpeg-cu12

  • nvidia-nvml-dev-cu12

  • nvidia-nvtx-cu12

  • nvidia-opencl-cu12

这些元包将安装以下软件包:

  • nvidia-cublas-cu128

  • nvidia-cuda-runtime-cu128

  • nvidia-cuda-cupti-cu128

  • nvidia-cuda-nvcc-cu128

  • nvidia-cuda-nvrtc-cu128

  • nvidia-cuda-sanitizer-api-cu128

  • nvidia-cufft-cu128

  • nvidia-curand-cu128

  • nvidia-cusolver-cu128

  • nvidia-cusparse-cu128

  • nvidia-npp-cu128

  • nvidia-nvfatbin-cu128

  • nvidia-nvjitlink-cu128

  • nvidia-nvjpeg-cu128

  • nvidia-nvml-dev-cu128

  • nvidia-nvtx-cu128

  • nvidia-opencl-cu128

4. 编译CUDA程序

CUDA示例中的项目文件设计为提供简单的一键式构建程序,包含所有源代码。要构建Windows项目(发布或调试模式),可使用提供的*.sln解决方案文件,适用于Microsoft Visual Studio 2015(在CUDA 11.1中已弃用)、2017、2019或2022版本。您可以使用位于https://github.com/nvidia/cuda-samples中每个示例目录下的解决方案文件。

4.1. 编译示例项目

bandwidthTest项目是一个很好的示例项目,适合构建和运行。它位于https://github.com/NVIDIA/cuda-samples/tree/master/Samples/1_Utilities/bandwidthTest

如果您选择使用默认安装位置,输出文件将存放在CUDA Samples\v12.8\bin\win64\Release目录下。请使用对应的解决方案文件构建程序并运行可执行文件。如果一切正常,输出结果应类似于图2所示。

4.2. 示例项目

示例项目提供两种配置:调试版和发布版(发布版不含调试信息),以及不同的Visual Studio项目。

部分示例项目需要一些额外的设置。

这些示例项目还利用$CUDA_PATH环境变量来定位CUDA工具包及相关的.props文件所在位置。

环境变量是通过构建自定义文件CUDA 12.8.props自动设置的,并作为CUDA工具包安装过程的一部分自动安装。

表 3 CUDA Visual Studio .props文件位置

Visual Studio

CUDA 12.8 .props 文件安装目录

Visual Studio 2017

\Common7\IDE\VC\VCTargets\BuildCustomizations

Visual Studio 2019

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\BuildCustomizations

Visual Studio 2022

C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\BuildCustomizations

在构建您自己的CUDA应用程序时,可以参考这个CUDA 12.8.props文件。

4.3. 为新项目构建自定义配置

创建新的CUDA应用程序时,必须配置Visual Studio项目文件以包含CUDA构建自定义项。为此,请点击文件->新建|项目... NVIDIA-> CUDA->,然后选择与您CUDA工具包版本对应的模板。例如,选择"CUD 12.8运行时"模板将为您的项目配置使用CUDA 12.8工具包。从技术上讲,新项目是一个C++项目(.vcxproj),已预先配置为使用NVIDIA的构建自定义项。Visual Studio C++项目的所有标准功能都将可用。

要指定自定义CUDA Toolkit位置,在CUDA C/C++下选择通用,并按需设置CUDA Toolkit自定义目录字段。请注意所选工具包必须与构建自定义项的版本匹配。

注意

必须安装受支持版本的MSVC才能使用此功能。

4.4. 现有项目的构建自定义选项

在现有应用中添加CUDA加速时,必须更新相关的Visual Studio项目文件以包含CUDA构建自定义项。可通过以下两种方法之一实现:

  1. 打开Visual Studio项目,右键点击项目名称,选择生成依赖项 > 生成自定义项...,然后选择您想要使用的CUDA Toolkit版本。

  2. 或者,您可以将项目配置为始终使用最新安装的CUDA Toolkit版本进行构建。首先按照上述方法向项目添加CUDA构建自定义项。然后,右键单击项目名称并选择属性。在CUDA C/C++下选择常规,并将CUDA Toolkit自定义目录字段设置为$(CUDA_PATH)。请注意,$(CUDA_PATH)环境变量是由安装程序设置的。

虽然选项2允许您的项目自动使用未来可能安装的任何新CUDA Toolkit版本,但在实践中像选项1那样明确选择工具包版本通常更好,因为如果新工具包附带的构建自定义规则中添加了新的CUDA配置选项,使用选项2将无法看到这些新选项。

如果您使用$(CUDA_PATH)环境变量来指定构建所需的CUDA Toolkit版本,并且在安装或卸载任何版本的CUDA Toolkit后,您应该验证$(CUDA_PATH)环境变量是否指向符合您需求的正确CUDA Toolkit安装目录。您可以通过以下步骤访问$(CUDA_PATH)环境变量的值:

  1. 从开始菜单打开运行窗口。

  2. 运行:

    control sysdm.cpl
    
  3. 选择窗口顶部的高级选项卡。

  4. 点击窗口底部的环境变量

包含CUDA代码的文件必须标记为CUDA C/C++文件。添加文件时可以通过右键点击要添加到的项目,选择添加新项,选择NVIDIA CUDA 12.8\代码CUDA C/C++文件,然后选择要添加的文件来完成此操作。

对于高级用户,如果您希望在不修改任何项目文件的情况下尝试使用较新的CUDA Toolkit构建项目,请打开Visual Studio命令提示符,将当前目录切换到项目所在位置,并执行如下命令:

msbuild <projectname.extension> /t:Rebuild /p:CudaToolkitDir="drive:/path/to/new/toolkit/"

5. 其他注意事项

现在您已安装支持CUDA的硬件和NVIDIA CUDA工具包,可以查看并体验其中包含的大量程序。要开始使用CUDA加速您自己的应用程序性能,请参阅位于CUDA工具包文档目录中的《CUDA C编程指南》。

CUDA工具包中包含了许多有用的开发工具,或者可以从NVIDIA开发者专区下载,以协助您开发CUDA程序,例如NVIDIA® Nsight™ Visual Studio版和NVIDIA Visual Profiler。

如需编程问题的技术支持,请点击此处咨询并参与开发者论坛。

6. 公告

6.1. 注意事项

本文档仅供信息参考之用,不应视为对产品功能、状态或质量的保证。NVIDIA公司(“NVIDIA”)对本文件所含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并对其中可能存在的错误不承担任何责任。NVIDIA对于因使用此类信息而产生的后果、或因使用该信息导致的第三方专利或其他权利侵权概不负责。本文件不构成对开发、发布或交付任何材料(定义见下文)、代码或功能的承诺。

NVIDIA保留随时对本文件进行更正、修改、增强、改进以及任何其他变更的权利,恕不另行通知。

客户在下单前应获取最新的相关信息,并确认这些信息是最新且完整的。

除非NVIDIA与客户授权代表签署的单独销售协议中另有约定,否则NVIDIA产品的销售均以订单确认时提供的NVIDIA标准销售条款和条件为准(以下简称"销售条款")。NVIDIA特此明确反对将任何客户通用条款适用于本文件所述NVIDIA产品的采购。本文件不直接或间接构成任何合同义务。

NVIDIA产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于那些可以合理预期NVIDIA产品故障或失灵会导致人身伤害、死亡、财产或环境损害的应用场景。NVIDIA对于在此类设备或应用中使用和/或包含NVIDIA产品不承担任何责任,因此客户需自行承担相关风险。

NVIDIA不声明或保证基于本文档的产品适用于任何特定用途。NVIDIA未必会对每个产品的所有参数进行测试。客户应全权负责评估和确定本文档所含信息的适用性,确保产品适合并满足客户计划的应用需求,并执行必要的应用测试以避免应用或产品出现故障。客户产品设计中的缺陷可能会影响NVIDIA产品的质量和可靠性,并可能导致超出本文档范围的其他或不同的条件和/或要求。对于任何因以下原因导致的故障、损坏、成本或问题,NVIDIA不承担任何责任:(i) 以违反本文档的任何方式使用NVIDIA产品或(ii) 客户产品设计。

本文档不授予任何NVIDIA专利权、版权或其他NVIDIA知识产权的明示或暗示许可。NVIDIA发布的关于第三方产品或服务的信息,不构成NVIDIA对这些产品或服务的使用许可或担保认可。使用此类信息可能需要获得第三方基于其专利或其他知识产权的许可,或需要获得NVIDIA基于其专利或其他知识产权的许可。

本文件中的信息仅可在获得NVIDIA事先书面批准、未经改动完整复制且完全符合所有适用的出口法律法规,并附带所有相关条件、限制和声明的情况下进行复制。

本文件及所有NVIDIA设计规格、参考板、文件、图纸、诊断工具、清单和其他文档(统称及单独称为"材料")均以"现状"提供。NVIDIA不对材料作出任何明示或默示的保证,包括但不限于对不侵权、适销性和特定用途适用性的默示保证免责。在法律允许的最大范围内,NVIDIA不就因使用本文件导致的任何损害承担责任,包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论损害成因如何,也无论责任理论为何,即使NVIDIA已被告知发生此类损害的可能性。不论客户因任何原因可能遭受的任何损害,NVIDIA对客户就本文所述产品的全部及累计责任应受产品销售条款的限制。

6.2. OpenCL

OpenCL是苹果公司的商标,经Khronos Group Inc.授权使用。

6.3. 商标

NVIDIA和NVIDIA标识是美国及其他国家NVIDIA公司的商标或注册商标。其他公司及产品名称可能是其各自关联公司的商标。