На основании полученного вами сообщения об ошибке - профилировщик не генерирует выходные данные для самого первого запуска приложения. При первом запуске не включаются счетчики профилировщика, и поэтому эта проблема не связана с «инструкциями gld * или« инструкциями gst * ». Выходные данные профилировщика могут быть пустыми, если имеются явные вызовы синхронизации до завершения приложения. Вы можете попробовать добавление вызовов cudaDeviceSynchronize (), cudaStreamSynchronize () или cudaEventSynchronize () перед завершением работы приложения. Вы можете подтвердить, является ли это проблемой, запустив приложение из командной строки и проверив, есть ли в данных профилировщика командной строки некоторые данные.
> export COMPUTE_PROFILE=1
> <application>
Проверьте выходной файл профилировщика "cuda_profile_0.log".
Вывод будет примерно таким (без номеров строк в начале каждой строки):
1 # CUDA_PROFILE_LOG_VERSION 2.0
2 # CUDA_DEVICE 0 Tesla C2075
3 # CUDA_CONTEXT 1
4 # TIMESTAMPFACTOR fffff6de60e24570
5 method,gputime,cputime,occupancy
6 method=[ memcpyHtoD ] gputime=[ 80.640 ] cputime=[ 278.000 ]
7 method=[ memcpyHtoD ] gputime=[ 79.552 ] cputime=[ 237.000 ]
8 method=[ _Z6VecAddPKfS0_Pfi ] gputime=[ 5.760 ] cputime=[ 18.000 ] occupancy=[ 1.000 ]
9 method=[ memcpyDtoH ] gputime=[ 97.472 ] cputime=[ 647.000 ]
Вам необходимо проверить, есть ли какие-либо методы, выводимые в журнал профилировщика. В приведенном выше примере строка 5 является строкой заголовка, и в строках с 6 по 9 есть 4 метода.
Также обратите внимание, что предупреждающее сообщение Visual Profiler 'Выбранные счетчики "gld инструкции 8 бит", "gld инструкции 16 бит" ... "ожидается даже после установки интерактивного флага в значение false. Это сообщение отображается каждый раз, когда выбираются счетчики "gld инструкция * или" инструкции gst * "и по умолчанию эти счетчики выбраны.