2010-06-22 3 views
1

나는 NP-Complete 문제를 해결하기 위해 CUDA 코드를 작성했지만 성능은 의심스럽지 않았습니다. 내가 알고Cuda optimization techniques

(공유 memroy, 텍스처, zerocopy를 사용하여 ...) "일부"최적화 기술은 CUDA 프로그래머가 알아야 할 가장 중요한 최적화 기술은 무엇입니까

?

답변

5

당신은 NVIDIA의 CUDA 프로그래밍 모범 사례 가이드를 읽어야 http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_BestPracticesGuide.pdf

이 관련 "우선 순위"여러 다른 성능 정보가 있습니다. 여기에 최우선 팁 중 일부입니다 :

  1. 를 해결하기 위해 장치의 유효 대역폭을 사용하여 어떤 성능의 상한은
  2. 호스트와 디바이스 간의 메모리 전송을 최소화 커널에 대한되어야한다 - 경우에도 즉
  3. 합체 모든 메모리
  4. 이 같은 단일 날실 내에 분지 않도록 코드 실행 스레드를 직렬화
  5. 글로벌 메모리 액세스에 대한 공유 메모리 액세스를 선호 액세스가 효율적이지 기기의 하 계산 수단
+2

6. 은행 충돌을 피하십시오. 내 응용 프로그램에서 PS , 내가 발견 한 정적으로 할당 된 공유 메모리의 사용은 모든 (커널 <<< 블록, 스레드, sharedMemSize >>>()로) 동적으로 할당 된 메모리의 사용보다 빠르다 이는 모범 사례 가이드에 설명되어 있습니다. – LonliLokli

2

새로운 NVIDIA 비주얼 프로파일 러 (v4.1)는 자동화 된 성능 분석을 지원하여 응용 프로그램의 성능 향상 기회를 확인합니다. 또한 Best Practices Guide에서 발견 된 문제에 대한 가장 유용한 섹션으로 직접 연결됩니다. Visual Profiler는 NVIDIA 개발자 웹 사이트 CUDA 툴킷의 일부로 무료로 제공됩니다 : http://www.nvidia.com/getcuda.