Свойства функции для __internal_trig_reduction_slowpathd

На данный момент я пытаюсь оптимизировать некоторые ядра cuda...

При компиляции с опцией --ptxas-options=-v я получаю информацию о регистрах %co.

В моем случае я всегда получаю дополнительные строки, которые для меня не имеют смысла:

ptxas : info : Compiling entry function '_Z20backprojLinTexInterpP7double3S0_S0_P7double2iiiiiS2_PdPf' for 'sm_20'
ptxas : info : Function properties for _Z20backprojLinTexInterpP7double3S0_S0_P7double2iiiiiS2_PdPf
8 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas : info : Used 47 registers, 32 bytes smem, 112 bytes cmem[0], 56 bytes cmem[16]
ptxas : info : Function properties for __internal_trig_reduction_slowpathd
40 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads

строки с 1 по 4 мне понятны, а что последние строки?

Гугл тут не поможет.... уже пробовал.

Кто-нибудь знает, что означают эти строки? Я получаю их для каждого скомпилированного ядра в моей программе.


person raspiede    schedule 05.06.2013    source источник
comment
__internal_trig_reduction_slowpathd() — это внутренняя подпрограмма в математической библиотеке CUDA. Он используется для точного уменьшения аргумента для триггерных функций с двойной точностью (sin, cos, sincos, tan), когда аргумент очень велик по величине. Для этих больших аргументов используется сокращение аргументов в стиле Пейна-Ханека. Для sm_20 и выше это вызываемая подпрограмма для минимизации размера кода в приложениях, которые часто вызывают триггерные функции. Вы можете увидеть код, просмотрев файл math_functions_dbl_ptx3.h, который находится в каталоге подключаемых файлов CUDA.   -  person njuffa    schedule 05.06.2013
comment
@njuffa: Вероятно, это должен быть ответ, а не комментарий.   -  person talonmies    schedule 06.06.2013
comment
@talonmies: Спасибо за одобрение, но я все еще жду ответа от оригинального постера, действительно ли то, что я написал выше, касается его вопроса. Мой комментарий ответил на вопрос Что такое _internal_trid_reduction_slowpathd? это не буквальный вопрос, который был задан, но я думал, что это вопрос, который подразумевался. Я предпочитаю этот первый подход к комментарию вместо того, чтобы позже получить ответ, когда это должно было быть опубликовано как комментарий, а не как ответ :-)   -  person njuffa    schedule 06.06.2013
comment
да вроде правильно. Я использую функции sincos в своем ядре... Интересно также то, что при компиляции моей программы в Linux я не получаю этих строк. Также количество регистров намного выше...   -  person raspiede    schedule 07.06.2013
comment
Эта статистика ядра создается только тогда, когда -Xptxas -v (или эквивалентная длинная форма) передается в nvcc. Проверьте свою систему сборки, чтобы убедиться, что для nvcc установлены одни и те же флаги на всех платформах. Количество регистров может зависеть от различных настроек флага компиляции и от того, является ли ваша целевая платформа 32-разрядной или 64-разрядной. Поскольку указатели имеют одинаковый размер узла и устройства, код, созданный для 64-разрядной платформы, часто требует использования дополнительных 32-разрядных регистров, поскольку для хранения каждого указателя требуется два регистра вместо одного на 32-разрядной платформе. Аналогично для long в системах, отличных от Windows.   -  person njuffa    schedule 10.06.2013


Ответы (1)


__internal_trig_reduction_slowpathd() — это внутренняя подпрограмма в математической библиотеке CUDA. Он используется для точного уменьшения аргумента для триггерных функций с двойной точностью (sin, cos, sincos, tan), когда аргумент очень велик по величине. Для этих больших аргументов используется сокращение аргументов в стиле Пейна-Ханека. Для sm_20 и выше это вызываемая подпрограмма для минимизации размера кода в приложениях, которые часто вызывают триггерные функции. Вы можете увидеть код, просмотрев файл math_functions_dbl_ptx3.h, который находится в каталоге подключаемых файлов CUDA.

person njuffa    schedule 10.06.2013