CUDA 学习(1)——GPU 架构
典型 CPU 架构与 GPU 架构对比:
- 上图中绿色部分是计算单元,GPU 有更多的计算核心,计算能力更强。
- 黄色部分是控制单元,CPU 中有大量的控制单元,现代 CPU 的晶体管越来越复杂,除了计算,还要实现乱序执行、分支预测、高速缓存等功能;而 GPU 中控制单元很少,GPU 专门用于并行计算。
深度学习中存在大量矩阵运算都可以并行执行,GPU 非常适合对这类高度并行性的任务进行计算加速。
NVIDIA 每隔几年都会有新的 GPU 架构,并且这些 GPU 架构都以著名物理学家的名字命名。这些更新主要是增加硬件单元的数量,组成结构基本没有变化。
1 Tesla架构(2006-2008)
- 代表芯片:G80、GT200
- 核心改进:
- 首个支持 CUDA 编程模型的 GPU 架构。
- 引入统一着色器设计(Unified Shader),支持通用计算。
- 单精度浮点(FP32)计算能力初具规模。
- 应用场景:科学计算、早期 GPGPU 应用。
2006 年英伟达提出 G80 架构,使开发者可以基于 C 语言在 GPU 上进行开发。2008 年基于 G80 架构提出 GT200,增加了流处理器核的数量,更高的精度和并行能力使 GPU 进行科学计算和高性能计算成为可能。
2 Fermi架构(2010)
- 代表芯片:GF100(Tesla M2050)
- 关键特性:
- SM(Streaming Multiprocessor)2.0:每组 SM 含 32 个 CUDA 核心,支持并发内核执行。
- ECC内存:提升计算可靠性。
- 首次支持双精度(FP64),FP64 性能为 FP32 的 1/2。
- 性能提升:相比 Tesla,FP32 性能提升 8 倍。
Fermi架构白皮书
2010 年英伟达提出 Feimi 架构,最大可支持 16 个 SMs,每个 SM 有 32 个 CUDA Core,一共 512 个 CUDA Core,架构设计主要是以当时游戏用户的需求为主,因此整个 GPU 有多个 GPC(图形处理簇),单个 GPC 包含一个光栅引擎(Raster Engine)和 4 个 SM。
GPU 拥有 6 个 64 位内存分区,总共是 384 位内存,最多支持 6 GB GDDR5 DRAM 内存。主机接口通过 PCI-Express 连接 GPU 和 CPU。GigaThread 全局调度器将线程块分配给 SM 线程调度器。因为计算核心较多,因此将 L2 Cache 放在处理器中间位置,使得数据可以在 CUDA Core 之间快速传输。
Fermi 架构采用第三代流处理器,每个 SM 有 16 个加载/存储单元(Load/Store, LD/ST),允许为每个时钟 16 个线程计算源地址和目标地址,支持将每个地址的数据加载并存储到缓存或 DRAM 中。特殊功能单元(Special Function Unit, SFU)执行超越函数,如 sin
、cos
、导数和平方根。每个 SFU 在每个线程、每个时钟执行一条指令,一次 warp(由 32 个线程组成的线程组)要经过 8 个时钟周期。SFU 管线与调度单元解耦,允许调度单元在占用 SFU 时向其他执行单元发出命令。
双精度算法是高性能计算应用的核心,每个 SM、每个时钟可执行多达 16 个双精度融合乘加运算。
每个 SM 有两个 warp 调度器和两个指令调度单元,允许同时发出和执行两个 warp。并行计算主要在 CUDA 中进行处理,每个 CUDA 处理器都有一个完整的流水线整数算术逻辑单元(ALU)和浮点单元(FPU),可以选择 FP 32 或者 INT 8 执行计算,但是 FP Unit 和 INT Unit 的执行不是并行的。
Fermi 架构支持新的并行线程执行 PTX 2.0(Parallel Thread Execution)指令集架构。
一个 CUDA 程序被称作并行的 Kernel,线程分为三级,包含线程(Threads)、块(Blocks)和网格(Grid),每个层次结构对应硬件,Thread 可以共享局部内存(Local memory),线程块使用共享内存(Shared Memory),Grid 共享全局内存(Global Memory),具有相应的每个线程专用、每个块共享和每个应用程序全局内存空间。
3 Kepler架构(2012)
- 代表芯片:GK110(Tesla K80)、GK210
- 关键特性:
- SMX 设计:每组 SM 含 192 个 CUDA 核心,支持动态并行(Dynamic Parallelism)。
- Hyper-Q:多 CPU 核心可同时向 GPU 提交任务。
- GPU Boost:动态调整核心频率。
- 能效比:相比 Fermi 提升 3 倍。
Kepler架构第二代白皮书
2012 年英伟达提出 Kepler 架构,由 7.1 亿个晶体管组成的 Kepler GK110 将提供超过 1 TFlop 的双精度吞吐量,采用台积电 28 nm 制程,每瓦的性能是费米架构的 3 倍。由 15 个 SMX 单元和 6 个 64 bit 内存控制器,内存子系统提供额外的缓存功能,在每个层次结构的存储器有更大的带宽,实现更快的 DRAM I/O,同时为编程模型提供硬件支持。
开普勒架构相比上一代 Fermi 架构,SM(Streaming Multiprocessor)更名为 SMX,但是本身的概念没有改变,每个 SMX 具有四个 warp 调度器和八个指令调度单元,允许同时发出和执行四个 warp。Fermi 架构共有 32 核,Kepler 架构拥有 192 核,大大提升了 GPU 并行处理的能力。Fermi 支持最大线程数是 1536,Kepler 最大线程数达到 2048。64 个双精度(Double-Precision,DP)单元,32 特殊功能单元(SFU)和 32 个 LD/ST(load/store)单元,满足高性能计算场景的实际需求。
Kepler 架构支持动态并行(Dynnamic Parallelism),在不需要 CPU 支持的情况下自动同步,在程序执行过程中灵活动态地提供并行数量和形式。Hyper-Q 使多个 CPU 核使用单个 GPU 执行工作,提高 GPU 利用率并显着减少 CPU 空闲时间,允许 32 个同时进行的硬件管理连接,允许从多个 CUDA 流处理,多个消息传递进程中分离出单个进程。使用网格管理单元(Grid Management Unit,GMU)启用动态并行和调度控制,比如挂起或暂停网格和队列直到执行的环境准备好。
英伟达 GPU Direct 可以使单个计算机内的 GPU 或位于网络上不同服务器中的 GPU 直接交换数据,而无需转到 CPU 系统内存,RDMA 特性允许第三方设备直接访问同一系统内多个 GPU 上的内存,减少了对系统内存带宽的需求,释放 GPU DMA 引擎供其它 CUDA 任务使用。
4 Maxwell架构(2014)
- 代表芯片:GM204(GTX 980)、GM200(Titan X)
- 关键特性:
- SMM(Maxwell SM):每组 SM 分割为 4 个独立单元,提升指令调度效率。
- Voxel 全局光照:针对性优化图形渲染。
- 16nm FinFET 工艺(后期型号):功耗降低。
- 能效比:相比 Kepler 提升 2 倍。
GTX-750-Ti 白皮书
2014 年英伟达提出 Maxwell 架构,麦克斯韦架构相比上一代架构没有太大改进,其中 SM 又使用了原来的名称,整体的核心个数变为 128 个,因为核心数不需要太多,可以通过超配线程数来提升 GPU 并行计算的能力。
SMM 使用基于象限的设计,其中每个 SMM 有四个共 32 核处理块,每个处理块都有一个专用的 warp 调度器,能够在每个时钟调度两条指令。每个 SMM 提供 8 个纹理单元,一个图形的几何处理引擎,以及专用的寄存器文件(Register File)和共享内存(Shared Memory)。单核性能是 Kepler 架构的 1.35 倍,performance/watt(性能与功耗的比率)是 Kepler 架构的两倍。
对比 Kepler 和 Maxwell 架构,Maxwell 架构拥有更大的专用共享内存,通过将共享内存与 L1 缓存分离,在每个 SMM 中提供专用的 64KB 共享内存,GM204 Maxwell 每个 SMM 的专用共享内存提高到 96KB。和 Kepler 和 Fermi 架构一样,每个线程块的最大共享内存仍然是 48KB。GM204 Maxwell 具有更大的二级缓存(L2 Cache),GK104 Kepler 的四倍,带宽受限的应用程序可以获得更大的性能优势。每个 SM 有更多活动线程块(Thread Blocks),从 16 增加到 32 有助于提高运行在小线程块上的内核使用率。可以对 32 位整数的本机共享内存进行原子操作,使线程块上的列表和栈类型数据更高效,和 Kepler 一样支持动态并行。
5 Pascal架构(2016)
- 代表芯片:GP100(Tesla P100)、GP102(GTX 1080 Ti)
- 关键特性:
- NVLink 高速互联:多 GPU 带宽提升至 80GB/s。
- 混合精度计算:支持 FP16(半精度),适合深度学习推理。
- HBM2 显存(P100):带宽达 732GB/s。
- 性能:FP16 算力达 21 TFLOPS(P100)。
Pascal架构 P100 白皮书
2016 年英伟达提出 Pascal 架构,相比之前的架构,Pascal 帕斯卡架构在应用场景、内存带宽和制程工艺等多个方面做出了创新。将系统内存 GDDR5 换成 HBM2,能够在更高的带宽下处理更大的工作数据集,提高效率和计算吞吐量,并减少从系统内存传输的频率,而且 HBM2 原生支持数据纠错(Error correcting Code, ECC)。采用 16nm FinFET 工艺,拥有 15.3 亿个晶体管,相同功耗下算力提升提升一个数量级。同时提出第一代 NVLink,提升单机卡间通信之外扩展多机之间的带宽。支持统一内存,允许在 GPU 和 CPU 的完整虚拟地址空间之间透明迁移数据,降低了并行编程的门槛。支持计算抢占和针对 Pascal 架构优化的 AI 算法,可应用于高性能计算、深度学习和 GPU 计算密集型领域。
GP100 Pascal 由图形处理集群(GPCs)、纹理处理集群(TPCs)、流式多处理器(SMs)和内存控制器组成。一个完整的 GP100 由 6 个 GPCs、60 个 Pascal SMs、30 个 TPCs(每个都包括 2 个 SMs)和 8 个 512 位内存控制器(总共 4096 位)组成。每个 GPC 都有 10 个 SMs,每个 SM 有 64 个 CUDA 核和 4 个纹理单元,拥有 60 个 SMs,共有 3840 个单精度 CUDA Cores 和 240 个纹理单元。每个内存控制器都连接到 512 KB 的 L2 高速缓存上,每个 HBM2 DRAM 都由一对内存控制器控制,总共包含 4096 KB L2 高速缓存。
Pascal 架构在 SM 内部作了进一步精简,整体思路是 SM 内部包含的硬件单元类别减少,因为芯片制程工艺的进步,SM 数量每一代都在增加。单个 SM 只有 64 个 FP32 CUDA Cores,相比 Maxwell 的 128 核和 Kepler 的 192 核,数量少了很多,并且 64 个 CUDA Cores 分为了两个区块,每个处理块有 32 个单精度 CUDA Cores、一个指令缓冲区、一个 Warp 调度器和两个调度单元(Dispatch Unit)。分成两个区块之后,Register File 保持相同大小,每个线程可以使用更多的寄存器,单个 SM 可以并发更多的 thread/warp/block,进一步增加并行处理能力。
增加 32 个 FP64 CUDA Cores(DP Unit),FP32 CUDA Core 具备处理 FP16 的能力。此外,每个 SM 具有 32 个双精度(FP64)CUDA Cores,使得 GPU 更有效地处理双精度计算任务。与精度更高的 FP32 或 FP64 相比,存储 FP16 数据可以减少神经网络的内存使用,从而允许训练和部署更大的网络。为加速深度学习支持 FP16,与 FP32 相比可以提高 2 倍性能,同时数据传输需要的时间更少。
由于多机之间采用 InfiniBand 和 100 GB Ethernet 通信,单个机器内单 GPU 到单机 8 GPU,PCIe 带宽成为瓶颈,因此 Pascal 架构首次提出 NVLink,针对多 GPU 和 GPU-to-CPU 实现高带宽连接。NVLink 用以单机内多 GPU 内的点对点通信,带宽达到 160 GB/s,大约是 PCIe 3x16 的 5 倍,减少数据传输的延迟,避免大量数据通过 PCIe 回传到 CPU 的内存中,导致数据重复搬运,实现 GPU 整个网络的拓扑互联。在实际训练大模型的过程中,带宽会成为分布式训练系统的主要瓶颈,从而使得 NVLink 成为一项具有重要意义的创新。
6 Volta架构(2017)
- 代表芯片:GV100(Tesla V100)
- 革命性技术:
- Tensor Core:专为矩阵运算设计,支持混合精度(FP16/FP32)。
- 独立线程调度:SIMT 模型升级,支持细粒度并行。
- HBM2+ 显存:带宽提升至 900GB/s(V100)。
- 性能:深度学习训练速度比 Pascal 快 5 倍。
Volta架构 V100白皮书
2017 年英伟达提出 Volta 架构,GV100 GPU 有 21.1 亿个晶体管,使用 TSMC 12 nm 工艺。伏特架构做了以下创新:
- CUDA Core 拆分,分离 FPU 和 ALU,取消 CUDA Core 整体的硬件概念,一条指令可以同时执行不同计算,同时对 CUDA 应用程序并行线程更进一步,提高了 CUDA 平台的灵活性、生产力和可移植性;
- 提出独立线程调度,改进单指令多线程 SIMT 模型架构,使得每个线程都有独立的 PC(Program Counter)和 Stack,程序中并行线程之间更细粒度的同步和协作;
- 专门为深度学习优化了 SM 架构,针对 AI 计算首次提出第一代张量核心 Tersor Core,提高深度学习计算中卷积运算进行加速;
- 对 NVLink 进行改进,提出第二代 NVLink,一个 GPU 可以连接 6 个 NVLink,而不是 Pascal 时代的 4 个,16 GB HBM2 内存子系统提供了 900GB/秒的峰值内存带宽;
- 提出 MPS 概念,在多个应用程序单独未充分利用 GPU 执行资源时,允许多个应用程序同时共享 GPU 执行资源,使得多进程服务可以更好的适配到云厂商进行多用户租赁,客户端数量从 Pascal 上的 16 个增加到 Volta 上的 48 个,支持多个单独的推理任务并发地提交给 GPU,提高 GPU 的总体利用率;
- 结合 Volta 架构新特性优化 GPU 加速库版本,如 cuDNN、cuBLAS 和 TensorRT,为深度学习推理和高性能计算(HPC)应用程序提供更高的性能。英伟达 CUDA 9.0 版本提供了新的 API 支持 Volta 特性,更简单的可编程性。英伟达 TensorRT 是一款用于高性能深度学习推理的 SDK,包含深度学习推理优化器和运行时,可为推理应用程序提供低延迟和高吞吐量。
与上一代 Pascal GP100 GPU 一样,GV100 GPU 有 6 个 GPU 处理集群(GPCs),每个 GPC 有 7 个纹理处理集群(TPCs)、14 个流式多处理器(SMs),以及内存控制器。
Volta 伏特架构 SM 结构相比前几代架构,SM 的数目明显增多,SM 被划分为四个处理块,单个 SM 中包含 4 个 Warp Schedule,4 个 Dispatch Unit,64 个 FP32 Core(416),64 个 INT32 Core(416),32 个 FP64 Core(48),8 个 Tensor Core(42),32 个 LD/ST Unit(4*8),4 个 SFU,FP32 和 INT32 两组运算单元独立出现在流水线中,每个 Cycle 都可以同时执行 FP32 和 INT32 指令,因此每个时钟周期可以执行的计算量更大。Volt 架构新增了混合精度张量核心(Tensor Core)以及高性能 L1 数据缓存和新的 SIMT 线程模型。单个 SM 通过共享内存和 L1 资源的合并,相比 GP100 64 KB 的共享内存容量,Volta 架构增加到 96KB。
新的张量核心使 Volta 架构得以训练大型神经网络,GPU 并行模式可以实现深度学习功能的通用计算,最常见卷积/矩阵乘(Conv/GEMM)操作,依旧被编码成融合乘加运算 FMA(Fused Multiply Add),硬件层面还是需要把数据按照:寄存器-ALU-寄存器-ALU-寄存器方式来回来回搬运数据,因此专门设计 Tensor Core 实现矩阵乘计算。
英伟达计算硬件模型从 SIMT 发展成为了 SIMT+DSA 的混合,每个张量核心单时钟周期内执行 64 个浮点 FMA 操作,而 SM 中的 8 个张量核心单时钟周期总共执行 512 个 FMA 操作(或 1024 个单独的浮点操作)。每个张量核心在一个 4x4 矩阵上操作,并执行计算:D=A×B+CD=A×B+C,输入 A 和 B 矩阵是 FP16,而计算结果矩阵 C 和 D 可以是 FP16 或 FP32 矩阵,极大地减少了系统内存的开销,一个时钟周期内可以执行更多的矩阵运算,使得 GPU 在能耗上更有优势。CUDA 9 C++ API 有专门的矩阵乘和存储操作,有效地使用 CUDA-C++ 程序中的张量核心,同时 cuBLAS 和 cuDNN 库利用张量核进行深度学习研究。
英伟达伏特架构的 GPU 以 Tesla V100 Powered DGX Station 的形式对外出售工作站。此时不再使用 PCIe 连接 GPU,而是将多个 GPU 直接封装在同一块主板上,第二代 NVLink 每个连接提供双向各自 25 GB/s 的带宽,并且一个 GPU 可以接 6 个 NVLink,专门用于 GPU-GPU 通信,同时允许从 CPU 直接加载/存储/原子访问到每个 GPU 的 HBM2 内存。
此外,NVSwitch1.0 技术是 Volta 架构中的一项重要创新,旨在提高 GPU 之间的通信效率和性能。NVSwitch1.0 可以支持多达 16 个 GPU 之间的通信,可以实现 GPU 之间的高速数据传输,提高系统的整体性能和效率,适用于需要大规模并行计算的场景,比如人工智能训练和科学计算等领域。
7 Turing架构(2018)
- 代表芯片:TU102(RTX 2080 Ti)、TU104(Quadro RTX 6000)
- 关键特性:
- RT Core:硬件级光线追踪加速。
- 第二代 Tensor Core:支持 INT8/INT4 量化推理。
- GDDR6 显存:带宽达 672GB/s。
- 应用场景:实时光追(游戏)、AI推理。
Turing架构白皮书
2018 年 Turing 图灵架构发布,采用 TSMC 12 nm 工艺,总共 18.6 亿个晶体管。
在 PC 游戏、专业图形应用程序和深度学习推理方面,效率和性能都取得了重大进步。相比上一代 Volta 架构主要更新了 Tensor Core(专门为执行张量/矩阵操作而设计的专门执行单元,深度学习计算核心)、CUDA 和 CuDNN 库的不断改进,更好地应用于深度学习推理。
RT Core(Ray Tracing Core)提供实时的光线跟踪渲染,包括具有物理上精确的投影、反射和折射,更逼真的渲染物体和环境。支持 GDDR6 内存,与 GDDR5 内存相比,拥有 14 Gbps 传输速率,实现了 20% 的的效率提升。NVLink2.0 支持 100 GB/s 双向带宽,使特定的工作负载能够有效地跨两个 GPU 进行分割并共享内存。
TU102 GPU 包括 6 个图形处理集群(GPCs)、36 个纹理处理集群(TPCs)和 72 个流式多处理器(SMs)。每个 GPC 包括一个专用光栅引擎和 6 个 TPC,每个 TPC 包括两个 SMs。每个 SM 包含 64 个 CUDA 核心、8 个张量核心、一个 256 KB 的寄存器文件、4 个纹理单元和 96 KB 的 L1/共享内存,这些内存可以根据计算或图形工作负载配置为不同的容量。总共有 4608 个 CUDA 核心、72 个 RT 核心、576 个张量核心、288 纹理单元和 12 个 32 位 GDDR6 内存控制器(总共 384 位)。
随着神经网络模型的量化部署逐渐成熟,Turing 架构中的 Tensor Core(张量核心)增加了对 INT8/INT4/Binary 的支持,加速神经网络训练和推理函数的矩阵乘法核心。
一个 TU102 GPU 包含 576 个张量核心,每个张量核心可以使用 FP16 输入在每个时钟执行多达 64 个浮点融合乘法加法(FMA)操作。SM 中 8 个张量核心在每个时钟中总共执行 512 次 FP16 的乘法和累积运算,或者在每个时钟执行 1024 次 FP 运算,新的 INT8 精度模式以两倍的速率工作,即每个时钟进行 2048 个整数运算。Tensor Core 用于加速基于 AI 的英伟达 NGX 功能,增强图形、渲染和其它类型的客户端应用程序,包括 DLSS(深度学习超级采样)、 AI 绘画、AI Super Rez(图像/视频超分辨率)和 AI Slow-Mo(视频流插帧)。
每个 SMs 分别有 64 个 FP32 核和 64 个 INT32 核,还包括 8 个混合精度的张量核(Tensor Core),每个 SM 被分为四个块,每个块包括一个新的 L0 指令缓存和一个 64 KB 的寄存器文件。四个块共享一个 96 KB L1 数据缓存/共享内存。传统的图形工作负载将 96 KB 的 L1/共享内存划分为 64 KB 的专用图形着色器 RAM 和 32 KB 的用于纹理缓存和寄存器文件溢出区域。计算工作负载可以将 96 KB 划分为 32 KB 共享内存和 64 KB L1 缓存,或者 64 KB 共享内存和 32 KB L1 缓存。
RT Core 主要用于三角形与光线求交点,并通过 BVH(Bounding Volume Hierarchy)结构加速三角形的遍历,由于布置在 block 之外,相对于普通 ALU 计算来说是异步的,包括两个部分,一部分检测碰撞盒来剔除面片,另一部分做真正的相交测试。RT Core 的使用,使 SM 在很大程度上可以用来做图形计算之外的工作。
8 Ampere架构(2020)
- 代表芯片:GA100(A100)、GA102(RTX 3090)
- 关键特性:
- 第三代 Tensor Core:支持 TF32、FP64 加速。
- MIG(Multi-Instance GPU):单 GPU 分割为 7 个独立实例。
- 结构化稀疏:利用稀疏矩阵加速计算。
- 性能:A100 的 FP16 算力达 312 TFLOPS。
Ampere架构 GA100白皮书
2020 年 Ampere 安培架构发布,Ampere 架构主要有以下特性:
- 超过 540 亿个晶体管,使其成为 2020 年世界上最大的 7 nm 处理器(英伟达 A100);
- 提出 Tensor Core3.0,新增 TF32(TensorFloat-32)包括针对 AI 的扩展,可使 FP32 精度的 AI 性能提高 20 倍;
- 多实例 GPU(Multi-Instance GPU,MIG)将单个 A100 GPU 划分为多达 7 个独立的 GPU,为不同任务提供不同算力,为云服务器厂商提供更好的算力切分方案;
- 提出 NVLink3.0 和 NV-Switch,NV-Switch 可以将多台机器进行互联,将 GPU 高速连接的速度加倍,可在服务器中提供有效的性能扩展;
- 利用 AI 数学计算中固有的稀疏特性将性能提升一倍。以上改进使 Ampere 成为新一代数据中心和云计算 GPU 架构,可用于 AI 和高性能计算场景。
英伟达 A100 GPU 包括 8 个 GPC,每个 GPC 包含 8 个 TPC,每个 TPC 包含 2S 个 SMs/,每个 GPC 包含 16 个 SM/GPC,整个 GPU 拥有 128 个 SMs。每个 SM 有 64 个 FP32 CUDA 核心,总共 8192 FP32 CUDA 核心。Tensor Core3.0,总共 512 个。6 个 HBM2 存储栈,12 个 512 位内存控制器,内存可达到 40 GB。第三代 NVLink,GPU 和服务器双向带宽为 4.8 TB/s,GPU 之间的互联速度为 600 GB/s。A100 SM 拥有 192 KB 共享内存和 L1 数据缓存,比 V100 SM 大 1.5 倍。
A100 Tensor Core3.0 增强操作数共享并提高计算效率,引入了 TF32、BF16 和 FP64 数据类型的支持。平时训练模型的过程中使用更多的是 FP32 和 FP16,TF32 在指数位有 8 位,FP16 在指数为有 5 位,因此 FP32 的位宽比 FP16 更多,小数位决定精度,FP32 在小数位有 23 位,FP16 只有 10 位,在 AI 训练的过程中很多时候 FP16 是够用的,但是动态范围会有限制,因此提出 TF32,指数位保持和 FP32 相同,小数位和 FP16 保持相同,BF16 的指数位和 FP32、TF32 相同,但是小数位少了三位。数百个张量核并行运行,大幅提高吞吐量和计算效率。
A100 FP32 FFMA,INT8、INT4 和 Binary 分别提高了 32x、64x 和 256x,与 Volta 架构一样,自动混合精度(AMP)允许用户使用与 FP16 相结合的混合精度来进行 AI 训练,使用 AMP 之后 A100 提供了比 TF32 快 2 倍的张量核心性能。
Tensor Core 除了执行乘法和加法操作之外还可以支持稀疏化结构矩阵(Sparse Tensor),实现细粒度的结构化稀疏,支持一个 2:4 的结构化稀疏矩阵与另一个稠密矩阵直接相乘。一种常见的方法是利用稀疏矩阵的结构特点,只对非零元素进行计算,从而减少计算量。一个训练得到的稠密矩阵在推理阶段经过剪枝之后会变成一个稀疏化矩阵,然后英伟达架构对矩阵进行压缩后变成一个稠密的数据矩阵和一个 indices,索引压缩过的数据方便检索记录,最后进行矩阵乘。
A100 张量核心 GPU 可以被分为 7 个 GPU 实例并被不同任务使用,每个实例的处理器在整个内存系统中都有单独且相互隔离的路径,片上交叉端口、L2 缓存、内存控制器和 DRAM 地址总线都被唯一地分配给一个单独的实例,确保单个用户的工作负载可以在可预测的吞吐量和延迟下运行,同时具有相同的 L2 缓存分配和 DRAM 带宽,即使其他任务正在读写缓存或 DRAM 接口。用户可以将这些虚拟 GPU 实例当成真的 GPU 进行使用,为云计算厂商提供算力切分和多用户租赁服务。
9 Hopper架构(2022)
- 代表芯片:GH100(H100)
- 关键特性:
- FP8精度支持:专为 Transformer 模型优化。
- 动态编程增强:Thread Block Cluster 支持协同计算。
- HBM3 显存:带宽达 3TB/s(H100)。
- 性能:AI 训练速度较 A100 提升 6 倍。
H100白皮书
2022 年 Hopper 架构发布,英伟达 Grace Hopper Superchip 架构将英伟达 Hopper GPU 的突破性性能与英伟达 Grace CPU 的多功能性结合在一起,在单个超级芯片中与高带宽和内存一致的英伟达 NVLink Chip-2-Chip(C2C)互连,并且支持新的英伟达 NVLink 切换系统,CPU 和 GPU、GPU 和 GPU 之间通过 NVLink 进行连接,数据的传输速率高达 900 GB/s,解决了 CPU 和 GPU 之间数据的时延问题,跨机之间通过 PCIe5 进行连接。
Grace Hopper Superchip:
Hopper 架构是第一个真正的异构加速平台,适用于高性能计算(HPC)和 AI 工作负载。英伟达 Grace CPU 和英伟达 Hopper GPU 实现英伟达 NVLink-C2C 互连,高达 900 GB/s 的总带宽的同时支持 CPU 内存寻址为 GPU 内存。NVLink4.0 连接多达 256 个英伟达 Grace Hopper 超级芯片,最高可达 150 TB 的 GPU 可寻址内存。
H100 | 参数 |
---|---|
NVIDIA Grace CPU | 72 个 Arm Neoverse V2 内核,每个内核 Armv9.0-A ISA 和 4 个 128 位 SIMD 单元 |
512 GB LPDDR5X 内存,提供高达 546 GB/s 的内存带宽 | |
117MB 的 L3 缓存,内存带宽高达 3.2 TB/s | |
64 个 PCIe Gen5 通道 | |
NVIDIA Hopper GPU | 144 个第四代 Tensor Core、Transformer Engine、DPX 和 3 倍高 FP32 的 FP64 的 SM |
96 GB HBM3 内存提供高达 3000 GB/s 的速度 | |
60 MB 二级缓存 | |
NVLink 4 和 PCIe 5 | |
NVIDIA NVLink-C2C | Grace CPU 和 Hopper GPU 之间硬件一致性互连 |
高达 900 GB/s 的总带宽、450 GB/s/dir | |
扩展 GPU 内存功能使 Hopper GPU 能够将所有 CPU 内存寻址为 GPU 内存。每个 Hopper CPU 可以在超级芯片内寻址多达 608 GB 内存 | |
NVIDIA NVLink 切换系统 | 使用 NVLink 4 连接多达 256 个 NVIDIA Grace Hopper 超级芯片 |
每个连接 NVLink 的 Hopper GPU 都可以寻址网络中所有超级芯片的所有 HBM3 和 LPDDR5X 内存,最高可达 150 TB 的 GPU 可寻址内存 |
H100 一共有 8 组 GPC、66 组 TPC、132 组 SM,总计有 16896 个 CUDA 核心、528 个 Tensor 核心、50MB 二级缓存。显存为新一代 HBM3,容量 80 GB,位宽 5120-bit,带宽高达 3 TB/s。
具体到 SM 结构,Hopper 架构 FP32 Core 和 FP64 Core 两倍于 Ampere 架构,同时采用 Tensor Core4.0 使用新的 8 位浮点精度(FP8),可为万亿参数模型训练提供比 FP16 高 6 倍的性能。FP8 用于 Transformer 引擎,能够应用 FP8 和 FP16 的混合精度模式,大幅加速 Transformer 训练,同时兼顾准确性。FP8 还可大幅提升大型语言模型推理的速度,性能较 Ampere 提升高达 30 倍。新增 Tensor Memory Accelerator,专门针对张量进行数据传输,更好地加速大模型。
NVIDIA Quantum-2 Infiniband 是英伟达推出的一种高性能互连技术,用于数据中心和高性能计算环境中的互连网络,具有高性能、低延迟、高可靠性和支持异构计算等特点,主要用于连接计算节点、存储系统和其他关键设备,以实现高速数据传输和低延迟通信。
NVIDIA BlueField-3 DPU(Data Processing Unit)是一种数据处理单元,提供数据中心的网络、存储和安全加速功能。BlueField-3 DPU 结合了网络接口控制器(NIC)、存储控制器、加密引擎和智能加速器等功能于一体,为数据中心提供了高性能、低延迟的数据处理解决方案。
基于 Hopper 架构,英伟达推出 NVIDIA H100 高性能计算加速器,旨在为各种规模的计算工作负载提供出色的性能和效率。在单服务器规模下,结合主流服务器使用 H100 加速卡可以提供强大的计算能力,加速各种计算密集型工作负载。在多服务器规模下,组成 GPU 集群的多块 H100 加速卡可以构建高性能计算集群,支持分布式计算和并行计算,提高整体计算效率。而在超级计算规模下,大量 H100 加速卡组成的超级计算集群可以处理极端规模的计算任务,支持复杂的科学计算和研究。
从单服务器到多服务器再到超级计算规模(Mainstream Servers to DGX to DGX SuperPOD),NVIDIA H100 在不同层次和规模下展现出色的计算性能和效率,满足各种计算需求和业务目标。
10 Blackwell架构(2024)
- 代表芯片:GB100
- 关键特性:
- Tensor Core5.0
- NVLink5.0, 为每个 GPU 提供 1.8TB/s 双向带宽,支持多达 576 个 GPU 间的无缝高速通信,适用于复杂大语言模型
- 第二代 Transformer 引擎,将定制的 Blackwell Tensor Core 技术与英伟达 TensorRT-LLM 和 NeMo 框架创新相结合,加速大语言模型 (LLM) 和专家混合模型 (MoE) 的推理和训练
- 支持 RAS, 增加了智能恢复能力,以识别早期可能发生的潜在故障,从而更大限度地减少停机时间
- Blackwell 架构 GPU 具有 2080 亿个晶体管,采用专门定制的台积电 4NP 工艺制造。所有 Blackwell 产品均采用双倍光刻极限尺寸的裸片,通过 10 TB/s 的片间互联技术连接成一块统一的 GPU
- 能效是 Hopper 的 25 倍
2024 年 3 月,英伟达发布 Blackwell 架构,专门用于处理数据中心规模的生成式 AI 工作流,能效是 Hopper 的 25 倍,新一代架构在以下方面做了创新:
- 新型 AI 超级芯片:Blackwell 架构 GPU 具有 2080 亿个晶体管,采用专门定制的台积电 4NP 工艺制造。所有 Blackwell 产品均采用双倍光刻极限尺寸的裸片,通过 10 TB/s 的片间互联技术连接成一块统一的 GPU。
- 第二代 Transformer 引擎:将定制的 Blackwell Tensor Core 技术与英伟达 TensorRT-LLM 和 NeMo 框架创新相结合,加速大语言模型 (LLM) 和专家混合模型 (MoE) 的推理和训练。
- 第五代 NVLink:为了加速万亿参数和混合专家模型的性能,新一代 NVLink 为每个 GPU 提供 1.8TB/s 双向带宽,支持多达 576 个 GPU 间的无缝高速通信,适用于复杂大语言模型。
- RAS 引擎:Blackwell 通过专用的可靠性、可用性和可服务性 (RAS) 引擎增加了智能恢复能力,以识别早期可能发生的潜在故障,从而更大限度地减少停机时间。
- 安全 AI:内置英伟达机密计算技术,可通过基于硬件的强大安全性保护敏感数据和 AI 模型,使其免遭未经授权的访问。
- 解压缩引擎:拥有解压缩引擎以及通过 900GB/s 双向带宽的高速链路访问英伟达 Grace CPU 中大量内存的能力,可加速整个数据库查询工作流,从而在数据分析和数据科学方面实现更高性能。
英伟达 GB200 Grace Blackwell 超级芯片通过 900GB/s 超低功耗的片间互联,将两个英伟达 B200 Tensor Core GPU 与英伟达 Grace CPU 相连。8 年时间,从 Pascal 架构到 Blackwell 架构,英伟达将 AI 计算性能提升了 1000 倍!
英伟达 GB200 NVL72 集群以机架形式设计连接 36 个 GB200 超级芯片(36 个 Grace cpu 和 72 个 Blackwell GPU)。
11 总结
- 2010 年提出 Fermi 架构,开启了架构演进的进程,属于首个完整的 GPU 计算架构,里面提出的新概念一直沿用至今。
- 2016 年提出 Pascal 架构,首次提出 NVLink,双向互联带宽达到 160 GB/s 对 AI 领域产生重大影响,是具有历史性意义的里程碑架构。
- 2017 年提出 Volt 架构,首次提出张量核心(Tensor Core),专门针对神经网络矩阵卷积运算进行加速的第一代核心,同时提出 NVSwitch1.0,提高 GPU 之间的通信效率和性能。
- 2018 年提出 Turing 架构,在消费级显卡上提出 RT Core 以实现硬件光线追踪。
- 2020 年 Ampere 架构因多用户 GPU 实例在 AI 云应用厂商中广泛采用。晶体管规模巨大提升。
- 2022 年 Hopper 架构实现了 CPU 和 GPU 异构,CPU 与 GPU 实现英伟达 NVLink-C2C 互连。
- 2024 年 Blackwell 架构 GPU,英伟达将 AI 计算性能提升了 1000 倍,进一步为生成式 AI 与大模型提供算力支持。
一块 GPU 上存在多个 Streaming Multiprocessor(SM),每个 SM 上有很多个计算核心(Core)、线程调度器(Warp Scheduler)、Shared Memory(共享内存)、SFU(特殊运算单元,如sin、cos)、Register File(寄存器组)。除了每个 SM 上的Share Memory,所有 SM 会共享 Global Memory。
Flynn将计算设备分为四类:
- SISD:单条指令操作一条数据,简单流水线
- MISD:多条指令操作一条数据,很少
- MIMD:多条指令操作多条数据,例如 VLIW
- SIMD:单条指令操作多条数据, 例如 Vector Processor,GPU
GPU 是 SIMD 中的一种,它一条指令可以操作多条数据。
GPU 采用的是一种 SIMT(Single-Instruction, Multiple-Thread)的架构,也就是一条指令可以执行多个线程。在程序运行时,GPU 会同时执行大量相同指令的线程。而这些线程首先会通过一个调度器,调度到闲置的 SM 上,再由 SM 内部的 Warp Scheduler 调度到 Core 上进行计算。
典型 GPU 存储结构:
G80 CUDA Mode:
相关文章:
CUDA 学习(1)——GPU 架构
典型 CPU 架构与 GPU 架构对比: 上图中绿色部分是计算单元,GPU 有更多的计算核心,计算能力更强。黄色部分是控制单元,CPU 中有大量的控制单元,现代 CPU 的晶体管越来越复杂,除了计算,还要实现乱…...
5个视角、5等级及10档次:《数字化转型领域 参考架构》国家标准正式出台
近日,国家标准GB/T 45341-2025《数字化转型管理 参考架构》正式出台。这是我国研制的首个数字化转型领域基础架构类国家标准,对数字化转型领域标准化建设具有重大意义。 关注WeChat Subscription Account【智慧城市指北】,回复关键字“20250…...
2.4 隐函数及由参数方程确定的函数求导
1.隐函数求导 1.1 例题 2. 参数方程确定的函数求导...
PROE 与 STL 格式转换:开启 3D 打印及多元应用的大门
在 3D 设计与制造的复杂生态中,将 PROE 格式转换为 STL 格式绝非无端之举,而是有着深厚且多元的现实需求作为支撑。 一、文件格式介绍 (一)PROE 格式 PROE 作为一款参数化设计软件,采用基于特征的参数化建模技术…...
【Bug记录】node-sass安装失败解决方案
【Bug记录】node-sass 安装失败解决办法 前言 很多小伙伴在安装 node-sass 的时候都失败了,主要的原因是 node 版本和项目依赖的 node-sass 版本不匹配。 解决方案 解决方案:把项目中的 node-sass 替换为 sass,其实 node-sass 已被官方弃…...
三、Python高级特性
Python中的高级数据结构:队列、栈、双端队列、堆与优先队列 在Python编程中,高级数据结构为我们提供了强大而灵活的工具来处理各种复杂的数据存储和操作需求。本文将详细介绍队列、栈、双端队列、堆与优先队列这几种常见的高级数据结构及其在Python中的…...
使用 OpenCV 拼接进行图像处理对比:以形态学操作为例
图像处理在计算机视觉中起着至关重要的作用,而 OpenCV 作为一个强大的图像处理库,提供了丰富的函数来实现各类图像处理任务。形态学操作(Morphological Operations)是其中常用的技术,尤其适用于二值图像的处理。常见的…...
OPENCV数字识别(非手写数字/采用模板匹配)
这篇文章的重点在于 模板匹配 的使用。模板匹配是计算机视觉中的一项基本技术,它通过比对输入图像与模板图像的相似度,来进行目标识别。对于数字识别,特别是标准数字的识别,模板匹配非常有效。 请看效果: 文章结构 …...
【STM32】知识点介绍一:硬件知识
文章目录 一、电源引脚简介二、电平信号三、电路分析 一、电源引脚简介 VCC、GND、VDD和VSS是电子电路中常见的术语,代表着不同的电源引脚或电压。 VCC(Voltage at the Common Collector):VCC是指集电极(Collector&am…...
基于SpringBoot的电影售票系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
记录我的ICME2025论文之旅:困顿与收获
人生第一次中B会,还是在课业繁重的大三上(有点说法~) “在最黑暗的时刻,总有一束光为你指引前行。” ——记录这段难忘的历程 今年的ICME投稿量创下新高,录取率却跌至20多%,并且首次加入了rebuttal…...
FreeRTOS学习(九):中断管理
FreeRTOS学习(九):中断管理 文章目录 FreeRTOS学习(九):中断管理前言一、中断优先级分组设置特点中断优先级分组设置 二、FreeRTOS中断优先级配置PendSV和SysTick中断优先级配置 三、中断相关寄存器PRIMASK…...
07-项目中应提前准备下一阶段计划
在项目当前版本的功能开发任务都完成之后,人就空出来了,通常这个时候,项目负责人还有很多繁琐的工作要做,比如项目内部验收、提交测试申请和版本发布等等。为了给项目成员找事情做,就匆匆忙忙安排下个版本的任务&#…...
【C语言】多进程/多线程
【C语言】多进程/多线程 参考链接多进程/多线程服务器1. 多进程服务器2. 多线程服务器 结语参考链接 参考链接 c 中文网 菜鸟 c 多进程/多线程服务器 多进程和多线程是常用的并发编程技术。它们都允许程序同时执行多个任务,提高了系统的资源利用率和程序的运行效率…...
GaussDB数据库表设计与性能优化实践
GaussDB分布式数据库表设计与性能优化实践 引言 在金融、电信、物联网等大数据场景下,GaussDB作为华为推出的高性能分布式数据库,凭借其创新的架构设计和智能优化能力,已成为企业核心业务系统的重要选择。本文深入探讨GaussDB分布式架构下的…...
全星FMEA软件系统——助力汽车部件行业高效管控质量风险
全星FMEA软件系统——助力汽车部件行业高效管控质量风险 在汽车部件行业,产品质量与可靠性直接影响整车安全性与市场竞争力。如何高效管理失效风险、优化控制计划并确保流程合规性,成为企业核心挑战。 全星FMEA软件系统应运而生,专为汽车部…...
文件I/O--C++的文件操作
一、打开文件,从文件中读取、写入文件 从文件中读取数据: #include<fstream> //fstream File stream:文件流 #include<iostream> //fstream包含了 iostream,所以这句可以省略,现在不能了 using namespace std;i…...
Docker-Compose部署 EasySearch 异常问题排查
近期将原本运行在 macOS 上的 EasySearch、Console 和 Coco-server 等服务迁移至群晖 NAS 平台。在迁移过程中遇到了EasySearch容器无法正常启动或运行中意外终止的问题。本文记录了这些问题的具体表现及解决方案,旨在为后续类似部署提供参考。 基础部署配置 以下…...
秒杀业务优化之从分布式锁到基于消息队列的异步秒杀
一、业务场景介绍 优惠券、门票等限时抢购常常出现在各类应用中,这样的业务一般为了引流宣传而降低利润,所以一旦出现问题将造成较大损失,那么在业务中就要求我们对这类型商品严格限时、限量、每位用户限一次、准确无误的创建订单,…...
【CGE】社会核算矩阵构建(一):SAM基本结构
【CGE】社会核算矩阵构建(一):SAM基本结构 社会核算矩阵构建(一):SAM基本结构一、SAM的概念和基本特点二、SAM的基本结构1.开放经济体的SAM表结构2.SAM表各账户的主要核算内容(1)社会…...
蓝桥杯算法实战分享:算法进阶之路与实战技巧
引言 蓝桥杯作为国内极具影响力的程序设计竞赛,为众多编程爱好者和专业人才提供了展示自我的舞台。参与蓝桥杯不仅能检验自身编程水平,还能拓宽技术视野,为未来职业发展积累宝贵经验。本文将结合历年真题与参赛经验,全面分享蓝桥…...
自定义minshell
我们在前面已经了解了进程的概念,以及如何进行进程控制。接下来我们就使用这些知识,来自己实现一个shell即命令行解释器!!! 一.打印命令行提示符 我们在使用Linux操作系统时,一登陆就会启动bash进程——命…...
坦克大战(c++)
今天我给大家分享一个c游戏。 废话不多说,作品展示: #include <stdio.h> #include <windows.h> #include <time.h> //里规格:长39*278 (真坐标)(假坐标宽为39) 高39 //外规格:长…...
《可爱风格 2048 游戏项目:HTML 实现全解析》
一、引言 在如今的数字化时代,小游戏以其简单易上手、趣味性强的特点深受大家喜爱。2048 游戏作为一款经典的数字合并游戏,拥有庞大的玩家群体。本文将详细介绍一个用单文件 HTML 实现的可爱风格 2048 游戏项目,它不仅具备传统 2048 游戏的基…...
C++ 利用类模板实现一个数组类封装
案例描述: 实现一个通用的数组类,要求如下: 可以对内置数据类型以及自定义数据类型的数据进行存储 将数组中的数据存储到堆区 构造函数中可以传入数组的容量 提供对应的拷贝构造函数以及operator防止浅拷贝问题 提供尾插法和尾删法对数组…...
【AndroidRTC-11】如何理解webrtc的Source、TrackSink
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题1:如何理解VideoSource、VideoTrack&VideoSink三者的关系…...
数据类设计_图片类设计之9_图标类设计_C++实战_(前端架构)
前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 前面写了矩阵图形类对象和像素图形类对象,本贴通过一个快捷方式图标类的设计,来继续数据类型设计的一些讨论. 快捷方式图标是这个样子: 属性分析 首先,快捷方式…...
fuse性能关键参数entry_timeout
entry_timeout 是 FUSE(Filesystem in Userspace)中的一个选项,用于控制目录项缓存的有效期。具体来说,它决定了文件系统在多长时间内缓存目录项(如文件名到 inode 的映射),从而影响文件系统的性…...
3. 轴指令(omron 机器自动化控制器)——>MC_ResetFollowingError
机器自动化控制器——第三章 轴指令 13 MC_ResetFollowingError变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启动运动指令▶多重启运动指令▶异常 MC_ResetFollowingError 对指令当前位置和反馈当前位置的偏差进行复位。 指令名称FB/FUN图形表现S…...
Spring Boot项目快速创建-开发流程(笔记)
主要流程: 前端发送网络请求->controller->调用service->操纵mapper->操作数据库->对entity数据对象赋值->返回前端 前期准备: maven、mysql下载好 跟学视频,感谢老师: https://www.bilibili.com/video/BV1gm4…...
[操作系统] 进程间通信:进程池的实现
引言 在学习操作系统时,进程间通信(IPC)和多进程管理是核心内容之一。进程池是一种常见的模式,通过预先创建一组工作进程来处理任务,避免频繁创建和销毁进程带来的开销。本文将详细剖析一个用 C 实现的进程池代码&…...
信号相关的程序
1、不断打印*换行之后响应信号,然后循环 #include <stdio.h> #include <string.h> #include <signal.h> #include <stdlib.h> #include <unistd.h> static void alrm_handler(int signo) {write(1,"!",1); }int main( in…...
【计算机网络】-计算机网络期末复习题复习资料
一、计算机网络体系结构(800字) 1. OSI参考模型 七层结构:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层 各层核心功能: 物理层:比特流传输(如RJ45、光纤接口) 数据链路层&…...
Linux 基础入门操作 第十二章 TINY Web 服务器
1 服务器基础架构 1.1 背景知识 Web 服务器使用 HTTP 协议与客户端(即浏览器)通信,而 HTTP 协议又基于 TCP/IP 协议。因此我们要做的工作就是利用 Linux 系统提供的 TCP 通信接口来实现 HTTP 协议。 而 Linux 为我们提供了哪些网络编程接口…...
L2-052 吉利矩阵
L2-052 吉利矩阵 - 团体程序设计天梯赛-练习集 这道题打表 打表部分被注释了 n4 [0,0,282, 2008, 10147, 40176, 132724, 381424, 981541, 2309384] n3 [0,0,21, 55, 120, 231, 406, 666, 1035, 1540] n2 [0,0,3, 4, 5, 6, 7, 8, 9, 10] l,n map(int,input().split()) if…...
BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告
BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告 目录 BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告预测效果基本介绍程序设计参考资料 预测效果 基本介绍 BKA-CNN-LSTM、CNN-LSTM、…...
【读书笔记】华为《从偶然到必然》
note 华为的成功并非偶然,而是通过IPD体系、投资组合管理、平台战略等系统性工具,将研发投资转化为可持续的商业竞争力。书中强调的“管理即内部因素”理念,揭示了企业规模扩张与管理能力匹配的深层规律,为高科技企业提供了可借鉴…...
flink广播算子Broadcast
文章目录 一、Broadcast二、代码示例三.或者第二种(只读取一个csv文件到广播内存中)提示:以下是本篇文章正文内容,下面案例可供参考 一、Broadcast 为了关联一个非广播流(keyed 或者 non-keyed)与一个广播流(BroadcastStream),我们可以调用非广播流的方法 connect(),…...
实时图像处理:让你的应用更智能
I. 引言 实时图像处理在现代应用中扮演着重要的角色,它能够使应用更加智能、响应更加迅速。本文将深入探讨实时图像处理的原理、部署过程以及未来的发展趋势,旨在帮助开发者更好地理解如何将实时图像处理应用于他们的项目中。 II. 实时图像处理的基础概…...
深入理解 Linux 基础 IO:从文件操作到缓冲区机制
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 Linux 系统中,文件输入输出(IO)…...
汇编语言高级编程技巧:从基础到进阶
前言 汇编语言作为底层编程语言,直接操作硬件,执行效率高,但编写复杂逻辑时往往显得繁琐。通过使用汇编伪指令和宏,我们可以实现类似于高级语言的结构,如条件判断、循环、结构体和函数等,从而提升代码的可读…...
Android Studio常见问题解决
一、环境配置问题 1. 安装失败 问题描述:在安装过程中,可能会遇到硬件要求不符合、网络问题、安装包损坏、权限不足或安装路径问题等,导致安装失败。 解决方法: 硬件要求:确保设备满足最低硬件要求。 网络问题&…...
【RHCE】LVS-NAT模式负载均衡实验
目录 题目 IP规划 配置IP RS1 RS2 RS3 LVS client 配置RS 配置LVS 安装lvs软件 启动ipvsadm服务 lvs规则匹配 ipvsadm部分选项 客户端测试 总结 题目 使用LVS的 NAT 模式实现 3 台RS的轮询访问,IP地址和主机自己规划。 IP规划 主机IP地址RS1-nat模…...
MacOS下的IntelliJ IDEA突然无法访问本机的虚拟机
今天在开发的过程中,突然遇到一个怪事,之前运行的好好的程序,突然间报无法连接redis服务器,一开始以为是网络问题,在OS的terminal里又是ping 又是telnet的,一切正常,可是程序就是连不上。 挠了半…...
【渗透测试】Fastjson 反序列化漏洞原理(一)
目录 一、Fastjson 是什么二、Fastjson 工作原理三、反序列化漏洞原理1. 反序列化漏洞的定义2. Fastjson 的反序列化机制3. 漏洞成因关注以下几点(1) 动态类型解析(2) 自动调用方法(3) 信任用户输入 4. 漏洞利用过程(1) 寻找可利用的类(也称为 "Gadget"&a…...
BM100-K系列开关量输入信号隔离器
1. 产品概述 BM100-K系列开关量输入信号隔离器是一款高性能的信号处理设备,专为工业自动化控制系统设计。该产品支持干接点或NAMUR型接近开关输入,并通过继电器或晶体管实现隔离输出。其核心功能包括输入输出逻辑控制(同相/反相可调…...
c++11 | 细说智能指针
💓个人主页:mooridy 💓专栏地址:C 关注我🌹,和我一起学习更多计算机的知识 🔝🔝🔝 什么是智能指针? 智能指针是 C 中一种用于管理动态内存的机制。它提供了一…...
谷歌大型推理模型曝光!击败Claude-3.7-Thinking
哎!最近推特上的网友在LMSYS Arena 发现了个泄漏的大模型 Nebula,效果据说特别好,打败了o1、o3-mini、Claude 3.7 Thinking等模型: 网友们通过询问和分析 API,发现这似乎是谷歌正在秘密测试的新推理模型!推…...
Python FastAPI面试题及参考答案
目录 FastAPI 的优缺点是什么?列举典型应用场景。 解释 FastAPI 的路由机制,如何定义路径参数和查询参数? Pydantic 模型在 FastAPI 中的作用是什么?如何进行数据验证与序列化? FastAPI 如何自动生成 OpenAPI 文档?Swagger UI 和 ReDoc 的区别? 什么是 ASGI?FastAP…...
C++(初阶)(八)——string
string string遍历下标[]迭代器iterator反向迭代器 范围for修改 Capacitysize和lengthmax_sizecapacityclearcapacity的扩容reserveresize Element accessoperator[]和at **Modifiers**:appendinserterasereplace String operationsc_strsubstr和findfind_first_ofgetline 题目…...