コンパイル済みの PTX を c++filt でフィルタリングしていますが、一部の名前/ラベルのみが取り除かれ、一部がそのまま残ります。たとえば、次のようになります。
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
の接尾辞が異なることに注意してください (これらの名前のプレフィックスをどのようにデマングルする必要があるかという問題もありますが、それについては忘れましょう)。
- c++filt をパラメーター名/ラベルにも適用するように強制することはできますか? より一般的には、PTX ファイル内のマングルされたすべての C++ 名に対して?
- すでに持っている「フォーマット」に加えて、CUDA「フォーマット」を認識して c++filt を拡張することは可能/簡単
[-s|--format {none,auto,gnu,lucid,arm,hp,edg,gnu-v3,java,gnat,dlang}]
ですか? - この場合、c++filt を使用できない、または使用に適応できない場合、デマングリングを行うにはどうすればよいですか?