計算能力の低いCUDAプログラム(1.3(nvccフラグsm_13)など)をコンパイルし、計算能力2.1のデバイスで実行した場合、計算能力2.1の機能を活用できますか?
そのような状況では、コンピュート2.1デバイスはコンピュート1.3デバイスのように動作しますか?
いいえ、明示的にプログラムする必要がある機能を悪用することはありません。ユーザーに透過的な機能 (キャッシュやより大きなレジスタ ファイルなど) のみが使用されます。
さらに、ターゲット アーキテクチャに動的にコンパイルできる、PTX 中間言語にコンパイルされたバージョンのコードがオブジェクト ファイルに含まれていることを確認する必要があります。そうしないと、プログラムが実行されません。
仮想アーキテクチャ ( ) にコンパイルしてそれを確認するか、 nvccnvcc -arch compute_13
のオプションを使用して複数のアーキテクチャ用のコードでファット バイナリを作成します。-gencode
#if __CUDA_ARCH__ >= xyz
ファット バイナリでは、コードをプリプロセッサ条件内にラップすると、より高い計算能力でのみ利用可能な機能をプログラムできます。