Sequence 05 - 平台环境搭建:CUDA / macOS / ARM / ROCm / Vulkan / WebGPU
Top

Sequence 05 - 平台环境搭建:CUDA / macOS / ARM / ROCm / Vulkan / WebGPU

这一章单独解决“怎么从零搭建学习环境”。主线仍然是 NVIDIA/CUDA,其他平台是迁移理解和备用学习。

1. 环境总图

flowchart TB
    Machine[你的机器/平台] --> Win[Windows + NVIDIA GPU]
    Machine --> WSL[WSL2 Ubuntu + NVIDIA GPU]
    Machine --> Mac[macOS Apple Silicon]
    Machine --> ARM[ARM Linux / Jetson / Grace-like environment]
    Machine --> AMD[AMD ROCm]
    Machine --> Web[Vulkan / WebGPU]

    Win --> CUDAWin[CUDA Toolkit / Nsight GUI]
    WSL --> CUDALinux[CUDA CLI / vLLM / NCCL / UCX]
    Mac --> Metal[Metal / MPS / PyTorch MPS]
    ARM --> ARMDev[Cross compile / Jetson style learning]
    AMD --> ROCm[ROCm / HIP / RCCL]
    Web --> Portable[Vulkan SDK / WebGPU browser]

2. NVIDIA CUDA 主线:Windows 原生

适合:

  • CUDA C++ 小实验。
  • Nsight Systems / Nsight Compute GUI。
  • 快速验证 GPU memory、kernel、copy。

检查命令:

nvidia-smi
nvcc --version
where nsys
where ncu
python --version

你要记录:

GPU model:
Driver version:
CUDA version:
Nsight Systems available:
Nsight Compute available:

学习目标:

工具 用来学什么
nvcc 编译 CUDA C++。
nvidia-smi 看 GPU、显存、driver、利用率。
Nsight Systems 看 CPU/GPU timeline、memcpy、kernel、sync。
Nsight Compute 看单 kernel 的 memory/occupancy/stall。

3. NVIDIA CUDA 主线:WSL2 Ubuntu

适合:

  • vLLM/Python benchmark。
  • NCCL/UCX Linux 工具。
  • 更接近 AI infra 的 Linux workflow。

检查命令:

nvidia-smi
python3 --version
gcc --version
nvcc --version || true

基础包:

sudo apt update
sudo apt install -y build-essential git cmake python3-venv python3-pip

学习目标:

内容 工具
LLM serving Python venv + vLLM
NCCL benchmark nccl-tests
UCX 能力检查 ucx_info, ucx_perftest
Profiling CLI nsys, ncu

4. macOS Apple Silicon

macOS 不是 NVIDIA 面试主线,但可以帮助你理解 GPU computing 的共性。

4.1 Metal

安装:

xcode-select --install
xcodebuild -version

学习内容:

Metal 概念 CUDA 类比
command queue CUDA stream
command buffer queued GPU work
compute kernel CUDA kernel
threadgroup memory shared memory
device memory global memory

4.2 MPS / PyTorch MPS

安装:

python3 -m venv .venv
source .venv/bin/activate
pip install torch torchvision torchaudio

验证:

import torch
print(torch.backends.mps.is_available())
x = torch.randn(1024, 1024, device="mps")
y = x @ x
print(y.shape)

能学什么:

  • GPU tensor execution。
  • CPU/GPU data transfer。
  • device placement。
  • 简单 profiling。

不能代替什么:

  • 不能代替 CUDA/NCCL/UCX/GPUDirect。

5. ARM / Jetson / Edge AI 学习

ARM 环境适合理解 edge deployment、功耗、交叉编译和平台约束。

flowchart LR
    Model[Model] --> Optimize[TensorRT / Quantization]
    Optimize --> Edge[ARM/Jetson Device]
    Edge --> Sensor[Camera/Sensor Input]
    Sensor --> Inference[Low-latency Inference]
    Inference --> Output[Action/Decision]

学习内容:

主题 目的
cross compile 理解 x86 开发、ARM 部署。
TensorRT 模型部署优化。
memory constraint edge device 显存/内存限制。
latency/power 和 data center throughput 不同的优化目标。

如果没有 Jetson:

只需要理解部署约束,不需要强行搭环境。
面试这个 JD 的主线不是 Jetson,而是 AI data center networking。

6. AMD ROCm / HIP

适合对照 CUDA。

CUDA ROCm/HIP
CUDA kernel HIP kernel
CUDA stream HIP stream
Nsight rocprof
NCCL RCCL
CUDA global memory HIP global memory

Linux 检查:

rocminfo
hipcc --version

Windows HIP SDK:

hipcc --version

注意:

ROCm 不是 NVIDIA JD 主线。
只用于说明你理解 GPU programming model 的迁移。

7. Vulkan / WebGPU

这是你 CV 里已有经验的迁移桥。

flowchart TB
    Vulkan[Vulkan/WebGPU Experience] --> GPUModel[GPU execution model]
    Vulkan --> Profile[RenderDoc/Nsight profiling]
    Vulkan --> Memory[Buffer/texture/resource memory]
    Vulkan --> Async[Command queue/buffer]
    GPUModel --> CUDA[CUDA mental model]
    Profile --> CUDA
    Memory --> CUDA
    Async --> CUDA

面试说法:

My hands-on GPU experience is primarily Vulkan/WebGPU rather than CUDA production kernel ownership. I use it as transferable experience for GPU workload analysis, memory/resource behavior, profiling timelines, and bottleneck isolation. For this role, I validate NVIDIA-specific behavior with CUDA and Nsight.

Top