web-dev-qa-db-ja.com

「-Archsm_13」と「-Archsm_20」の違いは何ですか

アプリケーションで倍精度計算が必要です。グーグルで見つけたものによると、フラグ「-Archsm_13」または「-Archsm_20」を追加する必要があります。

Q1:「-Archsm_13」と「-Archsm_20」の違いは何ですか?

Q2:「-Archsm_13」と「-Archsm_20」のパフォーマンスに違いはありますか?

私のGPU:GTX570。

ありがとう。

18
user1281071

SMはストリーミングマルチプロセッサの略で、数字はアーキテクチャでサポートされている機能を示しています。 CUDAプログラミングガイド セクション3.1.2-3.1.4で適切な説明を見つけることができ、付録Fの表で各アーキテクチャに関連する機能を確認できます。

NVCCマニュアル (ツールキットにも含まれています)から:

アーキテクチャの進化を可能にするために、NVIDIAGPUはさまざまな世代でリリースされています。新世代では、機能やチップアーキテクチャが大幅に改善されていますが、同じ世代のGPUモデルでは、機能、パフォーマンス、またはその両方に「中程度」の影響を与える小さな構成の違いが見られます。

GPUにはComputeCapability 2.0があるため、sm_20を使用して、コンパイラが古いアーキテクチャでは利用できない機能を使用できるようにする必要があります。下位互換性が必要な場合は、alsotarget sm_13(またはsm_1x)を使用できます。-gencodeオプションの使用方法については、上記のドキュメントを確認してください。 nvccへの1回の呼び出しで、複数のアーキテクチャをターゲットにします。

パフォーマンスに関しては、sm_1xがIEEE754浮動小数点をサポートしていなかったことに注意してください。したがって、sm_13をターゲットにして、Compute Capability 2.0以降のデバイスで実行すると、使用量が少ないため、浮動小数点の実行速度が速くなることがあります。正確なパス。 -ftz=true -prec-div=false -prec-sqrt=falseオプションを使用して、sm_20以降で精度の低いパスを強制することもできます。これについて詳しくは、CUDAプログラミングガイドのセクション5.4.1を参照してください。

27
Tom