S51205 From the Macro to the Micro: CUDA Developer Tools Find and Fix Problems at Any Scale
S51205 From the Macro to the Micro: CUDA Developer Tools Find and Fix Problems at Any Scale
Jackson Marusarz | Technical Product Manager
March 22nd 2023
目录 (Table of Contents)
- 议程 (Agenda
-
Grace 及其他 Arm 平台上的 GUI 支持 (GUI Support for Grace and other Arm Platforms
- 更新的网站/文档/图标 (Updated Websites/Docs/Icons
- NVIDIA SDKs 和 NVTX - 完整的生态系统 (NVIDIA SDKs and NVTX - A Complete Ecosystem
-
从宏观到微观:全面整合 (From the Macro to the Micro: Putting it all together
议程 (Agenda)
本演示将介绍以下内容:
- 高层次工具生态系统 (High-level tools ecosystem)
-
针对每个工具 (For each tool):
- 简要描述和功能概览 (Brief description and feature overview)
- 最新版本中的新功能 (What's new in the latest releases)
- 在系统层级中解决问题和应用 (Focus on problem solving and application in the system hierarchy)
-
总结 - 整合所有内容 (Summary - Putting it all together)
- 行动呼吁 (Call to action)
上图展示了从宏观(服务器机架)到微观(GPU)的层级,强调了不同层面的工具应用。
开发者工具生态系统 (Developer Tools Ecosystem)
NVIDIA 提供了一整套开发者工具,涵盖了调试器、性能分析器、正确性检查器和IDE集成。
调试器 (Debuggers)
- CUDA-GDB: 用于CPU和GPU的CUDA内核调试器。
- Nsight Visual Studio Edition: Visual Studio的IDE集成。
- Nsight Visual Studio Code Edition: Visual Studio Code的IDE集成。
性能分析器 (Profilers)
- Nsight Systems: 系统级性能分析器。
- Nsight Compute: 计算内核级性能分析器。
- CUPTI: CUDA性能工具接口。
- NVIDIA Tools eXtension (NVTX): 工具扩展API,用于应用注解。
正确性检查器 (Correctness Checker)
- Compute Sanitizer: 用于自动扫描错误和内存问题。
IDE 集成 (IDE Integrations)
- Nsight Eclipse Edition: Eclipse的IDE集成。
- Nsight Visual Studio Edition: Visual Studio的IDE集成。
- Nsight Visual Studio Code Edition: Visual Studio Code的IDE集成。
Grace 及其他 Arm 平台上的 GUI 支持 (GUI Support for Grace and other Arm Platforms)
NVIDIA 的调试和分析工具现在支持在 Arm 平台上原生运行 GUI。
* Nsight Systems - Nsight Compute - Nsight Visual Studio Code Edition
* GUI 可原生运行在 NVIDIA® Jetson AGX Orin™ SoC 和 Arm 服务器平台上。
* 可以使用新的原生 GUI 或现有的远程收集功能。
更新的网站/文档/图标 (Updated Websites/Docs/Icons)
NVIDIA 开发者工具 (NVIDIA Developer Tools) 提供了一套强大的库、SDK和开发工具,适用于桌面和移动目标,帮助开发者利用最先进的加速计算硬件进行构建、调试、分析和开发。
您可以根据工作细分领域(如 CUDA/Compute, Graphics, OptiX, Deep Learning)和开发活动(如 Code Development, Debugging/Correctness, Profiling, Platform Analysis, Kernel Analysis, APIs)来查找相关工具。
Nsight Compute 是一款用于 CUDA 应用的交互式内核性能分析器,提供详细的性能指标和API。
相关网站和文档也已更新,并提供了新的工具图标。
更多信息请访问:https://developer.nvidia.com/tools-overview
计算调试器 (Compute Debuggers)
调试设备上运行的 GPU 内核 (Debug GPU Kernels Running on Device)
-
CUDA GDB
- CPU+GPU CUDA 内核调试器。
- 支持单步执行、设置断点、内联函数、变量检查等功能。
-
Nsight Visual Studio Edition
- Visual Studio 的 IDE 集成。
- 在 Visual Studio 中构建和调试 CPU+GPU 代码。
-
Nsight Visual Studio Code Edition
- VS Code 的新 IDE 集成。
- 在 Visual Studio Code 中构建和调试 CPU+GPU 代码。
-
支持从 Windows 或 Linux 远程调试 Linux 目标。
CUDA GDB (Command-line and IDE Back-end Debugger)
CUDA GDB 是一款命令行和 IDE 后端调试器,提供以下功能:
* 统一的 CPU 和 CUDA 调试体验。
* 支持 CUDA-C/SASS。
* 基于 GDB 构建,并使用许多相同的 CLI 命令。
* 支持本地/远程连接。
* 可作为 IDE 调试器的后端。
Compute Sanitizer (自动扫描错误和内存问题)
Compute Sanitizer 通过子工具检查正确性问题:
* Memcheck:内存访问错误和内存泄漏检测工具。
* Racecheck:共享内存数据访问危害检测工具。
* Initcheck:未初始化设备全局内存访问检测工具。
* Synccheck:线程同步危害检测工具。
以下是一个 Compute Sanitizer 运行示例,展示了检测到的内存错误和访问越界问题:
$ make run_memcheck
/usr/local/cuda/compute-sanitizer/compute-sanitizer --destroy-on-device-error memcheck_demo
========= COMPUTE-SANITI泽
Mallocing memory
Running unaligned_kernel
Ran unaligned_kernel: no error
Sync: no error
Running out_of_bounds_kernel
Ran out_of_bounds_kernel: no error
Sync: no error
========= Invalid __global__ write of size 4 bytes
at 0x7e71ac080000 is unaligned
at 0x6e80 in memcheck_demo.cu:6:unaligned_kernel(void)
by thread (0,0,0) in block (0,0,0)
Address 0x400100001 is misaligned
更多示例可在 GitHub 上找到:https://github.com/NVIDIA/compute-sanitizer-samples
正确性工具功能 (Correctness Tools Features)
使用统一后端进行调试 (Debuggers using Unified Backend)
- 跨平台提供一致的调试体验。
- 性能和可用性得到提升。
- “float all boats”新功能。
新的 Compute Sanitizer 用例 (New Compute Sanitizer use cases)
- Racecheck 支持异步拷贝 (async-copy)、DSMEM 和 GMMA。
- Memcheck 支持缓存控制操作。
- 改进了核心转储支持。
- 多个 OptiX 分析改进。
Nsight Visual Studio Code Edition (Nsight Visual Studio Code Edition)
- 新增支持调试容器。
NVIDIA Tools eXtension (NVTX v3)
NVTX v3 是一种工具扩展 API,旨在通过注解(标记、范围、嵌套范围)来修饰应用程序源代码,以帮助可视化执行过程,从而进行调试、追踪和性能分析。
-
头文件库 (Header-only library):https://github.com/NVIDIA/NVTX/tree/release-v3/c
#include <nvtx3/nvToolsExt.h>
-
标记 (Marker)
nvtxMark("This is a marker");
- 压入-弹出范围 (Push-Pop Range)
nvtxRangePush("This is a push/pop range");
// do something interesting in the range
nvtxRangePop(); // Pop must be on same thread as corresponding Push
- 开始-结束范围 (Start-End range)
nvtxRangeHandle_t handle = nvtxRangeStart("This is a start/end range");
// Somewhere else in the code, not necessarily same thread as Start call:
nvtxRangeEnd(handle);
API 参考:
* https://nvidia.github.io/NVTX/doxygen/index.html
* https://nvidia.github.io/NVTX/doxygen-cpp/index.html
NVIDIA SDKs 和 NVTX - 完整的生态系统 (NVIDIA SDKs and NVTX - A Complete Ecosystem)
NVTX 与各种 NVIDIA SDK 和库集成,形成了一个完整的生态系统,支持全面的性能分析和调试。
-
DeepStream SDK
- Accel. GStreamer Plugins
- GXF
-
Holoscan SDK
- GXF
-
数学库 (Math Libraries)
- cuSPARSE
- cuSOLVER
- cuBLAS
-
深度学习库 (Deep Learning Libraries)
- TensorRT
- cuDNN
- cuDLA
-
通信库 (Comm. Libraries)
- NVSHMEM
- NCCL
-
其他 (Other)
- cuDF
- cuFile
- cuML
Nsight Systems
主要特性
Nsight Systems 是一款系统性能分析工具,具备以下关键特性:
- 系统级应用算法调优。
- 支持多进程树结构。
- 定位优化机会。
- 在快速响应的图形用户界面(GUI)时间轴上可视化数百万个事件。
- 识别未使用的 CPU 和 GPU 时间间隔。
-
在多个 CPU 和 GPU 之间平衡工作负载,具体包括:
- CPU 算法、利用率和线程状态。
- GPU 流、内核、内存传输等。
-
支持命令行、独立应用和集成开发环境(IDE)集成。
- 支持的操作系统包括:Linux (x86, Power, ARM Server, Tegra), Windows, macOS X (仅主机)。
- 支持的 GPU:Pascal+。
- 文档/产品链接:https://developer.nvidia.com/nsight-systems
在Page 16的右侧,展示了Nsight Systems时间轴视图的三个示例,用以说明其可视化能力。
Nsight Systems 界面概览
Nsight Systems 的可视化界面能够详细展示应用程序的性能数据,包括:
* 进程和线程:显示系统中运行的进程及其线程活动。
* 线程状态:展示各线程的运行状态。
* cuDNN和cuBLAS跟踪:对深度学习库的API调用进行跟踪。
* 内核和内存传输活动:监控GPU内核的执行和内存传输操作。
* 多GPU支持:支持对多GPU系统的性能分析。
Page 17 展示了 Nsight Systems 2023.2 的详细时间轴视图,并用标注指明了不同区域显示的信息类型。
兴趣区域的缩放/过滤
Nsight Systems 提供了强大的缩放和过滤功能,使用户能够精确地聚焦于感兴趣的特定区域。
Page 18 展示了如何通过选择区域并执行“Zoom into Selection”操作来放大时间轴上的特定性能事件。
Nsight Systems 新功能
CPU 和 OS 事件
Nsight Systems 扩展了对 CPU 和操作系统事件的分析能力:
* CPU X86_64/SBSA 硬件计数器:
* 包括缓存未命中、DRAM 访问等。
Page 20 展示了时间轴视图中对 CPU Cache (如 LL Cache Load Misses, CPU Cycles, Cache Misses) 和 Uncore (如 nvidia_scf_pmu_0/mem_rd_access/, nvidia_scf_pmu_0/mem_rd_data/) 性能指标的详细监控。
- Linux OS 事件计数器:
- 包括页面错误、中断、文件、磁盘、套接字等。
Page 21 展示了时间轴视图中对操作系统事件 (如 OS Context Switches, Page Faults) 的详细监控。
Python 调用栈采样
- 支持周期性采样 Python 堆栈。
- 与所有其他收集到的活动相关联,以便进行综合分析。
Page 22 展示了时间轴视图中的 Python Backtrace,以及在下方窗格中显示的详细调用栈信息。
NVIDIA 网络 NIC/DPU 指标采样
- 包括 InfiniBand 和 Ethernet 网络指标。
- 监控发送/接收字节数以及等待时间。
- 将网络活动与预期网络流量和其他系统活动关联起来进行分析。
Page 23 展示了 NIC 0 到 NIC 3 的网络指标,包括发送和接收字节数以及发送等待时间。
网络 API 跟踪 - 扩展描述/工具提示
- 支持 MPI 版本,包括 OpenMPI 和 MPICH。
- 为每个 API 调用提供详细数据。
- 识别性能趋势和特定的表现不佳的调用。
Page 24 展示了“Events View”中 MPI_Bcast 调用的详细信息,包括开始时间 0,164935s,结束时间 0,165045s (+109,210 µs),线程 ID 1342434,发送字节数 0,接收字节数 4,根节点 0,以及 MPI_COMM_WORLD。
Nsight Systems 多节点分析
- Nsight Systems 2023.2 预览功能。
- 分析配方:
- 提供用于分析从多个来源/节点收集的现有报告的配方。
- Nsight Systems 包含多个默认配方。
- 配方基于可扩展的 Python 库构建。
- 配方生成的结果格式多样,包括:Jupyter Notebook、Parquet、CSV。
- 结果可以在 Nsight Systems GUI 或 Jupyter Lab 中打开。
Page 25 展示了 Nsight Systems 多节点分析的命令行帮助信息 (nsys recipe -help) 和一个 Jupyter Notebook 中展示的分析报告。
- cuda_gpu_time_util_map 配方示例:
- 识别表现异常的 GPU、ranks 或节点。
- 与应用程序阶段进行时间关联。
- 点击可深入查看特定结果文件以获取更多详细信息。
Page 26 展示了使用 cuda_gpu_time_util_map 配方进行多节点分析的结果,通过热力图形式对比了优化“Before”和“After”的 GPU 利用率随时间 (Duration (s)) 的变化。
Nsight Compute
Nsight Compute - 内核分析器
主要特性:
- 交互式 CUDA API 调试和内核分析。
- 内置规则专业知识。
- 完全可定制的数据收集和显示。
- 支持命令行、独立应用、IDE 集成、远程目标。
- 支持的操作系统:Linux (x86, Power, Tegra, ARM SBSA), Windows, macOS X (仅主机)。
- 支持的 GPU:Volta+。
- 文档/产品链接:https://developer.nvidia.com/nsight-compute
Page 28 展示了 Nsight Compute 界面,包括 GPU Speed of Light 和 GPU Utilization 的详细指标以及各项性能数据列表。
Nsight Compute GUI 界面
Nsight Compute 的 GUI 界面提供:
* 目标度量指标部分:集中展示关键性能指标。
* 可定制的数据收集和呈现:用户可以根据需求调整数据收集和显示方式。
* 内置专业知识用于指导分析和优化:提供建议和瓶颈识别。
Page 29 展示了 Nsight Compute GUI 界面的关键部分,包括“GPU Speed of Light”的性能概览、GPU 利用率图表以及根据内置专业知识提供的“Bottleneck”和“Compute Workload Analysis”建议。
内存工作负载分析
Nsight Compute 提供深入的内存工作负载分析,包括:
* 可视化内存分析图表。
* 峰值性能比率的度量指标。
Page 30 展示了一个详细的内存分析图表,可视化了内存层次结构(Global, Local, Texture, Surface, Shared)及其与缓存(Unified Cache, L2 Cache)和主存(System Memory, Device Memory)之间的交互。图表下方还列出了共享内存和一级缓存的详细性能指标。
Nsight Compute 详细分析
源代码/PTX/SASS 分析与关联
Nsight Compute 提供了深入的源代码、PTX(并行线程执行)和 SASS(汇编)层面的性能分析和关联。它通过度量指标热力图快速识别性能热点,并为每条指令提供详细的度量指标。
图示信息:
* 总采样计数: 111
* 屏障: 43 (38.7%)
* Mio 节流: 21 (18.9%)
* 未选择: 8 (7.2%)
* 已选择: 7 (6.3%)
* 短记分牌: 16 (14.4%)
* 等待: 16 (14.4%)
Nsight Compute 新功能
Nsight Systems 的集成基本跟踪
Nsight Compute 与 Nsight Systems 集成,提供了一个从系统级别到内核级别的无缝分析流程。
* 在连接对话框中使用“System Trace”活动。
* 识别长时间运行的内核或计算密集型瓶颈。
* 右键单击时间线可快速启动配置文件。
* Nsight Compute 会自动过滤到选定的内核。
内联函数源表
Nsight Compute 针对内联函数提供了详细的源表分析功能。
* 可以按内联调用点或聚合到整个函数来分析度量指标。
* 使用 --inlineinfo 标志生成符号。
* 识别具体的性能不佳调用和异常值。
* 快速导航到内联调用点。
Hopper 线程块集群
Hopper 架构引入了线程块集群,以提供更高级别的局部性控制。
* 实现对大于单个 SM 上单个线程块粒度的可编程局部性控制。
* 集群使多个线程块能够跨多个 SM 并行运行,以同步和交换数据。
* 更多关于线程块集群的信息:
* [S51225] - CUDA: New Features and Beyond
* [S51119] - Optimizing Applications for Hopper Architecture
Nsight Compute 中的 Hopper 线程块集群
Nsight Compute 提供了对 Hopper 线程块集群的详细分析。
- Hopper SM 90
- 集群调度策略
- 集群启动大小
- 集群占用率
报告中的关键统计数据示例:
* 集群大小: 2.00 调度策略
* 网格大小: 140.00 每线程寄存器 [thread]
* 块大小: 384.00 静态共享内存每块 [byte/block]
* 线程 [thread]: 107,520.00 动态共享内存每块 [byte/block]
* 每 SM 波形数: 1.00 驱动程序共享内存每块 [byte/block]
* 函数缓存配置: cudaFuncCachePreferNone 共享内存配置大小 [byte]
* 理论占用率 [%]: 18.75 块限制寄存器 [block]
* 实现占用率 [%]: 12.00 块限制共享内存 [block]
* 实现占用率 [%]: 15.56 块限制 warp [block]
* 实现每 SM 活跃 warp 数 [warp]: 9.96 块限制 SM [block]
* 最大集群大小: 16.00 最大活跃集群
* 分支指令 [inst]: 1,570,420.00 分支效率 [%]
* 分支指令比率 [%]: 0.05 平均分歧分支
Hopper 张量内存加速器 (TMA)
Hopper 架构引入了张量内存加速器(TMA),以优化数据传输。
* 新的异步内存复制单元,用于将大量数据和多维张量从全局内存传输到共享内存,然后再传回。
* TMA 有助于为强大的新 H100 Tensor Cores 提供数据。
* TMA 释放线程来执行其他独立工作,而不是进行复制。
* 更多关于 TMA 的信息:
* [S51413] - Developing Optimal CUDA Kernels on Hopper Tensor Cores
* [S51119] - Optimizing Applications for Hopper Architecture
Nsight Compute 中对 Hopper TMA 的理解
Nsight Compute 能够帮助用户理解 Hopper TMA 的性能表现。
- TMA 流水线利用率
- Warp 组协同处理张量操作 (Tensor OPs)
新增文档示例
为了降低性能优化的复杂性,Nsight Compute 提供了新的文档示例。
* 随 Nsight Compute 安装包提供。
* 包含可重现的说明、描述、预收集结果和源代码。
* 解释 CUDA 应用程序中常见的性能问题,例如“非合并全局访问和共享内存银行冲突”。
源页面指导 (即将推出)
即将推出的源页面指导功能将增强性能分析的便利性。
* 分支导航: 快速跳转到分支指令。
* 规则标记:
* 自动化分析和每行源代码的规则输出。
* 快速检测和导航到重要问题。
* 提供检测到的问题解释。
潜在加速计算 (即将推出)
即将推出的潜在加速计算功能将帮助用户更好地聚焦优化工作。
- 为检测到的问题估算潜在加速。
- 基于潜在加速对内核进行排序。
- 帮助用户了解关注重点和潜在收益。
图示下方文本:
Issue Slot Utilization
每个调度器每周期能发出一个指令,但对于此内核,每个调度器平均每 16.5 个周期才发出一个指令。这可能导致硬件资源利用不足,并可能导致性能下降。在每个调度器最大 12 个 warp 中,此内核平均分配 8.28 个活跃 warp;但平均只有 0.09 个 warp 每周期符合条件。符合条件的 warp 是活跃 warp 中准备好发出下一条指令的子集。每个没有符合条件 warp 的周期都不会发出指令,并且发出槽位保持未使用。要增加符合条件 warp 的数量,可以通过检查 Warp 状态统计和源计数器部分中的主要停滞原因来减少活跃 warp 停滞的时间。
潜在加速: 16.48x
long_scoreboard
平均而言,此内核的每个 warp 花费 110.1 个周期等待 L1TEX (局部、全局、表面、纹理) 操作的记分牌依赖。找到产生被等待数据的指令以识别罪魁祸首。为了减少等待 L1TEX 数据访问的周期数,请验证内存访问模式是否针对目标架构进行了优化,尝试通过增加数据局部性(合并)来提高缓存命中率,或更改缓存配置。考虑将常用数据移动到共享内存。此停滞类型约占两次指令发出之间总平均 136.4 个周期的 80.7%。
潜在加速: 5.19x
CUPTI:CUDA 分析工具接口
CUPTI 更新
CUPTI (CUDA Profiling Tools Interface) 进行了多项更新,以提升其功能和性能。
* CUDA 设备启动的图支持。
* 支持 WSL2。
* 内存开销和性能改进。
CUPTI 配置示例:
void Profiler::Setup()
{
// Enable CUPTI activities
cuptiActivityEnable(CUPTI_ACTIVITY_KIND_DRIVER);
cuptiActivityEnable(CUPTI_ACTIVITY_KIND_RUNTIME);
cuptiActivityEnable(CUPTI_ACTIVITY_KIND_CONCURRENT_KERNELS);
cuptiActivityEnable(CUPTI_ACTIVITY_KIND_MEMCPY);
cuptiActivityEnable(CUPTI_ACTIVITY_KIND_MEMSET);
// Register callbacks for buffer requested and completed
cuptiActivityRegisterCallbacks(BufferRequested, BufferCompleted);
}
void Profiler::Flush()
{
// Flush activity buffers
cuptiActivityFlushAll();
}
从宏观到微观:全面整合 (From the Macro to the Micro: Putting it all together)
本节展示了一个从宏观(系统级)到微观(硬件级)逐步深入的性能分析方法,通过整合多种工具和视图来全面诊断性能瓶颈。
宏观视图:系统级通信分析
从宏观层面开始,分析MPI通信行为。图像展示了:
* 网络活动概览:热力图显示了不同网络通信器(NC-0, NC-1, NC-2, NC-3)在一段时间内的字节发送和接收情况,以及发送等待时间。
* MPI操作细节:具体到一个MPI_Allcast操作,显示其开始时间(0.104935s)、结束时间(0.165045s,持续109,210 µs)、线程ID(132434)、发送字节数(0)、接收字节数(4)、根节点(0)和通信域(MPI_COMM_WORLD)。
中观视图:CPU活动分析
在系统级通信分析的基础上,进一步深入到CPU层面的活动:
* CPU时间线视图:显示了多个CPU核心(如CPU 0, CPU 1, CPU 8, CPU 123)在不同时间点上的活动,包括CPU周期和指令执行。红线突出显示了特定CPU的繁忙或等待状态。
* 代码级性能分析:展示了与CPU活动相关的代码执行视图,可能用于识别热点函数或代码段。
微观视图:GPU活动分析
在CPU活动分析之后,进一步聚焦到GPU的性能:
* CUDA流与内核执行:展示了CUDA流(Stream 118)中内存操作和多个内核(如_Z6kernelv、launch_bounds、__cuda_memset)的执行情况。
* GPU SM指令与占用率:显示了SM指令、SM发放器、Tensor活跃时间和SM Warp占用率,这些指标有助于评估GPU计算单元的利用效率。
* GPU任务图:展示了GPU上不同计算和数据传输任务的依赖关系和执行流程。
细节视图:GPU工作负载与管道分析
在GPU活动分析的基础上,提供更精细的GPU工作负载和管道分析:
* 内存工作负载分析:对GPU的内存资源进行详细分析,可能包括内存吞吐量、L2缓存命中率、L1TEX全局访问模式等,以识别内存访问瓶颈。
* 管道利用率:显示了计算单元(ALU, FMA)和内存单元的管道利用率,衡量GPU处理单元的效率。例如,ALU为25.0%,FMA为15.0%。
* 采样数据:提供指令(如133, 134, 135, 136, 137, 138行)的采样数据,显示其源模块、地址和具体指令内容,如BAKINC RBP、ISPYP_07 AND P1、ISPYP_07 AND P1等,用于识别微观层的性能瓶颈。
附加资源 (Additional Resources)
GTC开发者工具概览 (Developer Tools Across GTC)
本节列举了在GTC(GPU Technology Conference)上与NVIDIA开发者工具相关的会议、实验和资源:
-
会议 (Sessions)
- S51205: 从宏观到微观 - CUDA开发者工具在任何规模下查找和修复问题。
- S51421: 规模化优化:调查和解决多节点工作负载中的隐藏瓶颈。
- S51882: 在Nsight Compute的源代码页面中更快地编译高性能CUDA内核。
- S51772: 调试CUDA:CUDA正确性工具概述。
- S51230: 使用Nsight开发者工具进行Orin性能构建。
- S52434: Jetson Edge AI开发者日:使用NVIDIA Nsight开发者工具充分利用您的Jetson Orin。
-
实验 (Labs)
- DLITS1143: 使用Nsight性能分析工具高效掌握常见优化模式。
- DLITS1202: 调试和分析CUDA应用程序的正确性。
- DLITS1580: 使用NVIDIA Nsight Graphics和NVIDIA Nsight Systems进行光线追踪开发。
-
联系专家 (Connect with Experts)
- CWES52036: 您的CUDA工具箱中有什么?针对最新架构的CUDA性能分析、优化和调试工具。
- CWES52009: 使用NVIDIA开发者工具优化光线追踪。
-
开发者工具免费提供:包含在最新版本的CUDA Toolkit中。
- 下载链接:
https://developer.nvidia.com/cuda-downloads
- 下载链接:
-
支持可用渠道 (Support is available via):
https://forums.developer.nvidia.com/c/development-tools/
-
更多信息 (More information at):
https://developer.nvidia.com/tools-overview