나는 Windows 7에서 CUDA C로 몇 가지 프로그램을 작성했다. 나는 블록 크기로 실험했다. 대부분의 경우 256 또는 512 블록 크기가 다른 것보다 더 나은 성능을 제공한다는 것을 알게되었습니다. 어떤 신체가 그 뒤에 정확한 기술적 이유를 말해 줄 수 있습니까? 또는 알 수있는 자원을 지적하십시오. 32의 다른 블록 크기 배수 (워프)는 성능이 떨어집니다. 미리 감사드립니다.왜 CUDA 블록 크기가 256 또는 512 일 때 다른 블록에 비해 성능이 좋아 지나요?
1
A
답변
1
실제 측정이 없으면 주어진 칩에 대한 최적의 블록 크기를 확신 할 수 없습니다. 예를 들어, 2D 텍스처링을하는 경우 16x4 블록이 실제로 제대로 작동합니다. 귀하의 경우에는 512가 칩의 메모리 파티션 수의 배수가 될 가능성이 있습니다. (6 개의 메모리 파티션이있는 GeForce 8800 GTX에서, 384는 대역폭이 제한된 커널의 블록 크기가 매우 컸습니다.)
점유율은 성능에 영향을 미치는 여러 고려 사항 중 하나 일뿐입니다. 중간 결과를 저장하기 위해 레지스터를 사용할 수있는 작업 부하, 더 많은 레지스터를 사용하고 더 적은 스레드가 가장 잘 작동하는 작업량 .
죄송합니다. 좀 더 명확한 답변을 드릴 수는 없지만 복잡한 문제입니다.
+0
감사! "메모리 파티션"블록 크기와 메모리 파티션을 어떤 식 으로든 상관시킬 수 있다는 매우 중요한 단서를 제공했습니다. 고마워. – user961614
관련 문제
- 1. jsp 모양이 좋아 지나요?
- 2. CUDA : 블록에 대한 더 많은 치수 또는 단 하나의 치수?
- 3. VB.Net에서 처음부터 비트 맵 이미지를 만들 때 화질이 좋아 지나요?
- 4. 어떻게 swf 파일 크기가 똑똑해 지나요?
- 5. 블록 크기를 늘리면 성능이 저하됩니다.
- 6. cuda-cdb에서 스위칭 블록 포커스
- 7. 256 * 256 아이콘 문제가 다시 IImageList
- 8. CUDA 2D, 3D 스레드 블록
- 9. Cuda 커널을 프로그래밍 할 때 어떤 크기가 정수입니까?
- 10. cuda.net은 CUDA 런타임 또는 CUDA 드라이버를 기반으로합니까?
- 11. drupal 블록에 다른 사람이있는 경우
- 12. 왜 또는 FREETEXTTABLE 다른
- 13. 왜 부스트를 사용하면 파일 크기가 너무 커지나요?
- 14. 블록 당 스레드를 결정하는 CUDA, 그리드 당 블록
- 15. 은 wsdl을 통해 최대 크기가 2^256 인 숫자를 전달합니다.
- 16. mergesort가 연결된 목록에 비해 왜 더 좋은가요?
- 17. Cuda 다른 메모리 할당
- 18. 왜 스케일링 객체가 다운되어 OpenGL ES에서 객체가 가벼워 지나요?
- 19. 네이티브 C++에 비해 C++/CLI 성능이 향상 되었습니까?
- 20. 다른 플랫폼에서 CUDA 결과가 다릅니다
- 21. SMS를 보낼 때 GSM CMS 오류 512
- 22. 앱 스토어에 프로젝트를 제출 한 후 왜 appstore 이미지 (512 * 512)가 유리 효과를 얻나요?
- 23. 는 C의 경우 - 다른 블록 ++
- 24. IN (하위 쿼리)을 사용할 때 성능이 크게 저하됩니다. 왜?
- 25. CTR 모드에서 AES 256
- 26. CUDA : 축소 또는 원자 연산?
- 27. HTML5 캔버스가 찢어 지나요?
- 28. OpenGL이 찢어 지나요?
- 29. Cuda : GTX460의 아키텍처 및 그리드/블록/스레드의 코드 관련 분리
- 30. 인라인 블록 및 기능 블록, 다른 점은 무엇입니까?
[Cuda occupancy calculator] (http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls)를 사용하여 커널에 가장 적합한 블록 크기를 확인하십시오. 당신이 쓰는 커널 일 수도 있습니다. 내 경험에 비추어 볼 때, 블록 크기 256은 실제로 우연의 일치가 되기에는 너무나 종종 최적의 선택이지만, 설명을 찾지 못했습니다. – aland