각 스레드 블록 (1 차원)이 여러 다른 작업으로 공유 메모리 내부의 배열에서 스캔을 실행해야하는 문제가 있습니다. 배열에는 최대 1024 개의 요소가 있습니다.CUDA의 공유 메모리에서 병렬 스캔
이러한 유형의 작업을 지원하는 라이브러리가 있습니까?
나는 Thrust와 CudPP를 확인했지만 데이터가 처음에는 전역 메모리에있을 때만 작동합니다. 내가 원하는 것은 아니 었습니다. 거의 작업을하지 않고 새로운 커널을 시작하고 싶지 않기 때문입니다. 그것은 매우 큰 오버 헤드를 가지고 있기 때문에 전역 메모리에 데이터를 저장합니다.
이러한 유형의 작업을 지원하는 공용 라이브러리가없는 경우이 작업을 한 번만 작성하고 몇 가지 다른 문제에서 사용하려는 경우 무엇을 제안합니까?
첫 번째 아이디어는 스캔 작업을 실행하는 간단한 장치 기능을 작성하는 것이지만 공유 메모리에 액세스하고 커널 기능이 아닌 장치 기능에서 __syncthreads() 작업을 수행 할 수 있습니까? 다른 생각은 전체 함수를 매크로로 작성한 후 전 처리기가 코드를 커널 코드로 복사하지만 복잡한 매크로를 작성하는 것이 매크로를 사용하는 최선의 방법이 아니기 때문에 작동합니다.
추 신 : 다중 프로세서 2.1 버전을 스트리밍 했으므로 다른 커널에서 새 커널을 시작할 수 없습니다.
고마워요. 대답은 큐브가 정확히 내가 좋아하는 것 같습니다. 필자는 호스트 기능이 아닌 장치 기능을 작성하려고했습니다. 나는 그것을 그리워하고있다. – SqrtPi