【问题标题】:CUDA - determine number of banks in shared memoryCUDA - 确定共享内存中的银行数量
【发布时间】:2026-02-02 22:05:01
【问题描述】:

共享内存被“条带化”成组。众所周知,这会导致整个银行冲突问题。

问题: 但是您如何确定共享内存中存在 多少 个银行(“条带”)?

(在 NVIDIA “devtalk” 论坛上一探究竟,似乎每块共享内存被“条带化”成 16 个库。但我们怎么知道这一点?暗示这一点的线程已有几年历史了。事情是否发生了变化?是它固定在所有支持 NVIDIA CUDA 的卡上?有没有办法从运行时 API 中确定这一点(我在那里看不到它,例如在 cudaDeviceProp 下)?是有在运行时手动确定它的方法吗?)

【问题讨论】:

  • This post 说费米是 32 个银行。您是否尝试过查看 CUDA 编程指南?那是张贴者说他得到这些信息的地方。

标签: c++ cuda gpu shared-memory bank-conflict


【解决方案1】:

正如@RobertHarvey 所说,它已记录在案。编程指南指出 compute capability 1.x 有 16 个库,compute capability 2.x3.x 有 32 个库。因此,您可以根据设备属性中返回的计算能力(主要版本)做出任何决定。

cuda 在线文档的一般链接包含在 cuda 标签的 info link 中。

【讨论】: