温馨提示×

ubuntu怎样用c++调显卡

小樊
47
2026-09-26 14:56:31
栏目: 编程语言

在 Ubuntu 上用 C++ 调用显卡(GPU),常见有几种方式,取决于你是想做 通用计算(GPGPU) 还是 图形渲染。下面按“从最常见到较底层”给你一个清晰路线图。


一、最常见:用 CUDA(NVIDIA 显卡)

如果你用的是 NVIDIA 显卡,这是最成熟、最常用的方式。

1. 安装 CUDA 工具包

sudo apt update
sudo apt install nvidia-cuda-toolkit

验证:

nvcc --version

2. 简单 CUDA C++ 示例

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

✅ 适合:深度学习、科学计算、并行计算


二、跨平台:OpenCL(NVIDIA / AMD / Intel)

如果你不想绑定 NVIDIA,用 OpenCL。

1. 安装 OpenCL

sudo apt install ocl-icd-opencl-dev

2. C++ 调用流程(简化)

  • 获取 Platform / Device
  • 创建 Context
  • 编译 kernel(类似 CUDA)
  • 执行

示例(核心片段):

cl::Platform platform;
cl::Device device;
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
platforms[0].getDevices(CL_DEVICE_TYPE_GPU, &devices);

✅ 适合:跨厂商 GPU 程序


三、现代 C++:SYCL(Intel / NVIDIA / AMD)

SYCL 是 基于 OpenCL 的高层封装,写起来像普通 C++。

常用实现:

  • Intel oneAPI DPC++
  • AdaptiveCpp(原 hipSYCL)

示例:

q.parallel_for(range, [=](auto i){
    data[i] *= 2;
});

✅ 适合:不想写底层 kernel 的人


四、AMD 显卡:ROCm / HIP

如果你用的是 AMD GPU:

sudo apt install rocm-dkms

HIP 语法几乎和 CUDA 一样:

hipLaunchKernelGGL(kernel, dim3(1), dim3(1), 0, 0);

✅ 适合:AMD 用户,CUDA 迁移成本低


五、图形渲染:OpenGL / Vulkan(C++)

如果你是 画图形,不是算数据:

  • OpenGL + GLFW + GLAD
  • Vulkan(更底层、性能更高)

示例方向:

glClear(GL_COLOR_BUFFER_BIT);

✅ 适合:游戏、可视化、3D 渲染


六、选择建议(快速对照)

需求 推荐
NVIDIA 计算 CUDA
跨平台计算 OpenCL / SYCL
AMD 计算 ROCm / HIP
图形渲染 OpenGL / Vulkan
不想写 kernel SYCL

七、我可以进一步帮你

你可以告诉我:

  1. 显卡型号(NVIDIA / AMD / Intel)
  2. 用途(深度学习 / 数值计算 / 游戏 / 渲染)
  3. 是否要求跨平台

我可以直接给你 可编译的 Ubuntu C++ 示例工程。

0 踩