2011-07-04 4 views

답변

1

내가 NSight를 사용하지 않는,하지만 당신은 프로파일 러와 함께 살펴 보겠습니다 일반적인 필드는 기본적으로 다음과 같습니다

  • 메모리 소비
  • 시간보다 구체적으로 기능

에서 소비, CUDA를 사용하면 GPU의 사용에주의를 기울일 것입니다.
다른 흥미로운 값은 컴파일러가 지역 변수를 레지스터 또는 로컬 메모리에 설정 한 방법입니다.

마지막으로, GPU와 데이터를주고받는 데 걸린 시간을 확인하고 계산 시간과 비교합니다.

1

은행 갈등의 경우 warp serialization을 시청해야합니다. here을 참조하십시오.

그리고 메모리 유착 < 모니터링에 대한 here is a discussion는 - 기본적으로 당신은 단지 Global Memory Loads/Stores - Coalesced/Uncoalesced 및 플래그 Uncoalesced를 볼 필요가있다.

0

M. Tibbits는 기본적으로 은행 갈등 및 비 합체 메모리 트랜잭션에 대해 알아야 할 사항에 답변했습니다. 당신이 있는지 확인

  1. 를 사용하여 응용 프로그램 또는 시스템 추적 : 천천히 내 프로그램이 발생할 수 있습니다합니다 (Nsight 프로파일을 사용하는 경우)에서 볼 수있는 중요한 분야/일이 무엇인지에 대한 질문에 대한

    CPU 바운드, 메모리 바운드 또는 커널 바운드. 이것은 타임 라인을보고 수행 할 수 있습니다.

a. CPU 바운드 - 커널이나 메모리 복사가 일어나지 않지만 응용 프로그램 스레드 (스레드 상태)가 녹색 인 큰 영역이 나타납니다.

b. 메모리 바운드 - 커널 실행이 장치에서 또는 장치로의 메모리 전송에서 차단되었습니다. 메모리 행을 보면이 사실을 알 수 있습니다. 메모리 복사에 많은 시간을 소비한다면 CUDA 스트림을 사용하여 응용 프로그램을 파이프 라인으로 연결하는 것을 고려해야합니다. 이렇게하면 메모리 전송과 커널을 겹치게 할 수 있습니다. 코드를 변경하기 전에 전송과 커널의 지속 시간을 비교하여 성능이 향상되는지 확인해야합니다.

c. 커널 바운드 - 응용 프로그램 시간의 대부분이 커널을 기다리는 데 소비되면 "프로필"활동으로 전환하고, 응용 프로그램을 다시 실행하고, 하드웨어 카운터 수집을 시작하여 커널의 실제 실행 시간을 만드는 방법을 확인해야합니다 빠릅니다.

관련 문제