2014-12-15 2 views
0

CUDA에는 "요청 된 글로벌로드 처리량"과 "글로벌로드 처리량"이라는 두 가지 메트릭이 있습니다. .CUDA의 "요청 된 글로벌로드 처리량"과 "글로벌로드 처리량"의 차이점

What's the difference between "gld/st_throughput" and "dram_read/write_throughput" metrics? 글로벌로드 처리량과 드램로드 처리량의 차이를 알고 있지만 정확히 "요청 된 글로벌로드 처리량"은 무엇입니까?

내 CUDA 응용 프로그램이 전역 메모리 액세스에서 작동하는 방식을 알려고 싶다면 어떤 측정 항목을 사용해야합니까?

+0

@ 박영배는 당신이 쓴 두 번째입니다. 대답으로 써주십시오. –

답변

2

요청 됨 전역로드는 프로그래머가 작성한로드입니다. 이것은 메모리 엔진이 수행하는 "유효"전역로드와 구별하는 것입니다.

예를 들어, 전역 메모리에서 32 개의 부동 소수점을로드하면 에 32x4 바이트의 글로벌로드를 요청합니다. 이러한 32 개 부동 소수점이 동일한 128 바이트 세그먼트 내에 있으면이 32 개로드가 128 바이트의 단일 메모리 트랜잭션으로 병합됩니다. 그러나 이러한 부동 소수점이 흩어져있는 경우 메모리 엔진은 32 개의 부동 소수점을 모두로드하기 위해 여러 트랜잭션을 수행해야 할 수 있습니다. 최악의 경우, 모든 부동 소수점이 서로 128 바이트를 초과하는 경우 메모리 엔진은 부동 소수점 당 1 개의 트랜잭션을 발행합니다. 요청한 32x4와 달리 전역 메모리에서 32x128 바이트가 효과적으로로드됩니다.

관련 메모에서 메트릭 gld_efficiency100 * gld_requested_throughput/gld_throughput으로 정의됩니다. 따라서 모든 액세스가 완벽하게 병합 될 때 100 %가됩니다. 응용 프로그램의 성능을 확인하려면 이러한 다양한 측정 항목을 계속 관찰하고 싶을 수 있습니다.

+0

감사 영배 ~ –