CUDA - 确定共享内存中的银行数量

Posted

技术标签:

【中文标题】CUDA - 确定共享内存中的银行数量【英文标题】:CUDA - determine number of banks in shared memory 【发布时间】:2013-06-06 07:15:29 【问题描述】:

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

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

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

【问题讨论】:

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

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

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

【讨论】:

以上是关于CUDA - 确定共享内存中的银行数量的主要内容,如果未能解决你的问题,请参考以下文章

故意导致 CUDA 设备上共享内存的银行冲突

CUDA 内存库冲突

将数据从全局加载到共享内存时如何避免银行冲突

CUDA 共享内存效率为 50%?

合并与银行冲突(Cuda)

从共享内存中读取 int 数组是不是会排除银行冲突?