中等CUDACUDA面试高频NVIDIA百度
CUDA 中 warp、block、grid、SM 的关系是什么?
7 0 0
参考答案
CUDA 的线程层级和硬件映射: **软件层级(编程模型)**: - **Thread(线程)**:最小执行单位。 - **Warp(线程束)**:32 个线程组成一个 warp,是 GPU 调度和执行的基本单位,同一 warp 内线程 SIMT(单指令多线程)方式执行同一条指令。 - **Block(线程块)**:若干线程(如 256、1024)组成一个 block,block 内线程可通过 shared memory 通信、用 __syncthreads() 同步。 - **Grid(网格)**:若干 block 组成一个 grid,对应一次 kernel 启动。 **硬件层级**: - **SM(Streaming Multiprocessor,流多处理器)**:GPU 的核心计算单元,包含 CUDA core、Tensor Core、寄存器、shared memory、warp 调度器。 **映射关系**: - 一个 block 被整体调度到**一个 SM** 上执行(不会跨 SM),一个 SM 可同时驻留多个 block(受寄存器/shared memory 限制)。 - block 内的线程以 warp 为单位被 SM 的 warp 调度器调度执行。 - 一个 grid 的多个 block 分散到 GPU 的多个 SM 上并行。 **面试延伸**: - **Occupancy(占用率)**:SM 上活跃 warp 数 / 最大可能 warp 数,受寄存器和 shared memory 用量限制,影响延迟隐藏能力。 - warp divergence(同 warp 内分支分歧)会串行化,损失性能。
讨论区(0)
还没有评论,来做第一个发言的人吧