CUDA: Difference between revisions

fix markup
"65K" ?!
 
(8 intermediate revisions by the same user not shown)
Line 7: Line 7:
nvidia 0000:07:00.0: setting latency timer to 64
nvidia 0000:07:00.0: setting latency timer to 64
NVRM: loading NVIDIA UNIX x86_64 Kernel Module  190.53  Wed Dec  9 15:29:46 PST 2009</pre>
NVRM: loading NVIDIA UNIX x86_64 Kernel Module  190.53  Wed Dec  9 15:29:46 PST 2009</pre>
Once the module is loaded, CUDA should be able to find the device. See [[CUDA#deviceQuery_Output|below]] for sample outputs. Each device has a '''compute capability''', though this does not encompass all differentiated capabilities (see also <tt>deviceOverlap</tt> and <tt>canMapHostMemory</tt>...). Note that "emulation mode" has been removed as of CUDA Toolkit Version 3.1.
Once the module is loaded, CUDA should be able to find the device. See [[CUDA#deviceQuery_Output|below]] for sample outputs. Each device has a [[CUDA#Compute_Capabilities|compute capability]], though this does not encompass all differentiated capabilities (see also <tt>deviceOverlap</tt> and <tt>canMapHostMemory</tt>...). Note that "emulation mode" has been removed as of CUDA Toolkit Version 3.1.


==CUDA model==
==CUDA model==
Line 32: Line 32:
===Streaming Multiprocessor===
===Streaming Multiprocessor===
* Each SM has a register file, fast local (''shared'') memory, a cache for constant memory, an instruction cache (ROP), a multithreaded instruction dispatcher, and some number of [[#Stream Processor|Stream Processors]] (SPs).
* Each SM has a register file, fast local (''shared'') memory, a cache for constant memory, an instruction cache (ROP), a multithreaded instruction dispatcher, and some number of [[#Stream Processor|Stream Processors]] (SPs).
** 8192 registers for compute capability <= 1.1, otherwise
** 8K registers for compute capability <= 1.1, otherwise
** 16384 for compute capability <= 1.3, otherwise
** 16K for compute capability <= 1.3, otherwise
** 32768 for compute capability <= 2.1, otherwise
** 32K for compute capability <= 2.1, otherwise
** 65k through at least compute capability 3.5
** 64K through at least compute capability 3.5
* A group of threads which share a memory and can "synchronize their execution to coördinate accesses to memory" (use a [[barrier]]) form a '''block'''. Each thread has a ''threadId'' within its (three-dimensional) block.
* A group of threads which share a memory and can "synchronize their execution to coördinate accesses to memory" (use a [[barrier]]) form a '''block'''. Each thread has a ''threadId'' within its (three-dimensional) block.
** For a block of dimensions &lt;D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>&gt;, the threadId of the thread having index &lt;x, y, z&gt; is (x + y * D<sub>x</sub> + z * D<sub>y</sub> * D<sub>x</sub>).
** For a block of dimensions &lt;D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>&gt;, the threadId of the thread having index &lt;x, y, z&gt; is (x + y * D<sub>x</sub> + z * D<sub>y</sub> * D<sub>x</sub>).
Line 165: Line 165:


===Compute Capabilities===
===Compute Capabilities===
The original public CUDA revision was 1.0, implemented on the NV50 chipset corresponding to the GeForce 8 series. Compute capability, formed of a non-negative major and minor revision number, can be queried on CUDA-capable cards. All revisions thus far have been backwards-compatible.
The original public CUDA revision was 1.0, implemented on the NV50 chipset corresponding to the GeForce 8 series. Compute capability, formed of a non-negative major and minor revision number, can be queried on CUDA-capable cards. All revisions thus far have been fowards-compatible, though recent CUDA toolkits will not generate code for CC1 or 2.
 
{| border="1" class="wikitable"
{| border="1" class="wikitable"
! Resource
! Resource
Line 176: Line 177:
! 3.0 SMX
! 3.0 SMX
! 3.5 SMX
! 3.5 SMX
! 7.0 SM
! 7.5 SM
|-
|-
|CUDA cores
|CUDA cores
Line 186: Line 189:
|192
|192
|192
|192
|64/32<br/>64/8
|64/2<br/>64/8
|-
|-
|Warp schedulers
|Schedulers
|1
|1
|1
|1
Line 194: Line 199:
|2
|2
|2
|2
|4
|4
|4
|4
|4
|4
Line 206: Line 213:
|2
|2
|2
|2
|1
|1
|-
|-
|Threads
|Threads
|768
|768
|768
|768
|1024
|1K
|1024
|1K
|1536
|1536
|1536
|1536
|2048
|2K
|2048
|2K
|2K
|1K
|-
|-
|Warps
|Warps
Line 226: Line 237:
|64
|64
|64
|64
|64
|32
|-
|-
|Blocks
|Blocks
Line 235: Line 248:
|8
|8
|16
|16
|16
|32
|16
|16
|-
|-
|32-bit registers
|32-bit regs
|8192
|8K
|8192
|8K
|16384
|16K
|16384
|16K
|32768
|32K
|32768
|32K
|65536
|64K
|65536
|64K
|64K
|64K
|-
|-
|Example chips
|Examples
|
|G80
|
|G9x
|
|GT21x
|  
|GT200
| GF100
|GF110
| GF104/GF106/GF108
|GF10x
| GK104
|GK104
| GK110
|GK110
|GV100
|TU10x
|-
|-
}
|}
{| border="1"
{| border="1"
! Revision
! Revision
Line 332: Line 351:
** Indirect texture/surface support
** Indirect texture/surface support
** Extends generic addressing to include the const state space
** Extends generic addressing to include the const state space
|-
| 7.0
|
* ''PTX 6.3''
* Tensor cores
* Independent thread scheduling
|-
| 7.5
|
* ''PTX 6.4''
* Integer matrix multiplication in tensor cores
|-
|-
|}
|}
Line 415: Line 447:
* A run time limit is activated by default if the device is being used to drive a display.
* A run time limit is activated by default if the device is being used to drive a display.
* Please feel free to [mailto:nickblack@acm.org send me output!]
* Please feel free to [mailto:nickblack@acm.org send me output!]
{| border="1"
{| border="1"
! Device name
! Device name
Line 420: Line 454:
! MP's
! MP's
! Cores
! Cores
! Const mem
! Shmem/block
! Shmem/block
! Reg/block
! Reg/block
Line 431: Line 464:
! Shared maps?
! Shared maps?
|-
|-
! COLSPAN="15" style="background:#8070D8;" | Compute capability 3.0
! COLSPAN="13" style="background:#eebeb6;" | Compute capability 7.0
|-
| Tesla V100
| 16GB
| 84
| 5376/2688/672
|
|
|
|
|
| 1.53GHz
| Yes
| No
| Yes
|-
! COLSPAN="13" style="background:#8070D8;" | Compute capability 3.0
|-
|-
| GeForce GTX 680
| GeForce GTX 680
Line 438: Line 487:
| 1536
| 1536
|  
|  
|
|
|
|
|
Line 448: Line 496:
| Yes
| Yes
|-
|-
! COLSPAN="15" style="background:#ffdead;" | Compute capability 2.1
! COLSPAN="13" style="background:#ffdead;" | Compute capability 2.1
|-
|-
| GeForce GTX 560 Ti
| GeForce GTX 560 Ti
|
|
|
|
|
Line 466: Line 513:
|-
|-
| GeForce GTX 550 Ti
| GeForce GTX 550 Ti
|
|
|
|
|
Line 484: Line 530:
| 7
| 7
| 224
| 224
| 64k
| 48k
| 48k
| 32k
| 32k
Line 496: Line 541:
|-
|-
| GeForce GTS 450
| GeForce GTS 450
|
|
|
|
|
Line 510: Line 554:
|
|
|-
|-
! COLSPAN="15" style="background:#ffdead;" | Compute capability 2.0
! COLSPAN="13" style="background:#ffdead;" | Compute capability 2.0
|-
|-
| GeForce GTX 580
| GeForce GTX 580
Line 516: Line 560:
| 16
| 16
| 512
| 512
|
|
|
|
|
Line 531: Line 574:
| 14
| 14
| 448
| 448
| 64k
| 48k
| 48k
| 32k
| 32k
Line 546: Line 588:
| 14
| 14
| 448
| 448
| 64k
| 48k
| 48k
| 32k
| 32k
Line 561: Line 602:
| 15
| 15
| 480
| 480
|
|  
|  
|  
|  
Line 576: Line 616:
| 14
| 14
| 448
| 448
|
|  
|  
|  
|  
Line 587: Line 626:
|
|
|-
|-
! COLSPAN="15" style="background:#efefef;" | Compute capability 1.3
! COLSPAN="13" style="background:#efefef;" | Compute capability 1.3
|-
|-
| Tesla C1060
| Tesla C1060
Line 593: Line 632:
| 30
| 30
| 240
| 240
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 608: Line 646:
| 30
| 30
| 240
| 240
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 623: Line 660:
| 30
| 30
| 240
| 240
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 638: Line 674:
| 30
| 30
| 240
| 240
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 653: Line 688:
| 27
| 27
| 216
| 216
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 664: Line 698:
| Yes
| Yes
|-
|-
! COLSPAN="15" style="background:#efefef;" | Compute capability 1.2
! COLSPAN="13" style="background:#efefef;" | Compute capability 1.2
|-
|-
| GeForce GT 360M
| GeForce GT 360M
Line 670: Line 704:
| 12
| 12
| 96
| 96
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 685: Line 718:
| 2
| 2
| 16
| 16
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 700: Line 732:
| 12
| 12
| 96
| 96
| 65536b
| 16384b
| 16384b
| 16384
| 16384
Line 711: Line 742:
| Yes
| Yes
|-
|-
! COLSPAN="15" style="background:#efefef;" | Compute capability 1.1
! COLSPAN="13" style="background:#efefef;" | Compute capability 1.1
|-
|-
| ION
| ION
Line 717: Line 748:
| 2
| 2
| 16
| 16
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 732: Line 762:
| 2
| 2
| 16
| 16
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 747: Line 776:
| 16
| 16
| 128
| 128
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 762: Line 790:
| 16
| 16
| 128
| 128
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 777: Line 804:
| 8
| 8
| 64
| 64
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 793: Line 819:
| 2
| 2
| 16
| 16
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 808: Line 833:
| 16
| 16
| 128
| 128
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 823: Line 847:
| 4
| 4
| 32
| 32
| 65536b
| 16384b
| 16384b
| 8192
| 8192
Line 838: Line 861:
| 1
| 1
| 8
| 8
| 65536b
| 16384b
| 16384b
| 8192
| 8192