Conv & Pool¶
16 ops, 120 workloads — Pooling 13 · Convolution 3.
One table per op, one row per workload. Ratio is the fastest other implementation's device time divided by ours, so green is faster than it, plain is level with it, red is slower. Times are in ms. How these numbers are taken.
Pooling¶
AvgPool1dFwd¶
input: [N, C, L_in]
audio-input: [4, 128, 4096]kernel_size=3stride=2padding=1dtype=f16, f32downsample long-input: [2, 256, 32000]kernel_size=5stride=4padding=2dtype=f16temporal ceilinput: [2, 128, 2048]kernel_size=4stride=2padding=1ceil_mode=truecount_include_pad=falsedtype=bf16
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
audio- | f16 | 1.11× | 0.00374 | torch-compiletorch-ref | 0.00416 0.0154 | 1.12 | 37% | lat |
| f32 | 1.01× | 0.00528 | torch-compiletorch-ref | 0.00534 0.0154 | 0.794 | 53% | lat | |
long- | f16 | 1.21× | 0.0142 | torch-compiletorch-ref | 0.0172 0.0595 | 1.73 | 64% | mem |
ceil | bf16 | 1.44× | 0.00234 | torch-compiletorch-ref | 0.00336 0.00534 | 0.561 | 15% | lat |
AvgPool2dFwd¶
input: [N, C, H_in, W_in]
stride=[2,2]
vision-input: [2, 64, 112, 112]kernel_size=[3,3]padding=[1,1]dtype=f16, f323x3- s2 vision-input: [2, 128, 56, 56]kernel_size=[5,5]padding=[2,2]dtype=f165x5- s2 ceil-input: [3, 96, 55, 57]kernel_size=[3,5]padding=[1,2]ceil_mode=truecount_include_pad=falsedivisor_override=7dtype=bf16divisor
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
vision- | f16 | 1.19× | 0.00339 | torch-compileflaggemstorch-ref | 0.00403 0.00669 0.00918 | 1.17 | 26% | lat |
| f32 | 1.19× | 0.00442 | torch-compileflaggemstorch-ref | 0.00525 0.0071 0.00944 | 0.899 | 40% | lat | |
vision- | f16 | 1.78× | 0.00406 | flaggemstorch-reftorch-compile | 0.00723 0.00986 0.0218 | 1.23 | 11% | lat |
ceil- | bf16 | 1.24× | 0.00314 | torch-compileflaggemstorch-ref | 0.0039 0.00586 0.00765 | 1.14 | 16% | lat |
AvgPool3dFwd¶
input: [N, C, D_in, H_in, W_in]
stride=[2,2,2]
video-input: [1, 32, 16, 56, 56]kernel_size=[2,2,2]padding=[0,0,0]dtype=f16, f322x2x2 ceil-input: [2, 64, 8, 28, 28]kernel_size=[2,3,3]padding=[1,1,1]ceil_mode=truecount_include_pad=falsedtype=f16video divisorinput: [2, 24, 10, 20, 22]kernel_size=[2,2,3]padding=[0,1,1]divisor_override=7dtype=bf16
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
video- | f16 | 1.15× | 0.00298 | torch-compilecudnntorch-ref | 0.00342 0.00586 0.00998 | 0.607 | 27% | lat |
| f32 | 1.06× | 0.00387 | torch-compilecudnntorch-ref | 0.0041 0.00653 0.0103 | 0.467 | 41% | lat | |
ceil- | f16 | 1.21× | 0.00333 | torch-compilecudnntorch-ref | 0.00403 0.00566 0.0114 | 0.586 | 13% | lat |
divisor | bf16 | 1.02× | 0.00192 | torch-compiletorch-ref | 0.00195 0.00509 | 0.175 | 6% | lat |
MaxPool1dFwd¶
input: [N, C, L_in]
sincnet-input: [32, 80, 4096]kernel_size=3stride=3dtype=f16, f32local textcnn-input: [64, 256, 128]kernel_size=128stride=1dtype=f16global ecg-input: [16, 128, 2048]kernel_size=5stride=2padding=2dilation=2ceil_mode=truedtype=bf16cnn- dilated
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
sincnet- | f16 | 1.10× | 0.0104 | torch-compiletorch-ref | 0.0115 0.0506 | 1 | 60% | mem |
| f32 | 1.00× | 0.0158 | torch-compiletorch-ref | 0.0157 0.0501 | 0.665 | 79% | mem | |
textcnn- | f16 | 1.10× | 0.00346 | torch-compiletorch-ref | 0.00381 0.0265 | 0.607 | 27% | lat |
ecg- | bf16 | 1.33× | 0.00595 | torch-compiletorch-ref | 0.0079 0.0354 | 1.76 | 31% | lat |
MaxPool1dIndicesFwd¶
input: [N, C, L_in]
sincnet-input: [32, 80, 4096]kernel_size=3stride=3dtype=f16, f32local textcnn-input: [64, 256, 128]kernel_size=128stride=1dtype=f16global ecg-input: [16, 128, 2048]kernel_size=5stride=2padding=2dilation=2ceil_mode=truedtype=bf16cnn- dilated
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
sincnet- | f16 | 1.03× | 0.0158 | torch-compiletorch-ref | 0.0163 0.0506 | 0.663 | 79% | mem |
| f32 | 1.00× | 0.0215 | torch-compiletorch-ref | 0.0216 0.0500 | 0.488 | 87% | mem | |
textcnn- | f16 | 1.26× | 0.00461 | torch-compiletorch-ref | 0.00579 0.0265 | 0.455 | 21% | lat |
ecg- | bf16 | 1.29× | 0.0104 | torch-compiletorch-ref | 0.0134 0.0354 | 1.01 | 54% | mem |
MaxPool2dFwd¶
input: [N, C, H_in, W_in]
stride=[2,2]dtype=f16, bf16, f32
resnet-input: [32, 64, 112, 112]kernel_size=[3,3]padding=[1,1]stem vgg-input: [16, 128, 56, 56]kernel_size=[2,2]padding=[0,0]block alexnet-input: [32, 64, 55, 55]kernel_size=[3,3]padding=[0,0]ceil_mode=trueceil
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
resnet- | f16 | 1.47× | 0.0235 | torch-compileflaggemstorch-ref | 0.0344 0.0788 0.1394 | 2.44 | 61% | mem |
| bf16 | 1.39× | 0.0248 | torch-compileflaggemstorch-ref | 0.0344 0.0788 0.1396 | 2.31 | 58% | mem | |
| f32 | 1.48× | 0.0334 | torch-compileflaggemstorch-ref | 0.0496 0.0816 0.1348 | 1.71 | 85% | mem | |
vgg- | f16 | 1.19× | 0.00608 | torch-compileflaggemstorch-ref | 0.00723 0.0148 0.0278 | 1.06 | 59% | mem |
| bf16 | 1.19× | 0.00608 | torch-compileflaggemstorch-ref | 0.00726 0.0148 0.0279 | 1.06 | 59% | mem | |
| f32 | 1.04× | 0.00995 | torch-compileflaggemstorch-ref | 0.0103 0.0169 0.0277 | 0.645 | 72% | mem | |
alexnet- | f16 | 1.27× | 0.0087 | torch-compileflaggemstorch-ref | 0.0111 0.0226 0.0348 | 1.54 | 39% | mem |
| bf16 | 1.27× | 0.00874 | torch-compileflaggemstorch-ref | 0.0111 0.0225 0.0348 | 1.54 | 39% | mem | |
| f32 | 1.27× | 0.0123 | torch-compileflaggemstorch-ref | 0.0155 0.0229 0.0342 | 1.1 | 56% | mem | |
MaxPool2dIndicesFwd¶
input: [N, C, H_in, W_in]
stride=[2,2]dtype=f16, bf16, f32
resnet-input: [32, 64, 112, 112]kernel_size=[3,3]padding=[1,1]stem vgg-input: [16, 128, 56, 56]kernel_size=[2,2]padding=[0,0]block alexnet-input: [32, 64, 55, 55]kernel_size=[3,3]padding=[0,0]ceil_mode=trueceil
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
resnet- | f16 | 2.21× | 0.0315 | torch-compileflaggemstorch-ref | 0.0695 0.0789 0.1393 | 1.82 | 82% | mem |
| bf16 | 2.16× | 0.0324 | torch-compileflaggemstorch-ref | 0.0701 0.0788 0.1397 | 1.76 | 79% | mem | |
| f32 | 1.52× | 0.0473 | torch-compileflaggemstorch-ref | 0.0721 0.0813 0.1349 | 1.21 | 84% | mem | |
vgg- | f16 | 1.09× | 0.00986 | torch-compileflaggemstorch-ref | 0.0108 0.0148 0.0278 | 0.652 | 65% | mem |
| bf16 | 1.25× | 0.00982 | torch-compileflaggemstorch-ref | 0.0123 0.0148 0.0279 | 0.654 | 65% | mem | |
| f32 | 0.99× | 0.0131 | torch-compileflaggemstorch-ref | 0.0129 0.0169 0.0277 | 0.491 | 76% | mem | |
alexnet- | f16 | 1.59× | 0.0112 | torch-compileflaggemstorch-ref | 0.0178 0.0226 0.0347 | 1.2 | 54% | mem |
| bf16 | 1.58× | 0.0111 | torch-compileflaggemstorch-ref | 0.0175 0.0226 0.0348 | 1.21 | 55% | mem | |
| f32 | 1.32× | 0.0147 | torch-compileflaggemstorch-ref | 0.0194 0.0229 0.0342 | 0.913 | 64% | mem | |
MaxPool3dFwd¶
input: [N, C, D_in, H_in, W_in]
c3d-input: [8, 64, 16, 112, 112]kernel_size=[1,2,2]stride=[1,2,2]padding=[0,0,0]dtype=f16, f32pool1 c3d-input: [4, 128, 16, 56, 56]kernel_size=[2,2,2]stride=[2,2,2]padding=[0,0,0]dtype=f16pool2 medicalnet-input: [2, 64, 32, 112, 112]kernel_size=[3,3,3]stride=[2,2,2]padding=[1,1,1]ceil_mode=truedtype=bf16stem
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
c3d- | f16 | 1.04× | 0.0751 | torch-compilecudnntorch-ref | 0.0783 0.3043 0.5201 | 1.37 | 76% | mem |
| f32 | 1.00× | 0.1211 | torch-compilecudnntorch-ref | 0.1208 0.3466 0.5261 | 0.849 | 94% | mem | |
c3d- | f16 | 1.03× | 0.0240 | torch-compilecudnntorch-ref | 0.0248 0.0619 0.0951 | 1.07 | 53% | mem |
medicalnet- | bf16 | 2.68× | 0.0997 | cudnntorch-reftorch-compile | 0.2669 0.3359 0.9276 | 1.74 | 26% | mem |
MaxPool3dIndicesFwd¶
input: [N, C, D_in, H_in, W_in]
c3d-input: [8, 64, 16, 112, 112]kernel_size=[1,2,2]stride=[1,2,2]padding=[0,0,0]dtype=f16, f32pool1 c3d-input: [4, 128, 16, 56, 56]kernel_size=[2,2,2]stride=[2,2,2]padding=[0,0,0]dtype=f16pool2 medicalnet-input: [2, 64, 32, 112, 112]kernel_size=[3,3,3]stride=[2,2,2]padding=[1,1,1]ceil_mode=truedtype=bf16stem
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
c3d- | f16 | 1.07× | 0.1224 | torch-compiletorch-ref | 0.1305 0.5201 | 0.84 | 84% | mem |
| f32 | 1.00× | 0.1667 | torch-compiletorch-ref | 0.1668 0.5260 | 0.616 | 96% | mem | |
c3d- | f16 | 1.20× | 0.0274 | torch-compiletorch-ref | 0.0329 0.0950 | 0.939 | 68% | mem |
medicalnet- | bf16 | 15.63× | 0.1304 | torch-reftorch-compile | 0.3359 2.0378 | 1.33 | 30% | mem |
AdaptiveAvgPool2dFwd¶
input: [*B, C, H_in, W_in]
resnet-input: [8, 2048, 7, 7]output_size=[1,1]dtype=f16gap spp-input: [2, 128, 56, 56]output_size=[6,6]dtype=f166x6 nondiv-input: [2, 64, 55, 57]output_size=[7,7]dtype=bf167x7 resnet-input: [2048, 7, 7]output_size=[1,1]dtype=f16gap- unbatched
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
resnet- | f16 | 1.27× | 0.00294 | torch-compiletorch-ref | 0.00374 0.0073 | 0.273 | 12% | lat |
spp- | f16 | 1.96× | 0.00546 | torch-compiletorch-ref | 0.0107 0.0108 | 0.169 | 7% | lat |
nondiv- | bf16 | 1.39× | 0.00669 | torch-reftorch-compile | 0.00925 0.00928 | 0.0736 | 3% | lat |
resnet- | f16 | 2.00× | 0.00243 | torch-reftorch-compile | 0.00317 0.00486 | 0.0413 | 2% | lat |
AdaptiveMaxPool2dFwd¶
input: [*B, C, H_in, W_in]
global-input: [8, 2048, 7, 7]output_size=[1,1]dtype=f161x1 spp-input: [2, 128, 56, 56]output_size=[6,6]dtype=f166x6 nondiv-input: [2, 64, 55, 57]output_size=[7,7]dtype=bf167x7 global-input: [2048, 7, 7]output_size=[1,1]dtype=f161x1- unbatched
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
global- | f16 | 2.17× | 0.00278 | torch-compiletorch-ref | 0.00605 0.0445 | 0.288 | 13% | lat |
spp- | f16 | 4.06× | 0.00355 | torch-reftorch-compile | 0.0144 0.0144 | 0.259 | 10% | lat |
nondiv- | bf16 | 3.43× | 0.00338 | torch-compiletorch-ref | 0.0116 0.0116 | 0.146 | 5% | lat |
global- | f16 | 1.05× | 0.00192 | torch-compiletorch-ref | 0.00202 0.0128 | 0.0523 | 2% | lat |
AdaptiveMaxPool2dIndicesFwd¶
input: [*B, C, H_in, W_in]
global-input: [8, 2048, 7, 7]output_size=[1,1]dtype=f161x1 spp-input: [2, 128, 56, 56]output_size=[6,6]dtype=f166x6 nondiv-input: [2, 64, 55, 57]output_size=[7,7]dtype=bf167x7 global-input: [2048, 7, 7]output_size=[1,1]dtype=f161x1- unbatched
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
global- | f16 | 2.91× | 0.00282 | torch-compiletorch-ref | 0.00819 0.0446 | 0.285 | 14% | lat |
spp- | f16 | 3.99× | 0.00362 | torch-reftorch-compile | 0.0144 0.0144 | 0.255 | 10% | lat |
nondiv- | bf16 | 3.32× | 0.00349 | torch-compiletorch-ref | 0.0116 0.0116 | 0.141 | 6% | lat |
global- | f16 | 1.56× | 0.00205 | torch-compiletorch-ref | 0.0032 0.0128 | 0.049 | 2% | lat |
MeanPoolingFwd¶
x: [B, S, H, D]
chunk_size=64
uniform-x: [1, 8192, 64, 128]dtype=f16/f32, bf16/f328k uniform-x: [2, 2048, 64, 128]dtype=f16/f32batched
x: [B, S, H, D]offsets: [NS + 1], i32indices: [NC, 2], i32
ragged-x: [1, 8192, 64, 128]offsets: [5], i32indices: [128, 2], i32seq_lens=repeat(2048, 4)chunk_size=64dtype=f16/f32, f32/f32even ragged-x: [1, 1000, 64, 128]offsets: [5], i32indices: [34, 2], i32seq_lens=[100,200,300,400]chunk_size=32dtype=f16/f32tail ragged-x: [2, 2048, 64, 128]offsets: [3], i32indices: [32, 2], i32seq_lens=repeat(1024, 2)chunk_size=64dtype=f16/f32batched
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
uniform- | f16/f32 | 1.21× | 0.0388 | torch-view-meantorch-compiletorch-ref | 0.0471 0.3804 0.6260 | 1.76 | 78% | mem |
| bf16/f32 | 1.25× | 0.0393 | torch-view-meantorch-compiletorch-ref | 0.0491 0.3800 0.6311 | 1.73 | 77% | mem | |
uniform- | f16/f32 | 1.29× | 0.0223 | torch-view-meantorch-compiletorch-ref | 0.0287 0.1402 0.1832 | 1.53 | 68% | mem |
ragged- | f16/f32 | 7.50× | 0.0406 | torch-segment-reducetorch-compiletorch-ref | 0.3041 0.3811 0.6306 | 1.68 | 75% | mem |
| f32/f32 | 1.15× | 0.0699 | torch-segment-reducetorch-compiletorch-ref | 0.0801 0.3797 0.6518 | 0.975 | 87% | mem | |
ragged- | f16/f32 | 4.82× | 0.00938 | torch-segment-reducetorch-compiletorch-ref | 0.0452 0.0964 0.2181 | 0.903 | 40% | mem |
ragged- | f16/f32 | 5.85× | 0.0240 | torch-compiletorch-reftorch-segment-reduce | 0.1407 0.1876 0.2657 | 1.42 | 63% | mem |
Convolution¶
Conv1dFwd¶
input: [N, C_in, L_in]weight: [C_out, C_in_g, kW]
dtype=f16, bf16
whisper-input: [1, 80, 3000]weight: [1280, 80, 3]conv1 wav2vec2-input: [1, 1, 16000]weight: [512, 1, 10]stride=5layer1 encodec-input: [1, 1, 24000]weight: [32, 1, 7]init encodec-input: [1, 128, 600]weight: [256, 128, 10]deep
input: [N, C_in, L_in]weight: [C_out, C_in_g, kW]bias: [C_out]
dtype=f16, bf16
whisper-input: [1, 80, 3000]weight: [1280, 80, 3]bias: [1280]conv1- bias wav2vec2-input: [1, 1, 16000]weight: [512, 1, 10]bias: [512]stride=5layer1- bias encodec-input: [1, 1, 24000]weight: [32, 1, 7]bias: [32]init- bias encodec-input: [1, 128, 600]weight: [256, 128, 10]bias: [256]deep- bias
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
whisper- | f16 | 2.52× | 0.0225 | torchtorch-compileflaggems | 0.0568 0.0568 0.1131 | 81.8 | 11% | comp |
| bf16 | 2.50× | 0.0226 | torchtorch-compileflaggems | 0.0566 0.0566 0.1116 | 81.4 | 11% | comp | |
wav2vec2- | f16 | 2.96× | 0.0063 | torchtorch-compileflaggems | 0.0187 0.0187 0.0405 | 5.2 | 12% | lat |
| bf16 | 2.98× | 0.0063 | torchtorch-compileflaggems | 0.0188 0.0188 0.0404 | 5.2 | 12% | lat | |
encodec- | f16 | 1.99× | 0.00333 | torchtorch-compileflaggems | 0.00662 0.00666 0.0241 | 3.23 | 11% | lat |
| bf16 | 2.00× | 0.00333 | torchtorch-compileflaggems | 0.00666 0.00666 0.0240 | 3.23 | 11% | lat | |
encodec- | f16 | 1.74× | 0.00982 | torchtorch-compileflaggems | 0.0171 0.0171 0.0715 | 39.4 | 5% | lat |
| bf16 | 1.74× | 0.00982 | torchtorch-compileflaggems | 0.0171 0.0171 0.0714 | 39.4 | 5% | lat | |
whisper- | f16 | 2.76× | 0.0231 | torch-compiletorchflaggems | 0.0637 0.0693 0.1115 | 79.9 | 11% | comp |
| bf16 | 2.75× | 0.0232 | torch-compiletorchflaggems | 0.0637 0.0694 0.1118 | 79.7 | 10% | comp | |
wav2vec2- | f16 | 3.15× | 0.00685 | torch-compiletorchflaggems | 0.0216 0.0252 0.0396 | 5.02 | 11% | lat |
| bf16 | 3.27× | 0.00662 | torch-compiletorchflaggems | 0.0217 0.0255 0.0394 | 5.19 | 11% | lat | |
encodec- | f16 | 2.42× | 0.00355 | torch-compiletorchflaggems | 0.00861 0.0107 0.0232 | 3.24 | 10% | lat |
| bf16 | 2.71× | 0.00336 | torch-compiletorchflaggems | 0.00912 0.0108 0.0232 | 3.43 | 10% | lat | |
encodec- | f16 | 1.81× | 0.0103 | torch-compiletorchflaggems | 0.0187 0.0204 0.0706 | 37.6 | 5% | lat |
| bf16 | 1.81× | 0.0103 | torch-compiletorchflaggems | 0.0186 0.0204 0.0705 | 37.7 | 5% | lat | |
Conv2dFwd¶
input: [N, C_in, H, W]weight: [C_out, C_in_g, kH, kW]
resnet-input: [2, 64, 56, 56]weight: [64, 64, 3, 3]stride=[1,1]padding=[1,1]dtype=f16, bf163x3 steminput: [1, 3, 112, 112]weight: [64, 3, 3, 3]stride=[2,2]padding=[1,1]dtype=f16stage-input: [1, 128, 56, 56]weight: [256, 128, 3, 3]stride=[2,2]padding=[1,1]dtype=f16down- 3x3 highresinput: [1, 256, 112, 112]weight: [512, 256, 3, 3]stride=[1,1]padding=[1,1]dtype=f16midresinput: [1, 64, 56, 56]weight: [128, 64, 5, 5]stride=[1,1]padding=[2,2]dtype=f16stage-input: [1, 128, 56, 56]weight: [256, 128, 5, 5]stride=[2,2]padding=[2,2]dtype=f16down- 5x5 stride2input: [1, 128, 28, 28]weight: [128, 128, 3, 3]stride=[2,2]padding=[1,1]dtype=bf16resnet-input: [2, 64, 56, 56]weight: [256, 64, 1, 1]stride=[1,1]padding=[0,0]dtype=f16, bf161x1 bottleneck-input: [2, 128, 28, 28]weight: [512, 128, 1, 1]stride=[1,1]padding=[0,0]dtype=f16expand bottleneck-input: [2, 512, 28, 28]weight: [128, 512, 1, 1]stride=[1,1]padding=[0,0]dtype=f16reduce late-input: [1, 256, 14, 14]weight: [1024, 256, 1, 1]stride=[1,1]padding=[0,0]dtype=f16stage- 1x1 classifier-input: [1, 512, 7, 7]weight: [2048, 512, 1, 1]stride=[1,1]padding=[0,0]dtype=f161x1 deeplabv3-input: [1, 2048, 32, 32]weight: [256, 2048, 3, 3]stride=[1,1]padding=[12,12]dilation=[12,12]dtype=f16aspp mbv2-input: [1, 32, 56, 56]weight: [32, 1, 3, 3]stride=[1,1]padding=[1,1]groups=32dtype=f16depthwise resnext-input: [1, 128, 28, 28]weight: [256, 4, 3, 3]stride=[1,1]padding=[1,1]groups=32dtype=f16grouped- 3x3
input: [N, C_in, H, W]weight: [C_out, C_in_g, kH, kW]bias: [C_out]
resnet-input: [2, 64, 56, 56]weight: [64, 64, 3, 3]bias: [64]stride=[1,1]padding=[1,1]dtype=f16, bf163x3- bias stem-input: [1, 3, 112, 112]weight: [64, 3, 3, 3]bias: [64]stride=[2,2]padding=[1,1]dtype=f16bias stage-input: [1, 128, 56, 56]weight: [256, 128, 3, 3]bias: [256]stride=[2,2]padding=[1,1]dtype=f16down- 3x3- bias highres-input: [1, 256, 112, 112]weight: [512, 256, 3, 3]bias: [512]stride=[1,1]padding=[1,1]dtype=f16bias midres-input: [1, 64, 56, 56]weight: [128, 64, 5, 5]bias: [128]stride=[1,1]padding=[2,2]dtype=f16bias stage-input: [1, 128, 56, 56]weight: [256, 128, 5, 5]bias: [256]stride=[2,2]padding=[2,2]dtype=f16down- 5x5- bias stride2-input: [1, 128, 28, 28]weight: [128, 128, 3, 3]bias: [128]stride=[2,2]padding=[1,1]dtype=bf16bias resnet-input: [2, 64, 56, 56]weight: [256, 64, 1, 1]bias: [256]stride=[1,1]padding=[0,0]dtype=f16, bf161x1- bias bottleneck-input: [2, 128, 28, 28]weight: [512, 128, 1, 1]bias: [512]stride=[1,1]padding=[0,0]dtype=f16expand- bias bottleneck-input: [2, 512, 28, 28]weight: [128, 512, 1, 1]bias: [128]stride=[1,1]padding=[0,0]dtype=f16reduce- bias late-input: [1, 256, 14, 14]weight: [1024, 256, 1, 1]bias: [1024]stride=[1,1]padding=[0,0]dtype=f16stage- 1x1- bias classifier-input: [1, 512, 7, 7]weight: [2048, 512, 1, 1]bias: [2048]stride=[1,1]padding=[0,0]dtype=f161x1- bias
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
resnet- | f16 | 1.63× | 0.00714 | torch-compiletorchflaggems | 0.0116 0.0148 0.0834 | 63.3 | 9% | lat |
| bf16 | 1.66× | 0.00714 | torch-compiletorchflaggems | 0.0118 0.0149 0.0833 | 63.3 | 8% | lat | |
stem | f16 | 2.11× | 0.00312 | torchtorch-compileflaggems | 0.00659 0.00925 0.0132 | 3.43 | 3% | lat |
stage- | f16 | 1.45× | 0.00931 | torch-compiletorchflaggems | 0.0135 0.0170 0.1183 | 48.5 | 7% | lat |
highres | f16 | 1.23× | 0.0641 | torch-compiletorchflaggems | 0.0785 0.0949 0.7347 | 456 | 63% | comp |
midres | f16 | 1.53× | 0.0106 | torch-compiletorchflaggems | 0.0163 0.0193 0.2017 | 116 | 16% | lat |
stage- | f16 | 1.28× | 0.0174 | torch-compiletorchflaggems | 0.0222 0.0254 0.3096 | 70.8 | 10% | lat |
stride2 | bf16 | 1.51× | 0.00803 | torch-compiletorchflaggems | 0.0121 0.0148 0.0647 | 6.86 | 2% | lat |
resnet- | f16 | 1.06× | 0.004 | torchtorch-compileflaggems | 0.00422 0.00845 0.0495 | 51.4 | 22% | lat |
| bf16 | 1.01× | 0.004 | torchtorch-compileflaggems | 0.00403 0.00835 0.0495 | 51.4 | 22% | lat | |
bottleneck- | f16 | 1.18× | 0.00343 | torchtorch-compileflaggems | 0.00403 0.00742 0.0290 | 60 | 14% | lat |
bottleneck- | f16 | 1.06× | 0.00413 | torchtorch-compileflaggems | 0.00438 0.008 0.0264 | 49.8 | 12% | lat |
late- | f16 | 1.55× | 0.0041 | torchtorch-compileflaggems | 0.00637 0.00669 0.0157 | 25.1 | 6% | lat |
classifier- | f16 | 1.03× | 0.0071 | torch-compiletorchflaggems | 0.00733 0.00922 0.0211 | 14.5 | 7% | lat |
deeplabv3- | f16 | 1.09× | 0.0836 | torch-compiletorchflaggems | 0.0915 0.1193 0.7178 | 65 | 9% | comp |
mbv2- | f16 | 1.39× | 0.00221 | torchtorch-compileflaggems | 0.00307 0.00563 0.0542 | 0.799 | 4% | lat |
resnext- | f16 | 5.05× | 0.00378 | torch-compiletorchflaggems | 0.0191 0.0191 0.0193 | 3.65 | 4% | lat |
resnet- | f16 | 1.64× | 0.00755 | torch-compiletorchflaggems | 0.0124 0.0183 0.0827 | 59.8 | 8% | lat |
| bf16 | 1.60× | 0.00755 | torch-compiletorchflaggems | 0.0121 0.0185 0.0826 | 59.8 | 8% | lat | |
stem- | f16 | 2.70× | 0.00355 | torchtorch-compileflaggems | 0.0096 0.0097 0.0124 | 3.07 | 3% | lat |
stage- | f16 | 1.39× | 0.00992 | torch-compiletorchflaggems | 0.0138 0.0200 0.1172 | 45.5 | 6% | lat |
highres- | f16 | 1.19× | 0.0665 | torch-compiletorchflaggems | 0.0789 0.1145 0.7313 | 440 | 60% | comp |
midres- | f16 | 1.42× | 0.0115 | torch-compiletorchflaggems | 0.0164 0.0225 0.2015 | 107 | 15% | lat |
stage- | f16 | 1.26× | 0.0179 | torch-compiletorchflaggems | 0.0225 0.0287 0.3088 | 68.7 | 9% | lat |
stride2- | bf16 | 1.48× | 0.00855 | torch-compiletorchflaggems | 0.0127 0.0175 0.0638 | 6.45 | 1% | lat |
resnet- | f16 | 2.13× | 0.00422 | torch-compiletorchflaggems | 0.00899 0.0116 0.0486 | 49 | 21% | lat |
| bf16 | 2.02× | 0.00419 | torch-compiletorchflaggems | 0.00845 0.0116 0.0486 | 49.4 | 21% | lat | |
bottleneck- | f16 | 2.11× | 0.00362 | torch-compiletorchflaggems | 0.00765 0.00867 0.0280 | 57.1 | 13% | lat |
bottleneck- | f16 | 1.76× | 0.00416 | torchtorch-compileflaggems | 0.00733 0.00829 0.0255 | 49.5 | 11% | lat |
late- | f16 | 1.65× | 0.00435 | torch-compiletorchflaggems | 0.00717 0.00923 0.0150 | 23.7 | 5% | lat |
classifier- | f16 | 1.05× | 0.00758 | torch-compiletorchflaggems | 0.00797 0.0121 0.0204 | 13.6 | 7% | lat |
Conv3dFwd¶
input: [N, C_in, D, H, W]weight: [C_out, C_in_g, kD, kH, kW]
r3d-input: [1, 3, 16, 112, 112]weight: [64, 3, 3, 3, 3]stride=[1,1,1]padding=[1,1,1]dtype=f16stem video-input: [1, 64, 8, 56, 56]weight: [128, 64, 3, 3, 3]stride=[2,2,2]padding=[1,1,1]dtype=f16down unet-input: [1, 32, 32, 64, 64]weight: [64, 32, 3, 3, 3]stride=[1,1,1]padding=[1,1,1]dtype=bf16encoder unet-input: [1, 256, 8, 16, 16]weight: [256, 256, 3, 3, 3]stride=[1,1,1]padding=[6,6,6]dilation=[6,6,6]dtype=f16aspp resnext-input: [1, 64, 8, 28, 28]weight: [128, 2, 3, 3, 3]stride=[1,1,1]padding=[1,1,1]groups=32dtype=f16grouped
input: [N, C_in, D, H, W]weight: [C_out, C_in_g, kD, kH, kW]bias: [C_out]
padding=[1,1,1]
r3d-input: [1, 3, 16, 112, 112]weight: [64, 3, 3, 3, 3]bias: [64]stride=[1,1,1]dtype=f16stem- bias video-input: [1, 64, 8, 56, 56]weight: [128, 64, 3, 3, 3]bias: [128]stride=[2,2,2]dtype=f16down- bias unet-input: [1, 32, 32, 64, 64]weight: [64, 32, 3, 3, 3]bias: [64]stride=[1,1,1]dtype=bf16encoder- bias
| Workload | dtype | Ratio | Device time | Alternatives | Throughput | SOL | Bound | |
|---|---|---|---|---|---|---|---|---|
| alt / ours | ms | name | ms | TFLOP/s | of ceiling | by | ||
r3d- | f16 | 3.90× | 0.0220 | flaggemstorch-compiletorch | 0.0858 0.1148 0.1148 | 89.5 | 27% | mem |
video- | f16 | 1.47× | 0.0180 | torch-compiletorchflaggems | 0.0265 0.0265 0.2172 | 69 | 9% | lat |
unet- | bf16 | 1.76× | 0.0660 | torchtorch-compileflaggems | 0.1164 0.1168 0.3176 | 211 | 28% | comp |
unet- | f16 | 1.31× | 0.0290 | torch-compiletorchflaggems | 0.0379 0.0379 0.3009 | 70.4 | 10% | comp |
resnext- | f16 | 16.58× | 0.0154 | flaggemstorchtorch-compile | 0.2546 0.3312 0.3361 | 4.93 | 4% | lat |
r3d- | f16 | 3.81× | 0.0223 | flaggemstorch-compiletorch | 0.0850 0.1261 0.1547 | 88.9 | 27% | mem |
video- | f16 | 1.52× | 0.0184 | torch-compiletorchflaggems | 0.0280 0.0299 0.2157 | 67.4 | 9% | lat |
unet- | bf16 | 1.86× | 0.0666 | torch-compiletorchflaggems | 0.1235 0.1420 0.3167 | 209 | 27% | comp |