2017-04-06 24 views
0

CUDA 코드가있는 파이썬 스크립트를 실행하기 위해 GPU가 2 개인 원격 기계를 사용하고 있습니다. 코드의 성능을 향상시킬 수있는 곳을 찾으려면 nvprof을 사용하려고합니다.nvprof는 파이썬 스크립트를 프로파일 링 할 때 사용 가능한 모든 GPU를 사용합니다.

nvprof --profile-child-processes ./myscript.py을 호출 할 때 각 GPU에서 동일한 ID를 가진 프로세스가 시작되지만 원격 시스템에서 2 GPU 중 하나만 사용하려는 코드를 설정했습니다.

nvprof에 프로파일 링을 위해 하나의 GPU만을 사용하려면 어떤 인수가 있습니까?

+3

'nvprof' 액세스를 제한하기 위해 환경 변수'CUDA_VISIBLE_DEVICES = "0"'을 사용하십시오. 예를 들어'CUDA_VISIBLE_DEVICES = "0"nvprof --profile-child-processes./myscript.py'는 nvprof를 첫번째 GPU로 제한하고,'CUDA_VISIBLE_DEVICES = "1"nvprof --profile-child-processes ./myscript.py '2 차 GPU 등으로 제한 될 것입니다. env var는 문서화되어 있습니다 [here] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars). 'nvprof --help'는 특정 활동을 특정 GPU로 제한 할 수있는'--devices' 스위치가 있음을 보여줍니다. –

답변

0

CUDA environment variableCUDA_VISIBLE_DEVICES은 특정 GPU 만 사용하도록 CUDA 런타임 API를 제한하는 데 사용할 수 있습니다.

CUDA_VISIBLE_DEVICES="0" nvprof --profile-child-processes ./myscript.py 

또한, nvprofdocumented이며, 또한 nvprof --help를 통해 명령 줄 도움말을 가지고 :이처럼 시도 할 수 있습니다. 명령 줄 도움말을 보면 --devices 스위치가 표시되어 특정 GPU 만 사용하도록 일부 기능을 제한하는 것처럼 보입니다. 당신은 다음과 같이 시도 할 수 있습니다 :

nvprof --devices 0 --profile-child-processes ./myscript.py