ページ更新: 2017-11-20 (月) (25日前)

関連: 書籍/GPGPU, 組み込み/NVIDIA Jetson, ソフト/OpenMP, ソフト/OpenCL

(2010-10-20 新規作成)

CUDA は GPU を汎用計算に用いる (General-Purpose GPU) ための環境の1つ。 NVIDIA 製 GPU 用。 プログラミング言語は C++ を用いて、ホスト(PC)とデバイス(GPU) 用のコードを混在して書く。 デバイス用のプログラムは コンパイラ nvcc を用いてビルドする。

目次

[編集]

情報源 #

[編集]

イベント #

NVIDIA Deep Learning Day 2016

[編集]

NVIDIA #

[編集]

G-DEP #

[編集]

フィックスターズ #

[編集]

その他 #

[編集]

世代別 #

アーキテクチャと Compute Capability:

NameCCStructure
(Tesla)1.xSM: Warp Scheduler=1, SP=8, SFU=2, Double Precision Unit, Register File, Shared Memory, Constant Cache
Fermi (1st)2.0SM: (Warp Scheduler=1, SP=16, SFU=2) * 2, Register File, Shared Memory, Constant Cache
Fermi (2nd)2.1SM: (Warp Scheduler=1, SP=24, SFU=4) * 2, Register File, Shared Memory, Constant Cache
Kepler3.0, 3.2, 3.5SMX: Warp Scheduler=4, Double Precision=8, SP=192, SFU=32, Register File, Shared Memory, Constant Cache
Maxwell5.0, 5.2SMM: (Warp Scheduler=1, Dispacher=2, SP=32, SFU=8, LD/ST=8, Register=16382*32bit) * 4, ...
Pascal6.0, 6.1
Volta
  • 2015-01-07 MaxwellのCCについて。GeForce GTX 750/750Ti はCC=5.0, Geforce GTX 970/980 は CC=5.2。Tegra X1 は不明。
[編集]

Pascal (CC=6.x) #

native 対応には、CUDA Toolkit 8.0 以上が必要: Pascal Compatibility Guide :: CUDA Toolkit Documentation

[編集]

Maxwell (CC=5.x) #

native対応には、CUDA Toolkit 5.0以上が必要: Maxwell Compatibility Guide :: CUDA Toolkit Documentation

[編集]

Kepler (CC=3.0,3.5) #

native対応には、CUDA Toolkit 5.0以後が必要だったと思う: Kepler Tuning Guide :: CUDA Toolkit Documentation

[編集]

Fermi (CC=2.0, 2.1) #

[編集]

(Gxx, Tesla) (CC=1.x) #

[編集]

#

[編集]

NumbaPro #

[編集]

PyCUDA #

PyCUDA (スクリプト言語 Python で CUDAを使う - Pythonの中にC/C++を埋め込むのでデバッグしにくいかも)

[編集]

pynvvm #

[編集]

Visual Studio #

[編集]

書籍 #

[編集]

CUDA by Example: An Introduction to General-Purpose GPU Programming #

Published: 07/19/2010

[編集]

CUDA高速GPUプログラミング入門 #

発売日 2010/3/25

[編集]

はじめてのCUDAプログラミング #

2009年11月19日発売

[編集]

ライブラリ #

[編集]

Thrust #

[編集]

メモ #

[編集]

nvcc --gpu-architecture の指定 #

nvcc の「--gpu-architecture <arch>」のコマンドラインヘルプに記載あり。

CUDA Toolkit 8.0.44の場合:

C:> > "%CUDA_PATH%\bin\nvcc.exe" --help

(略)
Options for steering GPU code generation.
=========================================

--gpu-architecture <arch>                  (-arch)                           
       Specify the name of the class of NVIDIA 'virtual' GPU architecture for which
       the CUDA input files must be compiled.
       With the exception as described for the shorthand below, the architecture
       specified with this option must be a 'virtual' architecture (such as compute_50).
       Normally, this option alone does not trigger assembly of the generated PTX
       for a 'real' architecture (that is the role of nvcc option '--gpu-code',
       see below); rather, its purpose is to control preprocessing and compilation
       of the input to PTX.
       For convenience, in case of simple nvcc compilations, the following shorthand
       is supported.  If no value for option '--gpu-code' is specified, then the
       value of this option defaults to the value of '--gpu-architecture'.  In this
       situation, as only exception to the description above, the value specified
       for '--gpu-architecture' may be a 'real' architecture (such as a sm_50),
       in which case nvcc uses the specified 'real' architecture and its closest
       'virtual' architecture as effective architecture values.  For example, 'nvcc
       --gpu-architecture=sm_50' is equivalent to 'nvcc --gpu-architecture=compute_50
       --gpu-code=sm_50,compute_50'.
       Allowed values for this option:  'compute_20','compute_30','compute_32',
       'compute_35','compute_37','compute_50','compute_52','compute_53','compute_60',
       'compute_61','compute_62','sm_20','sm_21','sm_30','sm_32','sm_35','sm_37',
       'sm_50','sm_52','sm_53','sm_60','sm_61','sm_62'.

「Allowed values for this option:」によると、以下の指定が可能っぽい:

compute_20,sm_20
compute_20,sm_21
compute_30,sm_30
compute_32,sm_32
compute_35,sm_35
compute_37,sm_37
compute_50,sm_50
compute_52,sm_52
compute_53,sm_53
compute_60,sm_60
compute_61,sm_61
compute_62,sm_62
[編集]

Visual Studio #

手持ちのPCに入れた CUDA Toolkit の記録: (3.x → 4.x → 5.0) → 5.5 → 6.0 → 6.5 → 7.0 → 7.5 → 8.0

CUDA Toolkit 5.0以後では、インストーラー1つで全部(コンパイラ、サンプルコード、Nsight Visual Studio Edition、ドライバ) インストールできる。

1. Compute Generation のデフォルト値が異なる:

2. 古い CUDA Toolkit をアンインストールすると、そのバージョンのプロジェクトが開けなくなる。 そのため、プロジェクトを新しい CUDA Toolkit を使うよう修正してから、古い CUDA Toolkit を削除すること。

エラーの場合、プロジェクトファイルを手で修正すれば開ける。バージョン間の差異、以下の表を見ること:

CUDA 5.5CUDA 6.0CUDA 6.5CUDA 7.0CUDA 7.5CUDA 8.0CUDA 9.0
VS2008 (VC++ 9.0)NvCudaRuntimeApi.v5.5.rulesNvCudaRuntimeApi.v6.0.rulesn/an/an/an/an/a
$(CUDA_PATH_V5_5)$(CUDA_PATH_V6_0)n/an/an/an/an/a
VS2010 (VC++ 10.0)CUDA 5.5.propsCUDA 6.0.propsCUDA 6.5.propsCUDA 7.0.propsCUDA 7.5.propsCUDA 8.0.propsDEPRECATED
CUDA 5.5.targetsCUDA 6.0.targetsCUDA 6.5.targetsCUDA 7.5.targetsCUDA 7.5.targetsCUDA 8.0.targetsDEPRECATED
VS2012 (VC++ 11.0)↑と同じ↑と同じ↑と同じ↑と同じ↑と同じ↑と同じ(未調査)
VS2013 (VC++ 12.0)n/an/a↑と同じ↑と同じ↑と同じ↑と同じ(未調査)
VS2015 (VC++ 14.0)n/an/an/an/an/a↑と同じ(未調査)
VS2017 (VC++ 15.0)※1(未調査)

※1: Visual Studio 2017 は、2017-03-07(現地時間) にリリースされるとのこと。 Join Us: Visual Studio 2017 Launch Event and 20th Anniversary | The Visual Studio Blog

補足:

  • VCのバージョンについて
  • CUDA Toolkit 8.0.44
    • nvccを実行すると、警告でdeprecated 情報が出力されている。
      "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -ccbin
       "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" 
       -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"
       -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" 
       -lineinfo  --keep-dir Release -maxrregcount=0  --machine 32 --compile
       -Xcompiler "/wd 4819" -Xcompiler "/openmp" 
       -DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS
       -Xcompiler "/EHsc /W3 /nologo /O2  /Zi  /MD "
       -o Release\matrix.cu.obj "E:\works\20170207-cuda\Matrix\matrix.cu" -clean 
      1>CUDACOMPILE : nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated,
       and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
      1>CUDACOMPILE : nvcc warning : nvcc support for Microsoft Visual Studio 2010 and earlier
       has been deprecated and is no longer being maintained
    • Felmi (cpumpute_20, sm_20, sm_21。Geforceなら400シリーズ) は、次回のバージョンで deprecatedになるようだ。
    • Visual Studio 2010 でビルドできるが、deprecated になっている。

Visual Studio 2013 Professional Update 3:

VS2013UP3_wizard.png VS2013UP3_nsight.png

Visual Studio 2012 Professional Update 4:

VS2012UP4_wizard.png VS2012UP4_nsight.png

Visual Studio 2010 Professional SP1:

VS2010SP1_wizard.png VS2010SP1_nsight.png

Visual Studio 2008 Standard SP1:

VS2008SP1_wizard.png

(VS2008では Nsight は CUDA Toolkit 6.0まで存在したが、6.5 インストール時に削除されたようだ)

[編集]

CUDA Toolkit 6.5 #

Windows 64bit 版は cuda_6.5.14_windows_general_64.exe

付属のドライバは 340.62。

  • Getting Started Windows # 1.1. System Requirements :: CUDA Toolkit Documentation
    • サポート対象のVisual Studio は 2010 (Visual C++ 10.0), 2012 (Visual C++ 11.0), 2013 (Visual C++ 12.0) の3つ。このバージョンから 2008 (Visual C++ 9.0) はサポートされなくなり、ウィザードにも組み込まれなくなった。
    • 32bit OSでの「開発」は廃止された(DEPRECATED)。32bit OS での実行はサポートしている。
[編集]

CUDA Toolkit 6.0 (2014-04-17) #

Windows 64bit 版は cuda_6.0.37_winvista_win7_win8.1_general_64.exe

サポート対象のVisual Studio は 2008, 2010, 2012 の3つ。

インストールしたところ、一部の機能(★)は Visual Studio 2013 で使えるようになったようだ:

Nsight Visual Studio Edition Summary
The following information only pertains to Nsight Visual Studio features and does 
not describe CUDA toolkit install status. Please continue unless Nsight Visual 
Studio features will be used.

Installed:
     - Nsight for VS2013 (No CUDA compiler VS2013 support)
     - Nsight for Visual Studio 2012
     - Nsight for Visual Studio 2010
     - Nsight for Visual Studio 2008
     - Nsight Monitor and HUD Launcher
     - Nsight C++ AMP Debugger for VS2012/VS2013  ★
     - Nsight C++ AMP Target Support for MSVSMON
Not Installed:

For more information, please click here!
[編集]

CUDA Toolkit 5.5 #

Windows 64bit 版は cuda_5.5.20_winvista_win7_win8_general_64.exe

サポート対象のVisual Studio は 2008, 2010, 2012 の3つ。