2012-06-07 3 views
0

나는 문제의 코드를 찾고 있어요 : How do I choose grid and block dimensions for CUDA kernels?에서 후속 질문 : CUDA how to get grid, block, thread size and parallalize non square matrix calculation# 블록, #threads

const int n = 128 * 1024; 
int blocksize = 512; // value usually chosen by tuning and hardware constraints 
int nblocks = n/nthreads; // value determine by block size and total work 
madd<<<nblocks,blocksize>>>mAdd(A,B,C,n); 

블록 크기와 nthreads의 차이점은 무엇입니까가? 나는 그들이 같은 사람이라고 생각하고 있습니다. 이것은 단지 오타입니까, 아니면 뭔가 빠졌습니까?

+4

그것의 단지 오타 :

그래서 당신이 정말로 원하는 것은이 작은 정수 연산 트릭을 적용합니다. – talonmies

답변

0

블록 수는 인스턴스 수를 각 블록의 크기로 나눈 것입니다. 그러나 이것은 정수가 아닌 답을 가져올 수 있습니다. 따라서 리소스를 낭비하는 대신 각 인스턴스가 실행되도록 반올림해야합니다.

int nblocks = (n+blocksize-1)/blocksize;