0

我实现了一些 CUDA 代码。它运行良好,但算法本质上会产生强烈的线程分歧。这是意料之中的。

稍后我将尝试减少分歧。但目前我很高兴能够测量它。

是否有一种简单的方法(最好使用运行时 API 调用或 CLI 工具)来检查我最初计划的扭曲和/或线程中有多少仍然处于活动状态?

4

1 回答 1

2

除了评论中给出的解决方案之外,您还可以使用它Nsight Compute来分析您的内核。您可以尝试其 CLI,然后在其 GUI 中查看结果,例如:

ncu --export output --force-overwrite --target-processes application-only \
  --replay-mode kernel --kernel-regex-base function --launch-skip-before-match 0 \
  --section InstructionStats \
  --section Occupancy \
  --section SchedulerStats \
  --section SourceCounters \
  --section WarpStateStats \
  --sampling-interval auto \
  --sampling-max-passes 5 \
  --profile-from-start 1 --cache-control all --clock-control base \
  --apply-rules yes --import-source no --check-exit-code yes \
  your-appication [arguments]

然后,在它的 GUI 中,您可以看到一些有用的信息。例如,在源计数器部分中,您可以看到如下内容:

在此处输入图像描述

于 2022-01-29T19:14:48.843 回答