1) ../include/darknet.h:9: #define BLOCK 512 定义线性块大小 2) dim3 cuda_gridsize(size_t n){ size_t k = (n-1) / BLOCK + 1; size_t x = k; size_t y = 1; if(x > 65535){ x = ceil(sqrt(k)); y = (n-1)/(x*BLOCK) + 1; } dim3 d = {x, y, 1}; //printf("%ld %ld %ld %ld\n", n, x, y, x*y*BLOCK); return d; } cuda_gridsize 把一个数字转换成3维向量。 3) int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; if (index >= N) return; int b = index / spatial; int i = index % spatial; int f; float sum = 0; for(f = 0; f < filters; ++f){ int index = b*filters*spatial + f*spatial + i; sum += powf(x[index], 2); } 这个地方spatial不知道是啥意思, filters大概是滤波器的意思 |
说点什么...