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.