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

标题: CUDA 编程学习 (5)——内存访问性能 [打印本页]

作者: 曂沅仴駦    时间: 2024-11-1 00:13
标题: CUDA 编程学习 (5)——内存访问性能
1. DRAM 带宽

1.1 DRAM 核心阵列布局


1.2 DRAM 核心阵列速度慢

1.3  DRAM Bursting

1.3.1 DRAM Bursting Timing 示例

今世 DRAM 系统设计为始终以 burst 模式访问。burst bytes 被传输到处理器,但在访问非连续位置时会被丢弃。
1.3.2 DRAM Bursting with Banking


1.4 GPU 片外内存子系统

2. CUDA 中的内存聚合

2.1 DRAM Burst —— 系统视图


2.2 内存聚合

当一个 warp 中的所有 thread 都实验一个 load 指令时,如果所有被访问的位置都属于同一 burst 段,那么只会发出一个 DRAM 请求,而且访问是完全聚合的。
2.3 非聚合访问


2.4 如何判定一个访问是否聚合


\[A[(expression\ with\ terms\ independent\ of\ threadIdx.x) + threadIdx.x]\]
2.4.1 根本矩阵乘法的两种访问模式

i 是 kernel code 内积循环中的循环计数器,A 大小为 \(m\times n\),B 大小为 \(n\times k\)。

\[Col = blockIdx.x * blockDim.x + threadIdx.x\]

2.4.2 加载输入 tiles

让每个 thread 在与其 C 元素相同的相对位置加载一个 A 元素和一个 B 元素。
访问 tile 0 2D 索引:
原始访问模式 (Original Access Pattern)
在左上角的 d_M 矩阵和右上角的 d_N 矩阵中,赤色线条代表传统的逐元素访问方式。在这种模式下:
分块访问模式 (Tiled Access Pattern)
在分块访问模式中:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




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