これはちょっとばかげた質問ですが、CUDA がインタープリターまたはコンパイラーのどちらを使用するのか疑問に思っています。CUDA がどのようにしてソース コードを異なる計算機能を持つ 2 枚のカードで実行できるのかよくわからないので、私は疑問に思っています。
3 に答える
プログラマーは、PathScale Open64 C コンパイラーでコンパイルされた「C for CUDA」 (Nvidia の拡張機能と特定の制限を備えた C) を使用します。
したがって、あなたの答えは次のとおりです。コンパイラを使用します。
そして、複数のカードで実行できる理由に触れます ( source ):
CUDA C/C++ は抽象化を提供します。これは、プログラムをどのように実行したいかを表現する手段です。コンパイラは、ハードウェア固有ではない PTX コードを生成します。実行時に、PTX は特定のターゲット GPU 用にコンパイルされます。これは、新しい GPU がリリースされるたびに更新されるドライバーの役割です。
これらの公式ドキュメントCUDA C Programming GuideおよびThe CUDA Compiler Driver (NVCC)では、コンパイル プロセスに関するすべての詳細が説明されています。
2 番目の文書から:
nvcc は、GNU コンパイラ gcc の動作を模倣します。マクロやインクルード/ライブラリ パスの定義、コンパイル プロセスの操作など、さまざまな従来のコンパイラ オプションを受け入れます。
cuda に限らず、directx または opengl のシェーダーもある種のバイト コードに準拠し、基盤となるドライバーによってネイティブ コードに変換されます。