除了”计算机教育中缺失的一课 IAP 2026“, 我们不推荐将文档中的材料一次性看完。更推荐的方式是在解决问题的同时回顾材料;同时也推荐你将这篇文档直接发给Agent,根据你目前的知识情况总结出学习要点

计算机基础

GPU Centric

🕸️入门

CUDA C++ Best Practices Guide: https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#

新手老手都值得一看的CUDA代码指南,过完完之后能对算子性能和GPU架构有一个基本的认识。

⚔️进阶topic

CPU Centric

硬件

1. 怎么了解

不需要特意了解具体产品型号、协议细节和所有命令参数,先知道一台服务器由什么组成,各个部件怎样连接。

可以使用大语言模型或 Agent 辅助理解概念、解释命令输出和整理资料,但不要直接把其回答直接当作最终结论。

涉及具体型号、兼容性、固件设置和硬件参数时,建议结合当前机器的实际输出、对应设备的官方手册和项目官方文档。

2. 服务器基础架构

2.1 为什么要了解

服务器强调持续运行、可维护性和扩展能力,个人 PC 更强调成本与交互体验。HPC 的性能不只由 CPU 型号决定,还与内存通道是否均衡、数据是否跨 NUMA、设备经过哪条 PCIe 路径有关。

2.2 需要理解什么

2.3 可以做什么

在 Linux 系统中执行:

 lscpu
 lscpu -e
 numactl -H
 numastat
 lspci
 lspci -tv

安装了 hwloc 后还可以执行:

 lstopo

尝试回答:

  1. 机器有几个 Socket?
  2. 每个 Socket 有多少物理核心?
  3. 每个核心有几个硬件线程?
  4. 有几个 NUMA Node?
  5. 每个 NUMA Node 包含哪些 CPU 和内存?
  6. GPU、HCA 和 NVMe 大致位于哪个 CPU 或 NUMA Node 下?

3. BIOS、UEFI 与固件

3.1 为什么要了解

BIOS 和 UEFI 在操作系统启动前初始化 CPU、内存和 PCIe 设备。一些设备识别、虚拟化、驱动加载和性能问题可能与固件设置有关。

不同厂商和平台的菜单名称与行为可能不同,不应把某一台服务器的设置当成所有平台的统一答案。

3.2 需要理解什么

3.3 可以做什么

可以尝试执行:

 test -d /sys/firmware/efi && echo UEFI
 efibootmgr -v
 mokutil --sb-state
 lscpu
 dmidecode -t bios
 dmesg | grep -Ei 'iommu|dmar|amd-vi|secure boot|pcie'

如果你没有 Linux 物理机,也可以直接看看 Windows 计算机的 BIOS 信息

按下 Win + R,输入:

 msinfo32

可以重点查看:

也可以在 PowerShell 中执行:

 Get-CimInstance Win32_BIOS |
     Format-List Manufacturer, SMBIOSBIOSVersion, ReleaseDate
 
 Get-ComputerInfo |
     Select-Object BiosFirmwareType, BiosVersion, BiosReleaseDate,
                   CsManufacturer, CsModel

Windows 任务管理器的CPU页面会显示虚拟化是否启用

如果想观察 BIOS/UEFI 菜单,可以在自己的计算机上进入固件设置界面,看看启动顺序、Secure Boot、虚拟化和性能模式等项目在哪里

试着回答:

  1. 当前计算机使用的是 UEFI 还是传统 BIOS 启动?
  2. Secure Boot 是否开启?它主要解决什么问题?
  3. CPU虚拟化功能是否开启?它与VT-x或AMD-V有什么关系?
  4. 在BIOS/UEFI菜单中能否找到启动顺序、Secure Boot 和虚拟化相关设置?
  5. 能否找到 SMT、性能模式、IOMMU 或 PCIe 拆分等设置?
  6. BIOS 固件、BMC 固件、网卡固件和 SSD 固件是否是同一个东西?

硬件相关