私はCUDAでいくつかのコードを書いていますが、実際に何が並列に実行されているかについて少し混乱しています。
次のようなカーネル関数を呼び出しているとします
kenel_foo<<<A, B>>>
。以下のデバイス クエリによると、ブロックごとに最大 512 のスレッドを持つことができます。では、実行するたびにブロックごとに 512 回の計算が行われることが保証されていますkernel_foo<<<A, 512>>>
か? しかし、ここでは 1 つのスレッドが 1 つの CUDA コアで実行されると書かれているので、一度に 96 のスレッドを同時に実行できるということですか? (下記の device_query を参照してください)。ブロックについて知りたいです。を呼び出すたびに
kernel_foo<<<A, 512>>>
、並列に実行される計算の数と方法は? つまり、ブロックを次々に実行するのですか、それともブロックも並列化されますか? はいの場合、それぞれ 512 スレッドを並列に実行できるブロックはいくつですか? ここでは、1 つの CUDA SM で 1 つのブロックが実行されると書いてありますが、12 個のブロックが同時に実行できるというのは本当ですか? はいの場合、12 個のブロックすべてが同時に実行されている場合、各ブロックは最大でいくつのスレッド (8、96、または 512) を同時に実行できますか? (下記の device_query を参照してください)。もう 1 つの質問は
A
、値が ~50 の場合、カーネルを起動する方が良いですか、kernel_foo<<<A, 512>>>
またはkernel_foo<<<512, A>>>
ですか? スレッドの同期は必要ないと仮定します。
申し訳ありませんが、これらは基本的な質問かもしれませんが、ちょっと複雑です
...
ありがとう
これが私のものdevice_query
です:
Device 0: "Quadro FX 4600"
CUDA Driver Version / Runtime Version 4.2 / 4.2
CUDA Capability Major/Minor version number: 1.0
Total amount of global memory: 768 MBytes (804978688 bytes)
(12) Multiprocessors x ( 8) CUDA Cores/MP: 96 CUDA Cores
GPU Clock rate: 1200 MHz (1.20 GHz)
Memory Clock rate: 700 Mhz
Memory Bus Width: 384-bit
Max Texture Dimension Size (x,y,z) 1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048)
Max Layered Texture Size (dim) x layers 1D=(8192) x 512, 2D=(8192,8192) x 512
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per multiprocessor: 768
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
Texture alignment: 256 bytes
Concurrent copy and execution: No with 0 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: No
Concurrent kernel execution: No
Alignment requirement for Surfaces: Yes
Device has ECC support enabled: No
Device is using TCC driver mode: No
Device supports Unified Addressing (UVA): No
Device PCI Bus ID / PCI location ID: 2 / 0