nsight 使用(1) nsys profile --cudabacktrace=

--cudabacktrace= Possible values are 'all','none','kernel','memory','sync','other'. If tracing CUDA APIs, enable the collection of a backtrace when a CUDA API is invoked. When selected, significant runtime overhead may occur. Values may be combined using ','. Each value except 'none' may be appended with a threshold after ':'. Threshold is the duration, in nanoseconds, that CUDA APIs must execute before backtraces are collected, e.g. 'kernel:500'. Default value for each threshold is 80000ns (80us). Note that CPU sampling must be enabled. Default is 'none'. Application scope.

--cudabacktrace= 是一个选项参数,可能用于 NVIDIA 的性能分析工具 Nsight Systems。这个工具允许开发者对 CUDA 应用程序进行性能分析,从而帮助优化代码和找出性能瓶颈。

选项参数 --cudabacktrace= 允许用户指定在调用 CUDA API 时是否收集回溯(backtrace)信息。这是一个高级功能,可以帮助确定导致性能问题的具体位置,但它会引入显著的运行时开销,因此需要谨慎使用。

参数值及其含义

  • all: 收集所有CUDA API调用的回溯信息。
  • none: 不收集任何CUDA API调用的回溯信息。
  • kernel: 仅为涉及CUDA内核的API调用收集回溯信息。
  • memory: 仅为涉及CUDA内存操作的API调用收集回溯信息。
  • sync: 仅为涉及CUDA同步操作的API调用收集回溯信息。
  • other: 收集除内核、内存、同步之外的其他CUDA API调用的回溯信息。

可以组合使用

可以通过逗号,来组合多个值,例如:

  • kernel,memory: 收集涉及内核和内存操作的API调用的回溯信息。

带有阈值

每个值(除了none)都可以附加一个在其后面的阈值,该阈值指定了CUDA API必须执行的时间长度阈值(以纳秒计),只有当调用超过这个时间长度时,才会收集回溯信息。例如:

  • kernel:500: 如果内核API调用执行时间超过500纳秒,则收集回溯。

默认情况下,每个阈值设定为80微秒(80000纳秒)。

使用场景和选择

  • 默认情况: 默认值是none,即在正常情况下不收集任何回溯信息,这样可以避免额外的性能开销。
  • 性能调试: 当需要深入理解CUDA程序性能问题时,可以启用特定类型的回溯收集。例如,如果你怀疑性能瓶颈与内存操作相关,你可以使用memory或者带有特定阈值的memory:threshold
  • 调查特定API: 如果想要专注于某一类API调用,如同步调用,可以单独启用sync
  • 减少开销: 如果担心运行时开销,可以设置较高的阈值,这样只有较长时间的API调用才会记录回溯信息。

最终选择取决于具体的调试需求和性能权衡。请注意,由于收集完整的回溯信息可能会导致显著的性能降低,通常仅在开发和调试过程中使用,并且在实际部署的应用中禁用。此外,CPU采样必须被启用以支持这一功能。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值