내 CUDA 커널이 메모리 대역폭 사용에 얼마나 좋은지 알고 싶습니다. 테슬라 K40c에서 ECC를 실행합니다. bandwidthTest
유틸리티에서 얻은 결과가 도달 가능한 최고치에 대한 좋은 근사값입니까? 그렇지 않으면 피크 대역폭을 찾기 위해 비슷한 테스트를 어떻게 작성합니까?CUDA 대역폭 도달 가능한 피크 테스트
나는 장치 메모리 대역폭을 의미합니다.
내 CUDA 커널이 메모리 대역폭 사용에 얼마나 좋은지 알고 싶습니다. 테슬라 K40c에서 ECC를 실행합니다. bandwidthTest
유틸리티에서 얻은 결과가 도달 가능한 최고치에 대한 좋은 근사값입니까? 그렇지 않으면 피크 대역폭을 찾기 위해 비슷한 테스트를 어떻게 작성합니까?CUDA 대역폭 도달 가능한 피크 테스트
나는 장치 메모리 대역폭을 의미합니다.
대역폭 테스트를위한 소스 코드는 CUDA SDK에 포함되어 있으므로 직접 검토 할 수 있습니다. bandwidthTest 예제는 장치와 호스트, 호스트와 장치, 장치와 장치 (카드의 메모리 전송) 사이의 전송 시간을 테스트합니다.
이것은 메모리 전송의 실제 실행이지만 몇 가지 활용 : 대용량 메모리 전송에
메모리 전송을 수행하는 동안 실제 작업을 수행하면 성능이 저하 될 수 있습니다. 그러나 대역폭 테스트 코드를 참조하여 전송 향상을위한 지침으로 사용할 수 있습니다. 고정 메모리, 비동기 전송 또는 명시 적 데이터 전송이 필요하지 않은 최신 공유 메모리 메소드를 고려하십시오. 또한 bandwidthTest는 메모리 주변의 대량 전송을 계산하는 것으로 공유 메모리와 같은 사항을 실제로 측정하지는 않습니다.
최종 성능은 커널과 수행중인 메모리 전송의 수 및 크기에 따라 크게 달라질 수 있습니다.
bandwidthTest가 충분하면 대역폭을 너무 많이 향상시킬 수 없습니다. 해당 기능은 간단한 복사 커널입니다. 커널에서 하나 이상의 데이터 값이 복사되도록하는 것이 좋습니다. 예를 들어 3d 데이터 세트를 다루는 경우 2d 스레드 블록으로 공간을 타일링하고 커널에는 z 차원에 대해 for 루프가 있습니다. – angainor