Depuração CNTK código-fonte no Visual Studio
As etapas para depurar kernels cuda:
- Instalar o NVIDIA Nsight seguindo as instruções daqui
- Siga as instruções para "Depuração local".
- Defina a variável de ambiente NSIGHT_CUDA_DEBUGGER = 1.
- Execute Visual Studio e o monitor Nsight como administrador.
- No Nsight Monitor-Options-CUDA>>, defina "Usar este monitor para anexação cuda" como True. Talvez seja necessário reiniciar o Nsight. Execute como administrador novamente.
- Em Visual Studio, vá para Nsight-Options> e verifique se as opções correspondem às suas opções no monitor do Nsight (por exemplo, as portas são as mesmas). Especialmente verifique se "Estabelecer conexão segura" é o mesmo em ambos.
- Clique com o botão direito do mouse no projeto MathCUDA no gerenciador de soluções e vá para Propriedades.
- Ir para Propriedades de Configuração –> CUDA C/C++ –> Dispositivo e definir Gerar Informações de Depuração de GPU como Sim
- Ir para Propriedades de Configuração –> Vinculador CUDA –> Geral e definir Gerar Informações de Depuração de GPU como Sim
- Adicione seus pontos de interrupção no kernel, recompile CNTK e prepare-se para executar o que estiver tentando depurar.
- No VS, vá para Depurar –> Anexar ao Processo, defina o Transporte para o Depurador de GPU do Nsight e defina Qualificador como localhost.
- Inicie CNTK.
- Clique em atualizar e localize CNTK na lista de processos e anexe. Quando ele atinge um ponto de interrupção, você deve ser capaz de ver todas as variáveis locais do kernel. Se você só vir globais cuda como threadIdx e blockIdx, você não definiu corretamente os sinalizadores de depuração de GPU nas propriedades MathCUDA.