Stall cycle of SM


I’m currently working on finding out the stall cycles for SM, but the warp state statistics only shows the average number of cycles that the warps were stalled for certain reasons. Also, I found the Active cycle of SM is present in the SOL page but, I’m not sure if that could be used to calculate the stall cycles by dividing with elapsed cycles of the kernel.

Is there any metrics or the results on the report that I can refer or calculate the stall cycles for SM?

Thank you in advance,



If we define three states:
ACTIVE - SM (or SM sub-partition) has at least one active/resident warp. sm__cycles_active.avg.
IDLE - SM (or SM sub-partition) has no active/resident warp. sm__cycles_elapsed.avg - sm__cycles_active.avg.
ISSUE_ACTIVE - SM sub-partition is active an issued an instruction. Each sub-partition (warp scheduler) can issue 1 instruction per cycle. smsp__issue_active.avg
ISSUE_STALLED - SM sub-partition is ACTIVE (>1 active warp) but all warps are stalled so no instruction can be issued. DERIVE - see below.

I think what you are asking for is SM sub-partition ISSUE_STALLED.

In Perfworks metrics
sm__ is an SM level metric - 4 sub-partitions
smsp__ is an SM sub-partition level metric

I use the term USER to indicate these are not perfworks metrics but user defined metrics using the same naming scheme.

USER::smsp__issue_stalled.sum = smsp__cycles_active.sum - smsp__issue_active.sum
USER::smsp__issue_stalled.avg.pct_of_peak_sustained_active = 1 - smsp__issue_active.avg.pct_of_peak_sustained_active

If you don’t want to define a section or manually add metrics to the Activity::Profile::Other::Metrics field you can calculate this as a % by looking at one counter in the UI.:

SM Warp Scheduler Issue Stalled% Active = 1.0 - “Scheduler Statistics::Issued Warp Per Scheduler” x 100.