2012-01-27 2 views
2

멀티 쓰레딩 애플리케이션을 프로파일 링하기 위해 CUDA Computeprof (CUDA 프로파일 러)를 사용하려고합니다.멀티 쓰레딩과 함께 작동하지 않는 CUDA computeprof

Qt로 구현 된 두 개의 스레드가 있는데, 각각 다른 CUDA 컨텍스트를 사용합니다. CUDA 드라이버 API를 사용하고 있습니다. 프로파일 러 응용 프로그램은 첫 번째 (주) 스레드에서만 CUDA 호출을 감지하고 다른 스레드의 호출을 완전히 무시합니다.

해결 방법이나 이유가있는 사람이 있습니까?

+1

시각적 프로파일 러는 한 번에 하나의 CUDA 컨텍스트 만 프로파일 링 할 수 있습니다. – talonmies

+0

@talonmies 아마도 답을 만드시겠습니까? – Bart

+0

@ Bart : 개인적으로 테스트를 거치지 않은 "코너 케이스"가 하나 있었기 때문에 의견입니다. Brano는 자신의 대답으로 확인한 것으로 보입니다. – talonmies

답변

1

일반적으로 Nvidia Parallel Nsight를 사용하여 멀티 스레드 응용 프로그램을 프로파일 링합니다. 하지만 MonteCarloMultiGPU SDK 3.2 예제에서 CUDA 프로파일 러를 테스트했으며 동일한 세션에 대한 모든 CUDA 컨텍스트를 실제로 프로파일 링합니다. CUDA 4.0과 함께 제공되는 CUDA 프로파일 러를 사용하고 있습니다.

+0

새로운 multigpu 구현이 CUDA> = 4.0에서 사용되고 단일 스레드에서 다중 컨텍스트가 유지되는 경우가있을 수 있습니다. 하지만 멀티 쓰레드, 멀티 GP 케이스는 작동하지 않습니다 (또는 최소한 다수의 GPU가있는 내 pthreads 기반의 선형 대수 코드에는 포함되지 않았습니다). – talonmies

+0

MonteCarloMultiGPU의 CUDA 3.2 버전을 테스트했습니다. CUDA 프로파일 러에서 실행될 때 출력에서 ​​"launching x threads"출력을 볼 수 있습니다. 그래서 여러 스레드에서 작동하지 것 같아요. 비주얼 프로파일 러는 여전히 CUDA 4.0의 것입니다. – brano

관련 문제