2017-10-29 8 views
1

nvprof으로 프로필을 작성하려는 작은 CUDA 프로그램이 있습니다. 문제는 내가 CUDA 프로그램에서 nvprof가 있는지 어떻게 알 수 있습니까?

  • 내가 nvprof my_prog을 실행

    , 그것은 cudaProfilerStartcudaProfilerStop를 호출하는 방식으로 프로그램을 작성 할 것입니다.
  • my_prog을 실행할 때 위의 API를 호출하지 않으므로 프로파일 링 오버 헤드가 제거 될 수 있습니다.

따라서 문제는 nvprof이 실행될 때 추가 명령 줄 인수없이 내 코드를 인식하도록 만드는 방법이됩니다.

답변

1

nvprof가 연결되어 있지 않을 때 cudaProfilerStart/Stop 호출이 측정 가능한 간접비를 도입하는지 측정하고 확인 했습니까? 나는 이것이 사실이라고 의심한다.

문제가있는 경우 #ifdef 지시문을 사용하여 릴리스 빌드에서 이러한 호출을 제외 할 수 있습니다.

nvprof가 실행 중인지 여부를 감지 할 수있는 방법이 없습니다. 프로파일 링 된 응용 프로그램이 프로파일 러를 "감지"하여 동작을 변경하는 경우 그러한 종류의 프로파일 링 목적을 상쇄하기 때문입니다.