私はCompute_Capability 2.0デバイス(GTX460)でCUDA 4.0 archを使用しています。 'cubin'と 'ptx'ファイルの違いは何ですか? 私はcubinがgpuのネイティブコードだと思うので、これはarchです。 ptxはJITコンパイルを介してFermiデバイス(たとえばGeforce GTX 460)上で実行される中間言語です。私がcuソースをコンパイルするとき、私はptxかcubinターゲットのどちらかを選ぶことができます。私がcubinファイルを望むなら、私は "code = sm_20"を選択します。しかし、ptxファイルが必要な場合は、 "code = compute_20"を使用します。 正しいですか?NVIDIA NVCCとCUDA:Cubin vs. PTX
11
A
答えて
17
あなたは、ターゲットとするデバイスを制御するためのオプションでコンパイル段階(-ptx
と-cubin
)を選択するためのオプション(-code
)を混同しているので、あなたは、ドキュメントを再訪する必要があります。
NVCCはNVIDIAコンパイラドライバです。 -ptx
と-cubin
オプションは、デフォルトでコンパイルの特定のフェーズを選択するために使用されます。フェーズ固有のオプションはありません。nvccは入力から実行可能ファイルを生成しようとします。ほとんどの人は-c
オプションを使用してnvccにオブジェクトファイルを生成させ、その後デフォルトのプラットフォームリンカによって実行可能ファイルにリンクされます。-ptx
および-cubin
オプションは、ドライバAPIを使用している場合にのみ有効です。中間段階の詳細については、CUDA Toolkitのインストール時にインストールされているnvccマニュアルを参照してください。
-ptx
の出力はプレーンテキストのPTXファイルです。 PTXはNVIDIA GPUの中間アセンブリ言語であり、まだ完全に最適化されておらず、後にデバイス固有のコードにアセンブルされます(異なるデバイスのレジスタ数が異なるため、完全に最適化されたPTXは間違っています)。-cubin
からの出力は、1つ以上のデバイス固有のバイナリイメージと(オプションで)PTXを含むことができる太いバイナリです。
あなたが参照する-code
引数は、まったく異なる目的を持っています。私はいくつかの例を含むnvccのドキュメントをチェックすることをお勧めします。一般的には、より多くの制御を可能にし、1つのバイナリで複数のデバイスをターゲットにすることができるので、-gencode
オプションを使うことをお勧めします。簡単な例として:
-gencode arch=compute_xx,code=\'compute_xx,sm_yy,sm_zz\'
原因は、計算能力xxのすべてのデバイスを標的とする(すなわちarch=
ビット'S)及び最終的な脂肪バイナリにsm_yyとsm_zzに特異的なバイナリをPTX(code=compute_xx
)を埋め込むだけでなく、装置にNVCC 。
関連する問題
- 1. OpenMP 4.5用のGCCをNvidia PTX GPGPUにオフロードする方法
- 2. NVIDIA Parallel Nsight Vs Visual Profiler
- 3. - のNvidia GPUとVIRTUALENVのtensorflow:CUDA-9.0-VS-CUDA-8.0、cuDNN-7.0-VS-cuDNN-6.0
- 4. NVCC警告レベル
- 5. ptxにハッキングする
- 6. nvccとg ++でコンパイル
- 7. メモリの割り当てNvidia vs AMD
- 8. NVCC 5.0とOpenACC
- 9. nvcc warning in cuda 8.0
- 10. Theano行方不明NVCCコンパイラ
- 11. CUDA nvccコンパイラセットアップUbuntu 12.04
- 12. NVCC未知のオプションの-no_pie
- 13. PTXコードのパフォーマンス
- 14. PTX「ビットバケット」レジスタ
- 15. NVIDIA NVCCは、テンプレートの特性タイプを使用するときにコンパイル時定数を変更します。
- 16. 最新のsm_10のPTX ISAバージョン
- 17. cuda nvccクロスコンパイラ
- 18. 4.0の代わりにNVIDIA CUDA nvcc 4.1を使用する方法を指定するには?
- 19. Ubuntu 16.04、Nvidiaツールキット8.0 RC、ダークネットコンパイルエラー: ";"
- 20. nvccコンパイラが見つからない - theano
- 21. NVCC - サポートされていないOSをターゲットとするホストコンパイラ
- 22. CUDA nvccでIntel C++コンパイラを使用するには?
- 23. NvidiaとAMDハードウェアのOpenCL FFT?
- 24. GPUへのNvidia GPUDirectとカメラキャプチャ
- 25. nvidia cuda thrust abort()find_if
- 26. __assumeは()NVCCで内部エラーが発生しているようだ:「コールは、パラメータの数が間違ってい...」
- 27. Nvidia Optix:rtProgramCreateFromPTXFileまたはrtProgramCreateFromPTXStringは、RT_ERROR_INVALID_SOURCEを返しますか?
- 28. パラレルNsightでのインラインPTXのデバッグ
- 29. インラインPTXで32ビットアドレスサイズを設定
- 30. 推力変換のptxカーネルの検出
'.cubin'はCUDAバイナリで、' .ptx'は 'ptxas'アセンブラに渡されるCUDAアセンブラソース(テキスト)です。 –