qidao123.com技术社区-IT企服评测·应用市场

标题: Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit [打印本页]

作者: 盛世宏图    时间: 2025-4-27 23:42
标题: Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit
硬件环境

使用一块技嘉 B85m-DS3H 安装 P104-100, CPU是带集成显卡的i5-4690. 先在BIOS中设置好显示设备优先使用集成显卡(IGX). 然后安装P104-100开机. 登入Ubuntu 后检察硬件信息, 检查P104-100是否已经被检测到
  1. # PCI设备
  2. lspci -v | grep -i nvidia
  3. lspci | grep NVIDIA
  4. # 查看显示设备
  5. sudo lshw -C display
复制代码
安装驱动

安装前删除原有的 nvidia 驱动
  1. sudo apt purge 'nvidia-*'
  2. sudo apt autoremove --purge
  3. sudo apt clean
复制代码
驱动有两种安装方式
使用 ubuntu 堆栈的 nvidia 驱动(nvidia开头)
  1. sudo add-apt-repository ppa:graphics-drivers/ppa
  2. sudo apt update
复制代码
列出驱动的各个版本
  1. ubuntu-drivers devices
复制代码
选择必要的版本安装, 例如 对应CUDA12.4是nvidia-driver-550
  1. sudo apt install nvidia-driver-XXX
复制代码
使用 nvidia 的驱动堆栈(cuda开头)

Doc: https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html
先下载对应Ubuntu版本的 cuda-keyring
用dpkg安装, 然后apt update一下
  1. sudo dpkg -i cuda-keyring_1.1-1_all.deb
  2. sudo apt update
复制代码
这时候可以查询到能安装的版本
  1. apt-cache search cuda-drivers-*
复制代码
挑选自己必要的版本安装, 例如 cuda-drivers-550对应CUDA12.4, cuda-drivers-570对应CUDA12.8, 如果直接安装 cuda-drivers, 会默认安装当前稳定版的最高版本
  1. sudo apt install cuda-drivers-550
复制代码
检查驱动安装结果

驱动安装完成后重启, 此时应该就可以直接运行 nvidia-smi 检察显卡信息了.

在桌面环境下, 可以直接检察图形界面 Nvidia X Server Settings
  1. # 查看 NVIDIA 内核模块是否加载
  2. lsmod | grep nvidia
  3. # 查看dmesg日志
  4. dmesg | grep -i nvidia
复制代码
另外可以安装两个有用的小工具 nvtop 和 vulkaninfo
nvtop

nvtop 可以在命令行下以图形化的方式显示显卡当前的运行状态, 比nvidia-smi -l命令更直观好用
  1. # install
  2. sudo apt install nvtop
  3. # usage
  4. nvtop
复制代码

vulkaninfo

vulkaninfo 可以列出当前体系的GPU信息
  1. # install
  2. sudo apt install vulkan-tools
  3. # show GPU info
  4. vulkaninfo --summary
复制代码
使用prime-select切换集成显卡和Nvidia显卡

安装P104-100后, 体系中可以看到同时存在集成显卡 Intel(R) HD Graphics 4600 和 NVIDIA P104-100, 可以通过 prime-select 切换使用的显卡
  1. # 查询, 默认为  on-demand
  2. prime-select query
  3. # 设置为 P104-100
  4. prime-select nvidia
  5. # 设置为集成显卡
  6. prime-select intel
复制代码
Ubuntu 对于 hybrid graphics 的支持很不错, 安装完驱动后, 步伐已经可以自动选择用哪块显卡, 例如运行 minetest, 就会自动选择 P104-100.
性能测试

在Ubuntu下可以通过 Blender 的 Blender Benchmark 检测显卡性能, 网站: https://opendata.blender.org/, 进行测试前会提示要下载800多M的文件.
P104-100的运行结果分数为 58x~59x 之间, 在首页上有CPU和GPU的排行数据, 可以看到 P104-100的性能和 GTX1080, GTX1070Ti 差不多. 作为对比, i5 4690 集成显卡的测试结果分数只有 51.91, 与 P104-100 相比差距明显.

安装 CUDA Toolkit

使用apt安装

在Ubuntu下可以直接用apt安装CUDA toolkit, 但是这样安装后toolkit的路径是分散的, 不在 /usr/local/cuda 下, 有时候会造成困惑, 建议用 Nvida 提供的安装包进行安装
使用Nvidia提供的安装包

从历史版本列表 https://developer.nvidia.com/cuda-toolkit-archive 选择安装对应当前硬件驱动的 CUDA Toolkit. 对应上面安装的 CUDA 版本为12.4, 因此下载 Cuda Toolkit 12.4. 页面会提供三种安装方式 deb(local), deb(network), runfile(local), 新手用户建议使用前两种, 因为runfile 涉及现场编译, 大概率中间过程会报错. deb(local)和deb(network)的区别就是有一个差不多4G大小的文件, 是先下载到本地了再 apt install, 还是先 apt install完在安装过程中从网络下载. 如果网络不是特别好, 网速不是特别快的, 建议使用 deb(local).
这个是界面上提示的安装命令
  1. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
  2. sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
  3. wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
  4. dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
  5. cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
  6. apt update
  7. apt install cuda-toolkit-12-4
复制代码
CUDA的默认安装位置是 /usr/loca/cuda, 安装完成后检查安装结果
  1. /usr/local/cuda/bin/nvcc -V
复制代码
通过这种方式安装的CUDA toolkit 是不会设置用户环境变量的, 必要手动在 .bashrc 里添加一下
  1. export CUDA_HOME=/usr/local/cuda
  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64
  3. export PATH=$PATH:$CUDA_HOME/bin
复制代码
运行 TorchBench

项目地址: https://github.com/pytorch/benchmark
CUDA Device Query
  1. [CUDA Bandwidth Test] - Starting...
  2. Running on...
  3. Device 0: NVIDIA P104-100
  4. Quick Mode
  5. Host to Device Bandwidth, 1 Device(s)
  6. PINNED Memory Transfers
  7.    Transfer Size (Bytes)        Bandwidth(GB/s)
  8.    32000000                        0.4
  9. Device to Host Bandwidth, 1 Device(s)
  10. PINNED Memory Transfers
  11.    Transfer Size (Bytes)        Bandwidth(GB/s)
  12.    32000000                        0.4
  13. Device to Device Bandwidth, 1 Device(s)
  14. PINNED Memory Transfers
  15.    Transfer Size (Bytes)        Bandwidth(GB/s)
  16.    32000000                        284.0
  17. Result = PASS
复制代码
CUDA Device Query
  1. CUDA Device Query (Runtime API) version (CUDART static linking)
  2. Detected 1 CUDA Capable device(s)
  3. Device 0: "NVIDIA P104-100"
  4.   CUDA Driver Version / Runtime Version          12.4 / 12.0
  5.   CUDA Capability Major/Minor version number:    6.1
  6.   Total amount of global memory:                 8109 MBytes (8503230464 bytes)
  7.   (015) Multiprocessors, (128) CUDA Cores/MP:    1920 CUDA Cores
  8.   GPU Max Clock rate:                            1734 MHz (1.73 GHz)
  9.   Memory Clock rate:                             5005 Mhz
  10.   Memory Bus Width:                              256-bit
  11.   L2 Cache Size:                                 2097152 bytes
  12.   Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  13.   Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  14.   Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  15.   Total amount of constant memory:               65536 bytes
  16.   Total amount of shared memory per block:       49152 bytes
  17.   Total shared memory per multiprocessor:        98304 bytes
  18.   Total number of registers available per block: 65536
  19.   Warp size:                                     32
  20.   Maximum number of threads per multiprocessor:  2048
  21.   Maximum number of threads per block:           1024
  22.   Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  23.   Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  24.   Maximum memory pitch:                          2147483647 bytes
  25.   Texture alignment:                             512 bytes
  26.   Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  27.   Run time limit on kernels:                     Yes
  28.   Integrated GPU sharing Host Memory:            No
  29.   Support host page-locked memory mapping:       Yes
  30.   Alignment requirement for Surfaces:            Yes
  31.   Device has ECC support:                        Disabled
  32.   Device supports Unified Addressing (UVA):      Yes
  33.   Device supports Managed Memory:                Yes
  34.   Device supports Compute Preemption:            Yes
  35.   Supports Cooperative Kernel Launch:            Yes
  36.   Supports MultiDevice Co-op Kernel Launch:      Yes
  37.   Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  38.   Compute Mode:
  39.      < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
  40. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.4, CUDA Runtime Version = 12.0, NumDevs = 1
  41. Result = PASS
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4