在计算Cuda中的有效带宽时,我是否计算共享内存中的读取/写入次数。下面是一个示例代码。
__global__ void kernel(float *a, float * b, float * c, int num){
int i = threadIdx.x + blockIdx.x*blockDim.x;
__shared__ a_shared[NUM];
__shared__ b_shared[NUM];
if (i < NUM){
a_shared[i] = a[i];
b_shared[i] = b[i]
c[i] = a_shared[i] + b_shared[i];
}
}
答案 0 :(得分:0)
关于您在上述评论中指出的最佳做法指南中的the section,我想答案是“否”,不应包含共享流量。
我们怎么知道这个?
要准确地测量性能,计算理论和有效带宽非常有用。当后者远低于前者时,设计或实现细节可能会减少带宽,这应该是随后进行优化以增加带宽的主要目标。
但是,理论带宽计算仅包括到DRAM的全局内存流量:
使用这些数据项,NVIDIA Tesla M2090的峰值理论内存带宽为177.6 GB / s:
该数字是DRAM带宽。它不包括共享内存带宽。
请求的全局负载吞吐量
请求的全球商店吞吐量
全局负载吞吐量
全球商店吞吐量
DRAM读取吞吐量
DRAM写吞吐量