CUTRACE

case01_adaptive_avg_pool

thread
block=(35,0,0)
thread=(0,0,0)
kernel
adaptive_average_pool<float>
  • The left panel shows the upstream source.
  • The right panel shows values recorded or recovered by CUTRACE.
  • Replay observation addresses are not native fault addresses.
line 63

Output Plane

int o_plane = blockIdx.x;
blockIdx.x
35
o_plane
35
line 66

Update output

output = output + o_plane*osizeH*osizeW;
o_plane
35
osizeH
1
osizeW
67108607
output (offset)
-1946166051

This native offset is recovered from replay watch values and kernel parameters.

line 84

Loop State

for(ow = ostartW; ow < oendW; ow += ostepW) {
output (offset)
-1946166051
ostartH
0
oendH
1
ostepH
8
ostartW
0
oendW
67108607
ostepW
32
oh
0
ow values
0, 32

Only the first two iterations are shown here.

line 92

ptr_output

scalar_t *ptr_output = output + oh*osizeW + ow;
output (offset)
-1946166051
oh
0
ow values
0, 32
ptr_output
0xa0000000, 0xa0000080

These two addresses belong to the buffer used by trace-safe replay.

line 103

Final Store

*ptr_output = sum / kH / kW;
output (offset)
-1946166051
ptr_output
0xa0000000, 0xa0000080
kH
40
kW
1
*ptr_output
store at 0xa0000000, 0xa0000080

These store addresses belong to the trace-safe guard buffer, not the native fault address.