如何解释ptx函数名称

问题描述 投票:1回答:1

当我编译我的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”功能的溢出。这可能吗?
cuda nvcc ptx
1个回答
3
投票

如何判断溢出的函数是什么,因为此处显示的函数名称对我来说无法识别。

CUDA使用Itanium C++ ABI。你看到的是标准的g ++风格的错位函数名称。每个主机工具链附带一个解析器,可以解析损坏的函数名称(c ++ filt是最典型的)。甚至还有online demanglers。它们将对函数名称进行解码。内部CUDA ABI符号demangling是not supported AFAIK。

例如:

_Z20nv_wavenet_dualBlockIffLi64ELi128ELi256ELi2EEv17nv_wavenet_paramsIT_T0_E

de to to to to to to

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

我只想看到“dualBlock”功能的溢出。这可能吗?

那些警告是由汇编程序ptxas生成的。我没有办法让这些警告有选择性。他们要么开,要么开。如果你单独编译某个函数,就可以控制汇编程序对该调用的输出级别,但是根据我的意识,不能在单个编译调用中按函数函数。

© www.soinside.com 2019 - 2024. All rights reserved.