CUDA의 내 프로젝트에서 고성능 멀티 스캔/다중 접두사 합계 (한 커널 실행의 여러 행) 기능을 찾고 있습니다.CUDA의 고성능 접두어 합계/스캔 기능, cuDPP 라이브러리 대체 기능
나는 추력 라이브러리에서 시도했지만 너무 느립니다. 또한 nvcc 디버그 플래그 (-g -G)를 사용하여 컴파일 한 후 충돌을 추력합니다.
추력으로 실패한 후 나는 CUDA 툴킷의 일부였던 cuDPP 라이브러리에 집중했다. cuDPP 성능은 정말 좋지만 라이브러리가 최신 cuda 5.5로 업데이트되지 않았으며 메모리 검사기로 디버깅하는 동안 cudppMultiScan() 함수에 전역 메모리 위반 문제가 있습니다. (cuda 5.5, nsight 3.1, visual studio 2010, gtx 260 cc 1.3)
아무도이 두 라이브러리 대신 무엇을 사용해야하는지 잘 모릅니 까? 예를 들어 알고리즘의 전문화 (INT처럼 또는 float) 기본 유형의 공유 메모리를 사용할 수 있지만 :
R.
AccelerEyes에서 작업중인 [ArrayFire] (http://accelereyes.com/arrayfire)를 보았습니까? – arrayfire
아니요, 전에는 보지 못했지만 꽤 재미있을 것 같습니다. 감사! :) 성능은 어떨까요? 더 많은 생산성 또는 성능 중심의 라이브러리입니까? – user1946472
추력을 사용하여 행렬을 스캔하려면 'inclusive_scan'을 반복해서 호출하지 마십시오. 각 행에 인덱스를 할당하고'inclusive_scan_by_key'를 사용하십시오. 이 [예제] (https://github.com/thrust/thrust/blob/master/examples/sum_rows.cu)를 적용 할 수 있습니다. –