【问题标题】:basic/simple formula to compute number of blocks needed in cuda kernel计算cuda内核所需块数的基本/简单公式
【发布时间】:2012-07-28 15:09:05
【问题描述】:

我在获取 CUDA 中每个网格的正确块数时遇到了一些困难。 任何人都可以显示基本/简单的公式来计算 CUDA 内核中 2D 所需的块数吗? (即gridDim.x和gridDim.y)考虑到用户想要运行N个线程总数,并且他的块是A乘B(其中A * B

 dim3 dimBlock(A,B);
 dim3 dimGrid(Z,T);

我正在寻找 Z 和 T。谢谢!!!

【问题讨论】:

    标签: cuda


    【解决方案1】:

    N的总线程数由下式计算

    N = No_blocks * No_threads_per_block
    

    所以你每个块有A*B线程,所以你应该有Z*T=N/(A*B)

    ZT 当然应该是整数,但不需要是 2 的幂。另外,取决于您的 CUDA 计算能力,网格的每个维度中的块数都有限制.

    【讨论】:

    • ATchaohuang:其实我是在看完下面这个问题后问的。 stackoverflow.com/questions/11678748/… 用户“talonmies”告诉 (11161,14) 的 gridDim 不正确。我真的很好奇,因为根据你的回答和我到目前为止的理解,如果用户得到 N
    • @starter 这是来自我的 GPU Tesla C2075(计算能力 2.0)的 deviceQuery 结果:网格每个维度的最大尺寸:65535 x 65535 x 65535。所以我看不到使用 (11161,14) 的 gridDim, (8,8) 的 blockDim 有任何问题
    猜你喜欢
    • 2010-12-09
    • 2023-04-09
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多