2011-08-09 3 views
1

L2 캐시가 여러 커널 호출 사이에서 해제되는지 궁금합니다. 예를 들어 데이터에 대한 사전 처리 작업을 수행하는 커널과이를 사용하는 두 번째 커널이 있습니다. 데이터 크기가 768KB 미만인 경우 더 우수한 성능을 얻을 수 있습니까? 나는 NVidia 녀석들이 그렇지 않으면 구현할 이유가 없다고 생각하지만 어쩌면 내가 틀렸을 것입니다. 아무도 그 경험이 있습니까?NVidia CUDA : L2 및 여러 커널 호출 캐시

답변

1

페르미 (Fermi)에서 L2 데이터 캐시에 대해 이야기한다고 가정합니다.

각 커널 호출 후에 캐시가 비워진다고 생각합니다. 내 경험상, 많은 메모리 액세스 (및 # L2 캐시 실패)가있는 동일한 커널의 두 번 연속 실행은 L1/L2 캐시 통계를 크게 변경하지 않습니다.

데이터 종속성에 따라, 커널의 두 번째 부분이 첫 번째 부분에서 처리 된 데이터를 재사용 할 수 있도록 하나의 커널에 두 단계를 넣을 수 있습니다 (일부 동기화 사용).

다른 트릭이 있습니다. 예를 들어 N SM과 같이 gpu에있는 경우 첫 번째 N * M1 블록을 사용하여 첫 번째 부분을 수행 할 수 있습니다. 두 번째 부분에 대한 다음 N * M2 블록. 동기화를 사용하여 첫 번째 부분의 모든 블록이 동시에 (또는 거의) 완료되는지 확인하십시오. 내 경험상 블록 예약 순서는 실제로 결정적입니다.

희망이 있습니다.

관련 문제