2014-12-27 3 views
0
에서 공유 메모리에 배열의 선언 I가 공유 메모리에 배열을 저장하는 다음 CUDA 커널을 구현하고

을 구현하는 커널을 실행하는 하나 개의 스레드를합니까 핵심.는 CUDA

는이 커널을 실행하는 모든 스레드가이 줄을 볼 수 있기 때문에이 커널은 새로운 배열을 만들 것입니다 실행하는 모든 스레드처럼 보인다 :

__shared__ int sh_arr[BOCK_SIZE]; 

는 경우가 그 첫 번째 스레드이 커널을 실행 이 라인을 보게 될 것이고, 이후의 모든 커널은이 라인을 간과 할 것입니다.

답변

1

CUDA의 공유 변수는 동일한 블록의 스레드간에 공유됩니다. 두드리는 방법은 정확히 모르지만 동일한 스레드 블록의 스레드는 __shared__ int sh_arr[BOCK_SIZE];으로 표시됩니다. 그러나 __shared__ 수정자를 가지고 있기 때문에 하나의 스레드 만 배열을 생성하고 다른 스레드는 배열을 사용합니다.