cudaMallocPitch如何帮助避免CUDA内存银行冲突?
CUDA cudaMallocPitch 填充与银行冲突优化疑问
我了解到CUDA的cudaMallocPitch函数会创建带填充的内存,以此帮助避免内存银行冲突。我能理解填充如何实现内存对齐——这和CPU中的对应机制非常相似,但不确定它是如何优化以减少银行冲突的,比如是否通过填充确保每行第一列的起始位置位于不同的内存银行?
以下是示例:
填充前:
Bank 0 | Bank 1 | Bank 2 | Bank 3 -------|--------|--------|------- A[0][0]| A[0][1]| A[0][2]| A[0][3] A[1][0]| A[1][1]| A[1][2]| A[1][3] A[2][0]| A[2][1]| A[2][2]| A[2][3] ...
填充后:
Bank 0 | Bank 1 | Bank 2 | Bank 3 -------|--------|--------|------- A[0][0]| A[0][1]| A[0][2]| A[0][3] Padding| A[1][0]| A[1][1]| A[1][2] A[1][3]| padding| padding| A[2][0] ...
内容的提问来源于stack exchange,提问作者PkDrew
相关产品推荐
相关产品推荐

