我对NVidia的两份文件感到困惑。CUDA最佳实践指出,共享内存是以银行方式组织的,在32位模式下,每4个字节就是一个银行(这是我的理解)。然而使用CUDA进行并行前缀求和(扫描)详细介绍了由于银行冲突而需要向扫描算法添加填充的细节。
问题在于,对于我所提供的此算法的基本类型为
因此,我的理解是否正确--即,如果您处理的是
问题在于,对于我所提供的此算法的基本类型为
float
,其大小为4字节。因此,每个float
是一个银行,不存在银行冲突。因此,我的理解是否正确--即,如果您处理的是
4*N
字节类型,则无需担心银行冲突,因为根据定义不会存在?如果不是,请告诉我应该如何理解它(何时使用填充)?