как интерпретировать имена ptx функций - PullRequest
0 голосов
/ 13 сентября 2018

при компиляции файла cuda:

nvcc -arch=sm_61 -std=c++11 -Xptxas -v,-warn-spills --use_fast_math -maxrregcount 128 nv_wavenet_perf.cu -o nv_wavenet_perf_dual

Я получаю много строк предупреждений о разливе:

ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi256ELi256ELi1EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi256ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi256ELi256ELi3EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi256ELi256ELi4EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi256ELi256ELi1EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi256ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi256ELi256ELi3EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi256ELi256ELi4EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi128ELi256ELi1EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi128ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi128ELi256ELi3EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z25nv_wavenet_singleBlock_8RIffLi64ELi128ELi256ELi4EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi128ELi256ELi1EEv17nv_wavenet_paramsIT_T0_E'
ptxas warning : Registers are spilled to local memory in function '_Z20nv_wavenet_dualBlockIffLi64ELi128ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E'
...
  1. Как я могу узнать, какая функция проливается, поскольку представленное здесь имя функции не может быть идентифицировано для меня.

  2. Я хочу видеть утечку только для функций "dualBlock". Возможно ли это?

1 Ответ

0 голосов
/ 13 сентября 2018

Как я могу определить, какая функция проливается, поскольку представленное здесь имя функции не может быть идентифицировано для меня.

CUDA использует Itanium C ++ ABI .То, что вы видите, это стандартные искаженные имена в стиле g ++.Каждый инструментарий хоста поставляется с деманглером, который может анализировать искаженные имена функций (наиболее типичен фильтр c ++).Есть даже онлайн деманглеры.Они будут разбирать имена функций.Внутренний дескриптор символа CUDA ABI не поддерживается AFAIK.

Например:

_Z20nv_wavenet_dualBlockIffLi64ELi128ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E

преобразуется в

void nv_wavenet_dualBlock<float, float, 64, 128, 256, 2>(nv_wavenet_params<float, float>)

I onlyхочу увидеть утечку для функций "DualBlock".Возможно ли это?

Эти предупреждения генерирует ptxas, ассемблер.Я не знаю, как сделать эти предупреждения избирательными.Они либо включены, либо выключены.Если вы отдельно скомпилируете определенную функцию, то, насколько мне известно, возможно, будет возможно контролировать уровень вывода из ассемблера для этого вызова, но не функцию за функцией в рамках одного вызова компиляции.

...