Флаг компилятора nvcc -Xptxas –v не имеет никакого эффекта - PullRequest
9 голосов
/ 15 сентября 2010

У меня есть проект CUDA.Он состоит из нескольких файлов .cpp, которые содержат логику моего приложения, и одного файла .cu, который содержит несколько ядер, плюс функцию __host__, которая их вызывает.

Теперь я хотел бы определить количество регистров, используемых моимядро (s).Мой обычный вызов компилятора выглядит так:

nvcc -arch compute_20 -link src/kernel.cu obj/..obj obj/..obj .. -o bin/..exe -l glew32 ...

Добавление флага компилятора "-Xptxas –v" к этому вызову, к сожалению, не имеет никакого эффекта.Компилятор по-прежнему выдает тот же текстовый вывод, что и раньше.Скомпилированный .exe также работает так же, как и раньше, с одним исключением: моя частота кадров увеличивается до 1800 кадров в секунду, вместо 80 кадров в секунду.

Ответы [ 6 ]

9 голосов
/ 01 марта 2011

У меня была такая же проблема, вот мое решение:

  1. Скомпилируйте * cu файлы только в устройство * файл ptx, это приведет к удалению кода хоста

    nvcc -ptx *.cu

  2. Компиляция * PTX-файл:

    ptxas -v *.ptx

Второй шаг покажет вам количество использованных регистров поядро и объем используемой разделяемой памяти.

5 голосов
/ 07 декабря 2014

Преобразуйте compute_20 в sm_20 в вызове компилятора.Это должно это исправить.

2 голосов
/ 16 апреля 2012

При использовании «-Xptxas -v», «-arch» мы не можем получить подробную информацию (номер регистра и т. Д.).Если мы хотим увидеть подробности, не упуская возможности назначить архитектуру GPU (-arch, -code) вперед, мы можем сделать следующие шаги: nvcc -arch compute_XX *.cu -keep затем ptxas -v *.ptx.Но мы получим много файлов обработки.Конечно, ответ Когута к сути.

2 голосов
/ 15 сентября 2010

когда вы компилируете

nvcc --ptxas-options=-v

1 голос
/ 29 июня 2011

Возможно, вы захотите настроить параметры по умолчанию для вашего компилятора.

Например, VStudio goto: Tools-> Options-> ProjectsAndSolutions-> BuildAndRun затем установите вывод многословия на Normal.

0 голосов
/ 19 сентября 2010

Не совсем то, что вы искали, но вы можете использовать визуальный профилировщик CUDA, поставляемый с NVIDIA GPU для вычислений SDK Помимо многих других полезных сведений, он показывает количество регистров, используемых каждым ядром в вашем приложении.

...