CUDA块并行性

时间:2013-02-12 12:05:17

标签: cuda gpu nvidia

我在CUDA中编写了一些代码,并且对实际并行运行的内容感到有些困惑。

  1. 假设我正在调用这样的内核函数:kenel_foo<<<A, B>>>。现在根据下面的设备查询,每个块最多可以有512个线程。所以我保证每次运行kernel_foo<<<A, 512>>>时每块会有512次计算?但它说here一个线程在一个CUDA核心上运行,这意味着我可以同时运行96个线程? (参见下面的device_query)。

  2. 我想了解这些街区。每次我调用kernel_foo<<<A, 512>>>时,并行完成了多少次计算?我的意思是它是在一个接一个块之后完成的,还是并行化的块?如果是,那么有多少块可以并行运行512个线程?它说here一个块在一个CUDA SM上运行,那么12个块可以同时运行吗?如果是,当所有12个块同时运行时,每个块最多可以同时运行多少个线程8,96或512? (参见下面的device_query)。

  3. 另一个问题是,如果A的值为50,那么将内核作为kernel_foo<<<A, 512>>>kernel_foo<<<512, A>>>启动是否更好?假设不需要线程同步。

  4. 对不起,这些可能是基本问题,但有点复杂......可能重复:
    Streaming multiprocessors, Blocks and Threads (CUDA)
    How do CUDA blocks/warps/threads map onto CUDA cores?

    由于

    这是我的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
    

1 个答案:

答案 0 :(得分:2)

查看this answer的第一个指示!答案有点过时,因为它讨论的是具有计算能力1.x的旧GPU,但无论如何都与您的GPU相匹配。较新的GPU(2.x和3.x)具有不同的参数(每个SM的核心数等等),但是一旦您理解了线程和块的概念以及过度订阅以隐藏延迟,则更改很容易获取。< / p>

此外,您可以this Udacity coursethis Coursera course开始。