CUDA profiler 配置

CMake 中使用 CUDA

Combining CUDA and Modern CMake

假设有三个源码文件:

  • foo.h 和 foo.cu 是 kernal 函数实现,需要编译成库
  • t.cpp 是 main 函数实现,调用 foo 里面的核函数
cmake_minimum_required(VERSION 3.10)

set(CMAKE_CUDA_ARCHITECTURES "75")
set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")
project(CudaTest LANGUAGES CXX CUDA)

add_library(foo STATIC foo.cu)
target_compile_options(foo PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:--generate-line-info>)
target_compile_features(foo PRIVATE cuda_std_14)

add_executable(t t.cpp)
target_link_libraries(t foo)
target_compile_features(t PRIVATE cxx_std_17)

说明

CUDA 和 CXX 标准也可以用全局生效的方式设置:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED True)

CMAKE_CUDA_ARCHITECTURES 变量如果不设置,可能会报 “Failed to detect a default CUDA architecture” 的错误;CMAKE_CUDA_COMPILER 变量如果不设置,可能会报 “No CMAKE_CUDA_COMPILER could be found” 的错误。不过这两个变量与具体编译环境相关,所以不建议直接在比较规范的 CMakeLists.txt 里面硬编码。

--generate-line-info 这个编译选项是为了让 cuda 编译器生成源码信息,这样 Nsight Compute 才能找到并显示 C++ 源码,否则只能显示汇编代码

Profiler

CUDA 自带两个 profiler 工具,可以很方便地分析程序性能问题,做出针对性地优化:

  • Nsight Systems: 分析 CPU/GPU 各个事件在时间线上的占用情况,用于分析优化程序整体的运行流程,其 CLI 和 GUI 程序分别是 nsys 和 nsys-ui
  • Nsight Compute: 分析 kernal 函数内部执行细节,还能自动给出一些优化建议,其 CLI 和 GUI 程序分别是 ncu 和 ncu-ui

我在用 ncu 的时候遇到过报错:ERR_NVGPUCTRPERM: Permission issue with Performance Counters,虽然报错后面给了如何处理的文档链接,但我根据这个文档并没有解决问题,里面少了一点关键步骤。参考这里这里,永久解决该问题的步骤是:

  1. 执行 (echo 'options nvidia "NVreg_RestrictProfilingToAdminUsers=0"') | sudo tee -a /etc/modprobe.d/RestrictedProfiling.conf >/dev/null
  2. 执行 sudo update-initramfs -u
  3. 重启电脑
  4. 执行 cat /proc/driver/nvidia/params | grep RmProfilingAdminOnly,返回 RmProfilingAdminOnly: 0 则表示问题已解决

具体 profiler 怎么用,可以参考 GPU Series: Hands-On Session with NSight Systems and Compute

<think>好的,用户想在Mac上配置CUDA,我需要先整理相关信息。首先,根据引用[2],MacOS 10.13.6之后NVIDIA不再支持显卡驱动,所以用户必须确认系统版本是否合适。需要提醒用户检查系统是否为10.13.6或更早。接下来,安装步骤分为驱动和CUDA工具包两部分。安装GPU驱动是关键,用户需要到NVIDIA官网下载对应版本的驱动,但可能已经停止支持,需要寻找旧版本或第三方资源。然后是CUDA Toolkit的安装,同样需要旧版本。之后是cuDNN的配置,可能需要注册NVIDIA开发者账户。最后安装PyTorch的GPU版本,需要指定旧版本的兼容性。此外,用户可能遇到兼容性问题,比如现代Mac可能使用Apple Silicon,而CUDA只支持NVIDIA显卡,所以需要确认硬件是否合适。还要注意不同CUDA版本的环境变量切换,如引用[3]提到的切换方法,但Mac可能有所不同。最后要提醒用户验证安装是否成功,运行测试代码检查GPU是否被识别。可能的问题包括系统版本过高、驱动不可用、硬件不兼容等,需要详细说明可能的替代方案,如使用Docker或云服务。</think>### macOS CUDA 安装与配置教程 #### 1. **系统与硬件要求** - **操作系统**:仅支持 **macOS High Sierra 10.13.6 或更早版本**,因NVIDIA后续停止对macOS的驱动支持[^2]。 - **显卡**:必须为NVIDIA显卡(如部分旧款MacBook Pro或iMac),Apple Silicon(M1/M2系列)不兼容CUDA。 - **Python环境**:建议使用`conda`或`virtualenv`管理依赖。 --- #### 2. **安装步骤** ##### **2.1 安装GPU驱动** - 访问[NVIDIA官方驱动下载页面](https://www.nvidia.com/Download/index.aspx),输入显卡型号(如GTX 1080)和系统版本(macOS 10.13.6),下载对应驱动。 - 安装后重启系统,通过终端命令验证驱动状态: ```bash system_profiler SPDisplaysDataType | grep NVIDIA ``` 若显示显卡型号,则驱动安装成功。 ##### **2.2 安装CUDA Toolkit** - 从[NVIDIA CUDA存档](https://developer.nvidia.com/cuda-toolkit-archive)下载 **CUDA 10.2**(或其他支持macOS的旧版本),避免使用已弃用的版本(如Windows的CUDA 10.2不支持,但macOS可能仍有残留支持)[^3]。 - 运行安装包,按提示完成安装。默认路径为`/usr/local/cuda`。 - 配置环境变量(添加到`~/.zshrc`或`~/.bash_profile`): ```bash export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib:$LD_LIBRARY_PATH" ``` ##### **2.3 安装cuDNN** - 注册[NVIDIA开发者账号](https://developer.nvidia.com/),下载与CUDA版本匹配的cuDNN(如CUDA 10.2对应cuDNN 7.6.5)。 - 解压文件并复制到CUDA目录: ```bash tar -xzvf cudnn-10.2-osx-x64-v7.6.5.32.tgz sudo cp cuda/include/* /usr/local/cuda/include/ sudo cp cuda/lib/* /usr/local/cuda/lib/ ``` ##### **2.4 安装PyTorch GPU版本** - 使用`conda`安装旧版PyTorch(需指定CUDA 10.2): ```bash conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch ``` - 验证GPU是否可用: ```python import torch print(torch.cuda.is_available()) # 应输出True ``` --- #### 3. **常见问题与替代方案** - **问题1:系统版本过高(>10.13.6)** *解决方案*:无法直接安装CUDA,可尝试通过虚拟机或Docker容器运行Linux系统以使用CUDA。 - **问题2:NVIDIA驱动不可用** *解决方案*:参考社区维护的驱动补丁(如[NVIDIA Web Driver Updater](https://github.com/Benjamin-Dobell/nvidia-update)),但存在稳定性风险[^2]。 - **问题3:Apple Silicon(M1/M2)兼容性** *替代方案*:使用Apple的Metal框架(`Metal Performance Shaders`)或云GPU服务(如Google Colab)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值