【问题标题】:cuda occupancy calculatorcuda占用计算器
【发布时间】:2013-02-26 15:34:54
【问题描述】:

我在编译我的 .cu 代码时使用了 --ptax-options=-v,它给出了以下信息:

ptxas info: Used 74 registers, 124 bytes smem, 16 bytes cmem[1]

我的卡的 devQuery 返回以下内容:

rev:  2.0
name: tesla c2050
total shared memory per block: 49152
total reg. per block: 32768

现在,我将这些数据输入到 cuda 占用计算器中,如下所示:

1.) 2.0
1.b) 49152
2.) threads per block: x
    registers per thread: 74
    shared memory per block (bytes): 124

我正在改变 x(每个块的线程数),以便 x*74

【问题讨论】:

    标签: cuda


    【解决方案1】:

    ptxas-options=--verbose(或 -v)产生格式的输出

    ptxas : info : Compiling entry function '_Z13matrixMulCUDAILi16EEvPfS0_S0_ii' for 'sm_10'
    ptxas : info : Used 15 registers, 2084 bytes smem, 12 bytes cmem[1]
    

    关键信息是

    • 第一行有目标架构
    • 第二行有<Registers Per Thread>, <Static Shared Memory Per Block>, <Constant Memory Per Kernel>

    填写入住计算器时

    • 设置字段 1.) 在上例中选择 Compute Capability 为“sm_10”
    • 设置字段 2.) 将每个线程注册到
    • 设置字段 2。)将每个块的内存共享为 + DynamicSharedMemoryPerBlock 作为第三个参数传递给<<<GridDim, BlockDim, DynamicSharedMemoryPerBlock, Stream>>>

    占用计算器帮助选项卡包含更多信息。

    在您的示例中,我认为您没有正确设置字段 1,因为 Fermi 架构限制为每线程 63 个寄存器。 sm_1* 支持每个线程最多 124 个寄存器。

    【讨论】:

    • 在我的例子中,我有 'sm_13' (-arch=sm_13),我只将内核称为 >>。所以我必须这样做:设置字段 1 = 1.3;设置字段 2 = 74;设置字段 3 = 124。对吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 2012-03-22
    • 2013-03-02
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多