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 | 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). | ||
** | ** 8K registers for compute capability <= 1.1, otherwise | ||
** | ** 16K for compute capability <= 1.3, otherwise | ||
** | ** 32K for compute capability <= 2.1, otherwise | ||
** | ** 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 <D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>>, the threadId of the thread having index <x, y, z> is (x + y * D<sub>x</sub> + z * D<sub>y</sub> * D<sub>x</sub>). | ** For a block of dimensions <D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>>, the threadId of the thread having index <x, y, z> 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 | 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 | |||
|- | |- | ||
| | |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 | ||
| | |1K | ||
| | |1K | ||
|1536 | |1536 | ||
|1536 | |1536 | ||
| | |2K | ||
| | |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 | |32-bit regs | ||
| | |8K | ||
| | |8K | ||
| | |16K | ||
| | |16K | ||
| | |32K | ||
| | |32K | ||
| | |64K | ||
| | |64K | ||
|64K | |||
|64K | |||
|- | |- | ||
| | |Examples | ||
| | |G80 | ||
| | |G9x | ||
| | |GT21x | ||
| | |GT200 | ||
| | |GF110 | ||
| | |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 | ||
! Shmem/block | ! Shmem/block | ||
! Reg/block | ! Reg/block | ||
| Line 431: | Line 464: | ||
! Shared maps? | ! Shared maps? | ||
|- | |- | ||
! COLSPAN=" | ! 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=" | ! 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 | ||
| 48k | | 48k | ||
| 32k | | 32k | ||
| Line 496: | Line 541: | ||
|- | |- | ||
| GeForce GTS 450 | | GeForce GTS 450 | ||
| | | | ||
| | | | ||
| Line 510: | Line 554: | ||
| | | | ||
|- | |- | ||
! COLSPAN=" | ! 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 | ||
| 48k | | 48k | ||
| 32k | | 32k | ||
| Line 546: | Line 588: | ||
| 14 | | 14 | ||
| 448 | | 448 | ||
| 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=" | ! COLSPAN="13" style="background:#efefef;" | Compute capability 1.3 | ||
|- | |- | ||
| Tesla C1060 | | Tesla C1060 | ||
| Line 593: | Line 632: | ||
| 30 | | 30 | ||
| 240 | | 240 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 608: | Line 646: | ||
| 30 | | 30 | ||
| 240 | | 240 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 623: | Line 660: | ||
| 30 | | 30 | ||
| 240 | | 240 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 638: | Line 674: | ||
| 30 | | 30 | ||
| 240 | | 240 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 653: | Line 688: | ||
| 27 | | 27 | ||
| 216 | | 216 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 664: | Line 698: | ||
| Yes | | Yes | ||
|- | |- | ||
! COLSPAN=" | ! COLSPAN="13" style="background:#efefef;" | Compute capability 1.2 | ||
|- | |- | ||
| GeForce GT 360M | | GeForce GT 360M | ||
| Line 670: | Line 704: | ||
| 12 | | 12 | ||
| 96 | | 96 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 685: | Line 718: | ||
| 2 | | 2 | ||
| 16 | | 16 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 700: | Line 732: | ||
| 12 | | 12 | ||
| 96 | | 96 | ||
| 16384b | | 16384b | ||
| 16384 | | 16384 | ||
| Line 711: | Line 742: | ||
| Yes | | Yes | ||
|- | |- | ||
! COLSPAN=" | ! COLSPAN="13" style="background:#efefef;" | Compute capability 1.1 | ||
|- | |- | ||
| ION | | ION | ||
| Line 717: | Line 748: | ||
| 2 | | 2 | ||
| 16 | | 16 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 732: | Line 762: | ||
| 2 | | 2 | ||
| 16 | | 16 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 747: | Line 776: | ||
| 16 | | 16 | ||
| 128 | | 128 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 762: | Line 790: | ||
| 16 | | 16 | ||
| 128 | | 128 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 777: | Line 804: | ||
| 8 | | 8 | ||
| 64 | | 64 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 793: | Line 819: | ||
| 2 | | 2 | ||
| 16 | | 16 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 808: | Line 833: | ||
| 16 | | 16 | ||
| 128 | | 128 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 823: | Line 847: | ||
| 4 | | 4 | ||
| 32 | | 32 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||
| Line 838: | Line 861: | ||
| 1 | | 1 | ||
| 8 | | 8 | ||
| 16384b | | 16384b | ||
| 8192 | | 8192 | ||