CUDA Compute Capabilityについて
RedHawkのCUDA公式サポートバージョン(xは、すべてのマイナー版を示します)
なお、Compute capability 2.xはFermi、3.xはKepler、5.xはMaxwell、6.xはPascal 、7.xはVolta、7.5はTuring、8.0はAmpere アーキテクチャを表しています。
CUDAの互換性に関しては、下記のNvidia社公式ドキュメントをご参照ください。
CUDA_Compatibility.pdf
NVIDIA CUDA Cコンパイラ、(nvcc)は、各CUDAアーキテクチャー固有のcubinファイルと前方互換性バージョンPTXの両方を生成するために使用できます。
各cubinファイルは、特定のcompute capabilitバージョンを対象とし、同じメジャーバージョン番号のGPUアーキテクチャとの間でのみ前方互換性があります。
たとえば、コンピューティング機能3.0(sm_30)をターゲットとするcubinファイルは、すべてのコンピューティング機能3.x(Kepler)デバイスでサポートされていますが、コンピューティング機能5.x(Maxwell)デバイスではサポートされていません。
CUDA Cアプリケーションに埋め込まれたPTX(Parallel Thread eXecution)コードから実行するためには、下記手順に従ってください。
- PTX ISAに一致するデバイスドライバ
をダウンロードし、インストールする。
- 環境変数 CUDA_FORCE_PTX_JIT=1 に設定し、
- アプリケーションソフトを実行後、
- CUDA_FORCE_PTX_JIT=0 に設定する。
なお、CUDA CアプリケーションにPTXコードが埋め込まれていなければロードに失敗します。
GLX ドライババージョンとGPUアーキテクチャサポートの関係を以下に示します
Hardware Generation |
Compute Capability |
GLX Driver 384.111以上 |
GLX Driver 410.48以上 |
GLX Driver 418.40.04以上 |
GLX Driver 440.33.01以上 |
GLX Driver 450.36.06以上 |
Fermi |
2.x |
No |
No |
No |
No |
No |
Kepler |
3.x |
Yes |
Yes |
Yes |
Yes |
Yes |
Maxwell |
5.x |
Yes |
Yes |
Yes |
Yes |
Yes |
Pascal |
6.x |
Yes |
Yes |
Yes |
Yes |
Yes |
Volta |
7.x |
Yes |
Yes |
Yes |
Yes |
Yes |
Turing |
7.5 |
No |
Yes |
Yes |
Yes |
Yes |
Ampere |
8.0 |
No |
No |
No |
No |
Yes |
注意:上記テーブルは、各世代のGPUをサポートしているデバイスドライバ版との関係を示しています。
CUDAバイナリ(cubin)の動作の互換性の表ではありません。
VSI/Proについて
VSI/Pro
(外部PDF)は、
RunTime Computing Solutions社
(外部HTML)が提供する商用のVSIPLです。
VSI/Proは、VSIPLフォーラムで規定されているVSIPL(Vector、Signal、およびImage Processing Library)標準に完全に準拠しています。
VSI/ProのGPU版は、RedHawk7.2で動作が確認されており、日本では、
株式会社JEPICO
(外部HTML)から購入することが出来ます。
VSI / Pro(R)GPU 1.20リリースサポート(CUDA 7.5ドライバ、静的ライブラリ)
対象:RedHawk7.2またはCentOS 7.2および互換機。
x86-64 Linux用のCUDA 7.5ドライバのサポート。
gcc(GCC)4.8.5 20150623(Red Hat 4.8.5-11)
ldd:ldd(GNU libc)2.17
ビルド対象のNVIDIAアーキテクチャは次のとおりです。
-gencode arch = compute_30、code = sm_30 -gencode arch = compute_32、code = sm_32 -gencode arch = compute_35、code = sm_35 \
-gencode arch = compute_50、code = sm_50 -gencode arch = compute_52、code = sm_52 -gencode = arch = compute_52、code = compute_52
CUDA 7.5とNVIDIA GPUアーキテクチャとの互換性、および最大限のコード互換性と特定のターゲットパフォーマンスのためのビルドパラメータの理由については、
ここ
を参照してください。
VSI/Proの場合:MT-1プログラミングでは、各スレッドは独立したマルチスレッドプログラミングのためにMT-1モデルに従ってvsip_init()とvsip_finalize()を使用します。
特定の引数を指定したvsip_init()を使用すると、そのスレッドで使用するGPUをターゲットにすることができます。
magmaについて
magma
は、CUDA 、OpenCL、およびIntel Xeon PhiのためのLAPACK実装を提供します。
最新のリリースでは、それぞれ、
MAGMA1.6
、
clMAGMA1.3
、
および
MAGMA MIC1.3
です。
Redhawk6.5(x86_64)には、下記RPMがインストール済みですので、
make.incをダウンロードし、以下の
PATCHを行う事で、ご使用になれます。
なお、TESLA アーキテクチャは将来サポートされない警告がでるためmake.incから削除し、 CMKAEを使用するとコンパイルに失敗します。
ccur-nvidia-glx-337-25.20140813.x86_64
ccur-nvidia-cuda-6.0.37-1.20140516.x86_64(CUDA6.0,cuBLAS,cuFFTを含む)
atlas-sse3-3.8.4-2.el6.x86_64
atlas-3.8.4-2.el6.x86_64
lapack-3.2.1-4.el6.x86_64
blas-3.2.1-4.el6.x86_64
Thrust
利用時のコンパイルエラーについて。
RedHawkのCUDA5.5,CUDA6.0で、Thrust利用時にコンパイルエラーが発生する現象が確認されています。
この問題は、/usr/bin/nvcc.profile ファイルのINCLUDES行に、-I/usr/local/cuda/include を挿入することで解消されます。
TOP = $(_HERE_)/..
NVVMIR_LIBRARY_DIR = $(TOP)/nvvm/libdevice
LD_LIBRARY_PATH += $(TOP)/lib:
PATH += $(TOP)/open64/bin:$(TOP)/nvvm/bin:$(_HERE_):
INCLUDES += "-I$(TOP)/$(_TARGET_DIR_)/include" -I/usr/local/cuda/include $(_SPACE_)
LIBRARIES =+ $(_SPACE_) "-L$(TOP)/$(_TARGET_DIR_)/lib$(_TARGET_SIZE_)"
CUDAFE_FLAGS +=
OPENCC_FLAGS +=
PTXAS_FLAGS +=
「ジッターレスCUDAの実現」
RedHawkのVersion 5.4以降には、標準でNVIDIAのCUDA(TM)がインストールされています。
この報告書は、CUDAをXorgと同時に利用した場合の計算速度に対するジッターと、そのジッターの回避法を報告します。
また、本報告書には示されていませんが、RedHawkのNVIDIAデバイスドライバは、リアルタイム用途に使用可能なように、エンハンスメントされています。
RedHawk Realtime LinuxとCUDA による高解像度連続周波数解析デモプログラム
GPU-VSIPLとSpectrum社の高速AD(50Msamples/sec)を組み合わせ、超高速FFTアナライザを試作致しました。
ADの入力は14bit/50MHzで連続収録を行い、全てのデータに対して1メガポイントのFFTを行い、周波数の全点ピークサーチを行っています。
nVidia CUDA Buffering use on RedHawk 5.4
RedHawk
TM 5.4では、標準でNVIDIA社のCUDA
TMがインストールされていますが、そのデバイスドライバはリアルタイム用に最適化されています。
具体的には、メモリバッファをプリアロケートする様にエンハンスメントされていますので、標準のnVidiaデバイスドライバより高速に動作します。
このドキュメントでは、このベンチマークテストの概要を報告します。(英語)
以下は、動作確認済みのNvidiaのカードリストです。
- Quadro NVS 290/295,NVS 450 FX 4600 & 4800,FX 5500 & 5500G,FX 5600 & 5600G,FX 5800 & 5800G
- GeForce GTX 260,GTX 285/295,9800 GT
- Tesla 1060C
CUDAを使ったVSIPL
RedHawkTM 5.4以降には、標準でNVIDIA社のCUDATMがインストールされています。
このドキュメントでは、このCUDA-VSIPLの概要を報告します。
CUDAを直接的に利用する方法は、情報処理学会誌の2009年2月号 Vol.50 No2 に特集「アクセラレータ、再び-スパコン化の切り札-」として紹介されているほか、様々なサイトでも紹介されています。
CUDAが今までのアクセラレータと異なるのは、コンピュータに内蔵されている表示用のグラフィクスチップを利用して、CPUより高速に並列処理する事です。
しかも、OpenGLグラフィックスドライバとCUDAドライバを同時に使用することが可能です。
つまり、追加費用無しに、高速計算が可能になると言うことです。
しかし、CUDAのプログラミングは、難度が高い上、将来計画されているAMD社のGPU取り込み等に代表される、CPUのメニーコア化に対して資産が継承できないなどの懸念があることも事実です。
これらの問題に対して、CUDAをVSIPLのAPIで利用するアプローチは、資産の継承と速度の向上という最適解が得られると考えています。
GPU-VSIPL RPM for RedHawk
GPU-VSIPLは無償で公開されていますが、CUDA tool kit 3の版でしか動作しません。
本RPMファイルは、CUDA3のライブラリと共に供給される RedHawk 6.0 - 7.2 用のGPU版VSIPLのインストールパッケージです。
コンパイルされたオブジェクトの実行には、
export LD_LIBRARY_PATH=/usr/local/gpuvsipl_2009Aug11/linux64
が必要になります。
CUDAの版が古いため、最新のCUDAに比べて、速度は遅いことがあります。
VSIPL Core Plus Plus for RedHawk
オープンソース信号処理ライブラリのディファクトスタンダードである、VSIPLライブラリをRedHawkに移植しました。
移植した版は、最新のVSIPL Core Plus Plus 0p86 (R. Judd - 4/23/07)で、試験したのは、Test Suite version 1.03 (D. Campbell - 5/1/02)です。
添付ファイルを、RedHawkマシンにコピーの上、下記手順で展開してください。
# cd /usr/local
# tar xvfz VSIPLPP.tar.gz
なお、展開すると/usr/local/VSIPLディレクトリが作成され、その下に
src オリジナルソース
tvcppOp86i VSIPL
Test_Suite_Lite 試験プログラム
が展開されます。
そのままでも利用できますが、再コンパイルが必要な場合には、各ディレクトリ
のREADMEをご覧ください。makeだけで再コンパイルできます。
なお、ライブラリ本体は
/usr/local/VSIPL/tvcppOp86/lib下に
libvsip.a libVU.a libVU_c.a libVUX.aが作成されていますので、/usr/libにリ
ンクを張ってご利用ください。
# cd /usr/lib
# ln -s /usr/local/VSIPL/tvcppOp86/lib/libvsip.a .
# ln -s /usr/local/VSIPL/tvcppOp86/lib/libVU.a .
# ln -s /usr/local/VSIPL/tvcppOp86/lib/libVU_c.a .
# ln -s /usr/local/VSIPL/tvcppOp86/lib/libVUX.a .
また、インクルードファイルは、
/usr/local/VSIPL/tvcppOp86/includeに作成されますので、同様に
# ln -s /usr/local/VSIPL/tvcppOp86/include /usr/include/VSIPL
とリンクを張ってお使いください。