nvcc命令¶
nvcc
(NVIDIA CUDA Compiler)是 NVIDIA 提供的 CUDA 程序编译器,用于将包含 CUDA C/C++ 扩展的代码编译成可在 GPU 上运行的二进制文件。它是开发 CUDA 程序的核心工具之一,支持将
.cu
文件编译为支持 GPU 并行计算的程序。
基本使用¶
🎯 核心作用¶
编译
.cu
CUDA 源代码生成 CPU 和 GPU 混合执行代码
调用底层的
gcc/g++
和 NVIDIA 的 PTX 编译器支持设备(GPU)代码与主机(CPU)代码的无缝集成
安装¶
通常随 CUDA Toolkit 安装路径提供,例如:
/usr/local/cuda/bin/nvcc
安装:
sudo apt install nvidia-cuda-toolkit
export PATH=/usr/local/cuda/bin:$PATH
可通过命令查看版本:
nvcc --version
📋 常用参数¶
命令示例 |
功能说明 |
---|---|
|
编译 CUDA 程序 |
|
指定目标架构(如 Ampere) |
|
仅编译为目标文件 |
|
生成 PTX 汇编代码 |
|
传递参数给 host 端编译器 |
|
查看所有选项 |
🧠 编译流程(简化)¶
预处理
.cu
文件将 CPU 代码交给
gcc
处理将 GPU 代码交给 NVIDIA 编译器生成 PTX 或 SASS
链接生成最终可执行文件
✅ 使用场景¶
GPU 并行计算加速
开发深度学习底层 CUDA 核函数
性能优化场景,如图像处理、物理仿真等
⚠️ 注意事项¶
nvcc
编译的是 CUDA 源码,不适合编译纯 C++ 程序需搭配 NVIDIA GPU 驱动 + CUDA Toolkit 环境
与 CMake 配合时需配置
FindCUDA
或CMakeLists.txt
📎 相关命令/工具¶
工具 |
功能 |
---|---|
|
查看 GPU 状态、驱动是否安装 |
|
GPU 代码调试工具 |
|
检查 GPU 内存泄漏/访问越界 |
|
CUDA 代码性能分析 |
🧪 示例代码¶
Hello CUDA¶
// hello.cu
#include <iostream>
__global__ void hello_from_gpu() {
printf("Hello from GPU!\n");
}
int main() {
hello_from_gpu<<<1, 1>>>();
cudaDeviceSynchronize();
return 0;
}
🔧 编译
nvcc hello.cu -o hello
./hello
示例:¶
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
分析:
nvcc: NVIDIA (R) Cuda compiler driver
这表明 nvcc 是 NVIDIA 提供的 CUDA 编译器驱动。
nvcc(NVIDIA CUDA Compiler)是用于编译 CUDA 代码的工具,能够将 CUDA C/C++ 代码编译成适用于 GPU 的代码。
Cuda compilation tools, release 10.1, V10.1.243
CUDA 编译工具的版本信息。
release 10.1 表示 CUDA 工具包的发行版本是 10.1,
V10.1.243 表示具体的版本号是 10.1.243。