在 Ubuntu 上用 C++ 调用显卡(GPU),常见有几种方式,取决于你是想做 通用计算(GPGPU) 还是 图形渲染。下面按“从最常见到较底层”给你一个清晰路线图。
如果你用的是 NVIDIA 显卡,这是最成熟、最常用的方式。
sudo apt update
sudo apt install nvidia-cuda-toolkit
验证:
nvcc --version
hello.cu
#include <iostream>
__global__ void kernel() {
printf("Hello from GPU!\n");
}
int main() {
kernel<<<1, 1>>>();
cudaDeviceSynchronize();
return 0;
}
编译:
nvcc hello.cu -o hello
./hello
✅ 适合:深度学习、科学计算、并行计算
如果你不想绑定 NVIDIA,用 OpenCL。
sudo apt install ocl-icd-opencl-dev
示例(核心片段):
cl::Platform platform;
cl::Device device;
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
platforms[0].getDevices(CL_DEVICE_TYPE_GPU, &devices);
✅ 适合:跨厂商 GPU 程序
SYCL 是 基于 OpenCL 的高层封装,写起来像普通 C++。
常用实现:
示例:
q.parallel_for(range, [=](auto i){
data[i] *= 2;
});
✅ 适合:不想写底层 kernel 的人
如果你用的是 AMD GPU:
sudo apt install rocm-dkms
HIP 语法几乎和 CUDA 一样:
hipLaunchKernelGGL(kernel, dim3(1), dim3(1), 0, 0);
✅ 适合:AMD 用户,CUDA 迁移成本低
如果你是 画图形,不是算数据:
示例方向:
glClear(GL_COLOR_BUFFER_BIT);
✅ 适合:游戏、可视化、3D 渲染
| 需求 | 推荐 |
|---|---|
| NVIDIA 计算 | CUDA |
| 跨平台计算 | OpenCL / SYCL |
| AMD 计算 | ROCm / HIP |
| 图形渲染 | OpenGL / Vulkan |
| 不想写 kernel | SYCL |
你可以告诉我:
我可以直接给你 可编译的 Ubuntu C++ 示例工程。