目录
笔记本 RTX 3080(Laptop)在 Ubuntu 22.04 上装驱动和 CUDA Toolkit,再把 llama.cpp 编成带 CUDA 的版本。
环境
这台机器上跑通时的配置:
- GPU:RTX 3080 Laptop,16GB,整卡功耗墙大约 90W
- CPU:11 代 Intel,8 核 16线程;内存 64GB ECC
- 系统:Ubuntu 22.04
- 驱动:595.71.05(
nvidia-smi里 CUDA Version 显示 13.2) - Toolkit:CUDA 12.4(
nvcc12.4) - 网络:本机 GitHub / NVIDIA 下载走了 HTTP 代理;
apt直连(无代理可忽略)
nvidia-smi 里的 CUDA Version 是驱动支持的上限,不是本机 nvcc 的版本。新驱动可以跑旧 Toolkit,反过来不行,所以这里用 12.4 没问题。
笔记本版 3080 功耗墙比台式机低,编译和推理都跑不满桌面卡的水平,正常。有 Optimus 时确认跑在独显上,必要时 prime-select nvidia。
装驱动
Ubuntu / Debian 可以直接:
bash# 无 HTTP 代理时可忽略下一行
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
sudo apt-get update
sudo ubuntu-drivers autoinstall
sudo reboot
其它发行版从 NVIDIA 驱动下载页面下载对应 .run,先切到多用户模式再装:
bashsudo systemctl isolate multi-user.target sudo sh NVIDIA-Linux-x86_64-*.run sudo reboot
重启后:
bashnvidia-smi
能看到型号和驱动版本就可以。
装 CUDA Toolkit
驱动里没有 nvcc(Toolkit),要从源码编 llama.cpp 得先装 Toolkit。去 CUDA Toolkit Archive 选 12.4 的 runfile:
bash# 无 HTTP 代理时可忽略下一行
export https_proxy=<HTTP_PROXY>; export http_proxy=$https_proxy
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_*.run
sudo sh cuda_12.4.0_*.run
安装界面里驱动可以不勾(已经装过),只留 Toolkit。然后:
bashecho 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
nvcc --version
有 samples 的话可以编一下 deviceQuery,末尾 Result = PASS 就说明 Toolkit 可用:
bashcp -r /usr/local/cuda-12.4/samples ~/cuda-samples
cd ~/cuda-samples/1_Utilities/deviceQuery
make
./deviceQuery
编译时建议用绝对路径指定 nvcc,避免 PATH 里混进别的版本:
bash-DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.4/bin/nvcc
驱动支持的 CUDA 版本要 ≥ Toolkit。
编译 llama.cpp
bash# 无 HTTP 代理时可忽略:apt 前的 unset、以及下面给 git 用的 export
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
sudo apt-get install -y build-essential cmake git
export https_proxy=<HTTP_PROXY>; export http_proxy=$https_proxy
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
mkdir -p build && cd build
cmake .. \
-DGGML_CUDA=ON \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.4/bin/nvcc \
-DCMAKE_CUDA_ARCHITECTURES=86 \
-DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j $(nproc)
-DCMAKE_CUDA_ARCHITECTURES=86 对应 3080(sm_86)。别的卡按算力改,例如 40 系常见是 89/90。笔记本散热一般,并行太多会降频,可以改成 -j 8。
检查:
bash./bin/llama-server --version
真正拉起模型时另开一个终端看显存:
bashwatch -n 1 nvidia-smi
能看到 llama-server 和显存占用,说明 CUDA 后端生效了。
选版本时怎么对
- 先看
nvidia-smi的 CUDA Version,这是上限。 - 按项目要求选不超过上限的 Toolkit。
- 编译用绝对路径的
nvcc。 - 如果只是跑 PyTorch / ComfyUI,通常不用本机 Toolkit,直接装 CUDA wheel 即可,例如:
bashpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
本机在驱动 595 上测过 torch 2.13.0+cu126,cuda.is_available() 为 True。
常见问题
| 现象 | 处理 |
|---|---|
nvcc: command not found | 驱动装了,Toolkit 还没装 |
| 编译报 C++ / API 相关错误 | 确认用的是 12.4 的 nvcc,并写绝对路径 |
CUDA version insufficient | Toolkit 比驱动新,降 Toolkit 或升驱动 |
libcudart.so.x not found | 把 /usr/local/cuda-12.4/lib64 加进 LD_LIBRARY_PATH |
| 编译中途卡死、重启 | 把 -j 降下来,注意散热 |
apt 卡住 | unset 掉代理再装 |
| GitHub / NVIDIA 下不动 | 给这些下载开 <HTTP_PROXY>(无代理则可忽略,多半是网络本身问题) |
零散命令:
bashnvidia-smi
nvcc --version
nvidia-smi -q | grep -i 'product name'
watch -n1 nvidia-smi
从头到尾的命令
bash# 无 HTTP 代理时可忽略所有 unset / export …proxy
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
sudo apt-get update
sudo ubuntu-drivers autoinstall
sudo reboot
# 重启之后继续
sudo apt-get install -y build-essential cmake git
export https_proxy=<HTTP_PROXY>; export http_proxy=$https_proxy
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_*.run
sudo sh cuda_12.4.0_*.run
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
nvcc --version
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp && mkdir -p build && cd build
cmake .. -DGGML_CUDA=ON \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.4/bin/nvcc \
-DCMAKE_CUDA_ARCHITECTURES=86 -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j $(nproc)
./bin/llama-server --version
ai协作,人工编辑