9

PTX情報に関する有用な情報があまり--ptxas-options=-v 見つかりません。小さな宣伝文句がある2008NVCCpdfを見つけましたが、詳細はありません。
1)どういう64 bytes cmem[0], 12 bytes cmem[16]意味ですか?私はそれが一定の記憶を指していることを収集します。私はコードで定数memを使用していないので、これはコンパイラーからのものでなければなりません。(RO memには何が入りますか?)
2)どういう49152+0 bytes smem意味ですか?はい、それは共有メモリですが、2つの#はどういう意味ですか?
3)これを支援するドキュメントはありますか?(それは何と呼ばれていますか?)
4)* .ptxファイルを説明するドキュメントはどこにありますか?(cuda assyコードを読んで理解できるようにしたいと思います。)

4

2 に答える 2

7
  1. cmemここで議論されています。あなたの場合、カーネルに引数を渡すために64バイトが使用され、コンパイラが生成した定数によって12バイトが占有されることを意味します。

  2. の場合smem、最初の数字はコードが要求するデータの量で、2 番目の数字 ( 0) はシステム目的で使用されるメモリの量を示します。

  3. ptxas詳細な出力形式に関する公式情報は知りません。たとえば、「CUDA Occupancy calculator」では、smem説明なしで値を合計するように単純に言います。

  4. nVidia の Web サイトには、いくつかの PTX ドキュメントがあります。最も基本的なものはPTX: Parallel Thread Execution ISA Version 3.0です。

于 2012-09-07T18:27:20.193 に答える
1

「その他の NVCC の使用法」を参照してください。彼らは、一定の銀行割り当てはプロファイル固有であると述べています。

PTX ガイドでは、64KB のコンスタント メモリとは別に、コンスタント メモリ用にさらに 10 個のバンクがあると述べています。ドライバーは、これらの領域に定数バッファーを割り当てて初期化し、ポインターをカーネル関数パラメーターとしてバッファーに渡すことができます。

nvcc に指定されたそのプロファイルは、どの定数がどのメモリに入るかを処理すると思います。とにかく、各定数メモリcmem[n] が 64KB 未満であっても心配する必要はありません。各バンクのサイズは 64KB であり、グリッド内のすべてのスレッドに共通であるためです。

于 2013-03-28T17:41:48.027 に答える