CUDA: Difference between revisions
kill const memory size column, add V100 |
"65K" ?! |
||
| (6 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 | |||
|- | |- | ||
|} | |} | ||