我正在通过c++filt过滤编译后的PTX,但它只分解了一些名称/标签,并保留了一些原有的名称/标签。例如,这是:
func (.param .b32 func_retval0) _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii(
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_0,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_1,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_2
)令人沮丧的是:
.func (.param .b32 func_retval0) _INTERNAL_19_gather_bits_cpp1_ii_56538e7c::__shfl(int, int, int)(
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_0,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_1,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii_param_2
)而不是至少这一点:
.func (.param .b32 func_retval0) _INTERNAL_19_gather_bits_cpp1_ii_56538e7c::__shfl(int, int, int)(
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c::__shfl(int, int, int)_param_0,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c::__shfl(int, int, int)_param_1,
.param .b32 _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c::__shfl(int, int, int)_param_2
)我意识到c++filt对CUDA PTX没有明确的支持;但是请注意,在示例中,非直角名称与示例中仅通过添加_param_0、_param_1等后缀的名称不同(还有一个问题,即这些名称的前缀应该如何去掉,但让我们忘记这一点)。
[-s|--format {none,auto,gnu,lucid,arm,hp,edg,gnu-v3,java,gnat,dlang}])之外,是否有可能/容易增加对数据自动化系统“格式”的认识来增强[-s|--format {none,auto,gnu,lucid,arm,hp,edg,gnu-v3,java,gnat,dlang}]?发布于 2016-08-31 14:59:08
引用文档的话
设备功能的C++实现遵循Itanium C++ ABI。
c++filt实现了Itanium C++ ABI符号的解析,因此它可以将内核名和设备函数名从C++源或ELF对象中分离出来。
但是,您发布的其他符号是CUDA ABI符号。c++filt不支持这些,因为它不支持CUDA ABI。它们看起来是否相似是无关紧要的。如果你真的需要这一点,那么请NVIDIA为CUDA ABI符号添加一个工具链,就像它们在ELF实用程序和其他内部工具中所做的那样。
https://stackoverflow.com/questions/39249151
复制相似问题