1

コンパイル済みの 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 を使用できない、または使用に適応できない場合、デマングリングを行うにはどうすればよいですか?
4

1 に答える 1

3

ドキュメントからの引用

デバイス関数の C++ 実装は、Itanium C++ ABI に従います。

c++filtItanium C++ ABI シンボルのデマングルを実装しているため、PTX ソースまたは ELF オブジェクトからカーネル名とデバイス関数名をデマングルできます。

ただし、投稿した他のシンボルは CUDA ABI シンボルです。c++filtCUDA ABI をサポートしていないため、これらをサポートしていません。似ているかどうかは関係ありません。これが本当に必要な場合は、NVIDIA に CUDA ABI シンボルのデマングラーをツールチェーンに追加するよう請願してください。これは、ELF ユーティリティやその他の内部で行ったようにです。

于 2016-08-31T14:59:08.220 に答える