我曾经历过,对于小输入大小,CPU 的执行速度比 GPU 快。为什么是这样?准备,数据传输还是什么?
例如对于内核和 CPU 功能(CUDA 代码):
__global__ void squareGPU(float* d_in, float* d_out, unsigned int N) {
unsigned int lid = threadIdx.x;
unsigned int gid = blockIdx.x*blockDim.x+lid;
if(gid < N) {
d_out[gid] = d_in[gid]*d_in[gid];
}
}
void squareCPU(float* d_in, float* d_out, unsigned int N) {
for(unsigned int i = 0; i < N; i++) {
d_out[i] = d_in[i]*d_in[i];
}
}
Run Code Online (Sandbox Code Playgroud)
在 5000 个 32 位浮点数的数组上运行这些函数 100 次,我使用一个小测试程序得到以下结果
Size of array:
5000
Block size:
256
You chose N=5000 and block …Run Code Online (Sandbox Code Playgroud)