1

我在编译我的 .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<=32768。例如,我输入 128(或 256)代替 x。我是否通过占用计算器正确输入了所有必需的值?谢谢。

4

1 回答 1

4

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 个寄存器的限制。

于 2013-02-26T02:57:06.827 回答