Optimization Nsight计算中使用的术语

Optimization Nsight计算中使用的术语,optimization,cuda,nsight-compute,Optimization,Cuda,Nsight Compute,两个问题: 根据Nsight Compute,我的内核是受计算限制的。相对于峰值性能,SM%的利用率为74%,内存利用率为47%。但是,当我查看每个管道的利用率百分比时,LSU的利用率远远高于其他管道(分别为75%和10-15%)。这不是表示我的内核内存有限吗?如果计算和内存资源的利用率与管道利用率不一致,我不知道如何解释这些术语 调度程序只会每4个周期发出一次,这难道不意味着我的内核有延迟限制吗?人们通常根据计算和内存资源的利用率来定义这一点。两者之间的关系是什么 在CC7.5 GPU上进

两个问题:

  • 根据Nsight Compute,我的内核是受计算限制的。相对于峰值性能,SM%的利用率为74%,内存利用率为47%。但是,当我查看每个管道的利用率百分比时,LSU的利用率远远高于其他管道(分别为75%和10-15%)。这不是表示我的内核内存有限吗?如果计算和内存资源的利用率与管道利用率不一致,我不知道如何解释这些术语

  • 调度程序只会每4个周期发出一次,这难道不意味着我的内核有延迟限制吗?人们通常根据计算和内存资源的利用率来定义这一点。两者之间的关系是什么


  • 在CC7.5 GPU上进行智能计算

    SM%由SM__吞吐量定义,并且 内存%由gpu\u计算\u内存\u吞吐量定义

    sm_吞吐量是以下指标的最大值:

    • sm\u指令\u吞吐量
      • 执行sm_uuuinst_u
      • sm\u问题\u激活
      • 财政司司长
      • sm\u管道\u铝循环\u激活
      • sm安装在任何管道上执行
      • sm\u管道\u fp64\u周期\u激活
      • sm\u管道\u张量\u周期\u激活
      • sm________________xu
      • sm管道fma循环激活
      • sm安装已执行管道fp16
      • sm\u管道\u共享\u周期\u活动
      • sm_________________________________________
      • sm\u指令\u吞吐量\u内部\u活动
    • 内存吞吐量
      • idc请求周期激活
      • sm_uuuInst_uExecuted_uPipe_uAdu
      • sm安装、执行、管道和ipa
      • sm安装执行的管道
      • sm_uuuInst_uExecuted_uPipe_uTex
      • sm\uuu mio\u pq\u读取\u周期\u激活
      • sm\uuuu mio\u pq\u写入周期\u激活
      • sm\uu mio2rf\u写回\u活动
      • sm\内存\吞吐量\内部\活动
    gpu\计算\内存\吞吐量是以下指标的最大值:

    • gpu\计算\内存\访问\吞吐量
      • l1tex_uuu数据_u银行_u读取
      • l1tex_uuu数据_u银行_u写入
      • l1tex__数据_管道_lsu_波前
      • l1tex_数据_管道_tex_波前
      • l1tex\u\u波前
      • lts\u d\u原子\u输入\u周期\u激活
      • lts_uud_u扇区
      • lts______扇区
      • lts\u\t\u标记请求
      • gpu\计算\内存\访问\吞吐量\内部\活动
    • gpu\计算\内存\访问\吞吐量
    • l1tex\uuu lsuin\u请求
      • l1tex\uuuTexin\uSM2tex\uREQ\u周期\u激活
      • l1tex\u lsu\u写回\u活动
      • l1tex\u tex\u写回\u活动
      • l1tex\uuu m\uL1tex2xbar\u请求周期\u激活
      • l1tex_uum_xBar2lTex_u读取扇区
      • lts\uu lts2xbar\u周期\u激活
      • lts\uuu xbar2lts\u周期\u激活
      • lts\u d\u扇区\u填充\u设备
      • lts\u d\u扇区\u填充\u系统
      • gpu\uU dram\u吞吐量
      • gpu\计算\内存\请求\吞吐量\内部\活动
    在您的情况下,限制器是sm__inst_executed_pipe_lsu,这是一种指令吞吐量。如果您查看sections/SpeedOfLight.py,则延迟限制定义为sm__吞吐量和gpu__计算_内存通过率均小于60%

    一些指令管道集的吞吐量较低,如fp64、xu和lsu(随芯片而异)。管道利用率是sm__吞吐量的一部分。为了提高性能,选项包括:

  • 减少对超额认购管道的指令,或
  • 发布不同类型的指令以使用空的发布周期
  • 生成细分

    从Nsight Compute 2020.1开始,没有一个简单的命令行可以在不运行分析会话的情况下生成列表。现在,您可以使用
    细分:avg.pct\u of_peak\u sustainated.appeased
    收集一个吞吐量指标,并解析输出以获得子指标名称

    例如:

    ncu.exe --csv --metrics breakdown:sm__throughput.avg.pct_of_peak_sustained_elapsed --details-all -c 1 cuda_application.exe
    
    生成:

    "ID","Process ID","Process Name","Host Name","Kernel Name","Kernel Time","Context","Stream","Section Name","Metric Name","Metric Unit","Metric Value"
    "0","33396","cuda_application.exe","127.0.0.1","kernel()","2020-Aug-20 13:26:26","1","7","Command line profiler metrics","gpu__dram_throughput.avg.pct_of_peak_sustained_elapsed","%","0.38"
    "0","33396","cuda_application.exe","127.0.0.1","kernel()","2020-Aug-20 13:26:26","1","7","Command line profiler metrics","l1tex__data_bank_reads.avg.pct_of_peak_sustained_elapsed","%","0.05"
    "0","33396","cuda_application.exe","127.0.0.1","kernel()","2020-Aug-20 13:26:26","1","7","Command line profiler metrics","l1tex__data_bank_writes.avg.pct_of_peak_sustained_elapsed","%","0.05"
    ...
    

    关键字
    breakdown
    可以在Nsight Compute节文件中用于扩展吞吐量度量。这在“光速”部分中使用。

    我发现很难在Nsight的文档中找到您给出的sm_吞吐量和gpu_计算_内存_吞吐量的定义。是否有定义此功能的资源?我更新了答案,以显示如何使用命令行生成细分,并请求Nsight计算团队添加一个脱机命令行来生成信息。