2013-10-15 2 views
0

나는 360,000 개의 요소를 의미하는 400x900 매트릭스를 가지고 있습니다. 블록의 스레드 수는 1024입니다. 블록 수 (정사각형 배열)는 352이며 이는 총 360,448 개의 스레드를 의미합니다. 따라서 448 개의 스레드는 스레드가 각 요소에 할당되었다고 가정 할 때 아무 것도 수행하지 않습니다. 분기 분기에 대해 읽었으며 이해했지만 여기서는 분기 문의 및 코드가 무엇인지 이해하지 못합니다.여분의 스레드에 대한 분기 문

+1

"발산 진술"이란 무엇입니까? –

답변

1

스레드가 CUDA의 블록으로 그룹화되기 때문에 우리는 병렬로 작업하기 위해 데이터의 실제 크기보다 스레드를 조금 더 사용합니다. 이 경우 데이터가 할당 된 스레드 만 작동하고 다른 스레드는 대기하고 아무것도 수행하지 않도록 분기가 필요합니다.

다음 게시물은 CUDA를 사용하여 AXPY를 계산하는 방법을 보여줍니다. 총 스레드 수는 항상 256의 배수이지만 커널은 임의 길이의 벡터 N에서 작업 할 수 있습니다. 코드 if (i < n) {...}은 추가 스레드가 아무 작업도 수행하지 않도록합니다.

https://developer.nvidia.com/content/easy-introduction-cuda-c-and-c

+0

알겠습니다. 고마워요. – Shibli