NVIDIA / NVIDIA/cccl

Tune `cub::DeviceTransform`

Open
#7,507 0 comments 0 reactions 1 assignee Claimed by @bernhardmgruber View on GitHub
Dominant language
C++
Stars
2.5k
Forks
486
Avg merge
2d 6h
Merged PRs (30d)
295

Description

Because of the complexity of the tuning definitions of `cub::DeviceTransform` we never managed to successfully tune the algorithm. This is repeatedly coming up as an issue, when people find self-written transform kernels outperforming `cub::DeviceTransform`, often just marginally. One example is the GPU MODE leaderboard.

For a presentation, I produced a diff between the default code path (ublkcp) and the vectorized code path on B200. The results indicate that we could be up to 10% faster in some cases (nstream), if we chose a different algorithm. So I assume there should be some easy gains.

Let's resolve

- [x] #7510
- [x] #8805 (will half the time required for tuning)
- [x] Optional: #7167
- [x] maybe #8227
- [x] #7262

and then finally tune `cub::DeviceTransform`.

We should tune it for at least sm80, sm90, sm100, and sm120. sm120 tuning is tracked here: #7628

Default code path vs vectorized:
```
# mul

## [0] NVIDIA B200

| T{ct} | OffsetT{ct} | Elements{io} | Ref Time | Ref Noise | Cmp Time | Cmp Noise | Diff | %Diff | Status |
|---------|---------------|----------------|------------|-------------|------------|-------------|------------|---------|----------|
| I8 | I32 | 2^16 | 6.314 us | 3.51% | 6.310 us | 2.97% | -0.004 us | -0.07% | SAME |
| I8 | I32 | 2^20 | 7.549 us | 7.59% | 7.067 us | 9.80% | -0.482 us | -6.39% | SAME |
| I8 | I32 | 2^24 | 14.992 us | 3.36% | 13.694 us | 5.15% | -1.298 us | -8.66% | FAST |
| I8 | I32 | 2^28 | 117.255 us | 0.58% | 120.014 us | 0.48% | 2.759 us | 2.35% | SLOW |
| I8 | I64 | 2^16 | 7.115 us | 2.04% | 7.101 us | 2.50% | -0.015 us | -0.21% | SAME |
| I8 | I64 | 2^20 | 7.178 us | 4.25% | 7.132 us | 2.09% | -0.047 us | -0.65% | SAME |
| I8 | I64 | 2^24 | 15.313 us | 0.88% | 13.578 us | 5.26% | -1.735 us | -11.33% | FAST |
| I8 | I64 | 2^28 | 117.978 us | 0.48% | 121.728 us | 0.30% | 3.750 us | 3.18% | SLOW |
| I8 | I64 | 2^32 | 1.749 ms | 0.06% | 1.815 ms | 0.03% | 66.007 us | 3.77% | SLOW |
| I16 | I32 | 2^16 | 7.159 us | 1.14% | 6.706 us | 6.77% | -0.453 us | -6.33% | FAST |
| I16 | I32 | 2^20 | 7.996 us | 12.59% | 7.442 us | 7.64% | -0.554 us | -6.93% | SAME |
| I16 | I32 | 2^24 | 17.656 us | 3.56% | 17.648 us | 5.76% | -0.008 us | -0.05% | SAME |
| I16 | I32 | 2^28 | 162.006 us | 0.62% | 167.019 us | 0.38% | 5.012 us | 3.09% | SLOW |
| I16 | I64 | 2^16 | 7.088 us | 3.30% | 6.784 us | 6.68% | -0.304 us | -4.29% | FAST |
| I16 | I64 | 2^20 | 7.971 us | 10.37% | 7.454 us | 7.77% | -0.517 us | -6.49% | SAME |
| I16 | I64 | 2^24 | 18.525 us | 2.58% | 18.325 us | 3.45% | -0.199 us | -1.08% | SAME |
| I16 | I64 | 2^28 | 162.383 us | 0.29% | 167.580 us | 0.49% | 5.197 us | 3.20% | SLOW |
| I16 | I64 | 2^32 | 2.458 ms | 0.15% | 2.546 ms | 0.03% | 88.628 us | 3.61% | SLOW |
| F32 | I32 | 2^16 | 7.130 us | 1.88% | 6.766 us | 6.28% | -0.364 us | -5.11% | FAST |
| F32 | I32 | 2^20 | 8.917 us | 4.69% | 8.351 us | 2.30% | -0.566 us | -6.35% | FAST |
| F32 | I32 | 2^24 | 27.627 us | 0.68% | 27.287 us | 1.65% | -0.339 us | -1.23% | FAST |
| F32 | I32 | 2^28 | 314.515 us | 0.32% | 315.127 us | 0.35% | 0.611 us | 0.19% | SAME |
| F32 | I64 | 2^16 | 7.153 us | 1.60% | 6.759 us | 6.49% | -0.394 us | -5.51% | FAST |
| F32 | I64 | 2^20 | 9.155 us | 2.46% | 8.351 us | 2.53% | -0.804 us | -8.78% | FAST |
| F32 | I64 | 2^24 | 27.642 us | 0.33% | 27.279 us | 1.72% | -0.363 us | -1.31% | FAST |
| F32 | I64 | 2^28 | 314.552 us | 0.32% | 315.147 us | 0.35% | 0.596 us | 0.19% | SAME |
| F32 | I64 | 2^32 | 4.916 ms | 0.06% | 4.925 ms | 0.08% | 8.334 us | 0.17% | SLOW |
| F64 | I32 | 2^16 | 7.124 us | 3.16% | 7.095 us | 3.31% | -0.029 us | -0.40% | SAME |
| F64 | I32 | 2^20 | 9.328 us | 5.66% | 9.199 us | 2.68% | -0.129 us | -1.38% | SAME |
| F64 | I32 | 2^24 | 47.263 us | 2.16% | 46.873 us | 2.11% | -0.390 us | -0.82% | SAME |
| F64 | I32 | 2^28 | 621.798 us | 0.23% | 626.176 us | 0.18% | 4.377 us | 0.70% | SLOW |
| F64 | I64 | 2^16 | 7.134 us | 3.41% | 7.079 us | 3.93% | -0.055 us | -0.77% | SAME |
| F64 | I64 | 2^20 | 9.291 us | 4.88% | 9.222 us | 3.17% | -0.069 us | -0.74% | SAME |
| F64 | I64 | 2^24 | 47.305 us | 2.13% | 46.974 us | 2.18% | -0.331 us | -0.70% | SAME |
| F64 | I64 | 2^28 | 621.738 us | 0.22% | 625.994 us | 0.18% | 4.256 us | 0.68% | SLOW |
| F64 | I64 | 2^32 | 9.829 ms | 0.11% | 9.879 ms | 0.12% | 50.674 us | 0.52% | SLOW |
| I128 | I32 | 2^16 | 7.091 us | 8.19% | 13.290 us | 0.69% | 6.198 us | 87.40% | SLOW |
| I128 | I32 | 2^20 | 12.282 us | 6.96% | 33.292 us | 2.54% | 21.010 us | 171.06% | SLOW |
| I128 | I32 | 2^24 | 85.615 us | 1.05% | 330.649 us | 0.20% | 245.034 us | 286.20% | SLOW |
| I128 | I32 | 2^28 | 1.236 ms | 0.15% | 4.983 ms | 0.06% | 3.747 ms | 303.20% | SLOW |
| I128 | I64 | 2^16 | 7.053 us | 8.38% | 13.307 us | 0.76% | 6.255 us | 88.69% | SLOW |
| I128 | I64 | 2^20 | 12.307 us | 7.00% | 31.773 us | 0.93% | 19.466 us | 158.17% | SLOW |
| I128 | I64 | 2^24 | 85.732 us | 1.02% | 322.180 us | 0.25% | 236.448 us | 275.80% | SLOW |
| I128 | I64 | 2^28 | 1.236 ms | 0.14% | 4.891 ms | 0.03% | 3.655 ms | 295.74% | SLOW |
| I128 | I64 | 2^32 | 19.672 ms | 0.07% | 77.926 ms | 0.01% | 58.254 ms | 296.13% | SLOW |

# add

## [0] NVIDIA B200

| T{ct} | OffsetT{ct} | Elements{io} | Ref Time | Ref Noise | Cmp Time | Cmp Noise | Diff | %Diff | Status |
|---------|---------------|----------------|------------|-------------|------------|-------------|------------|---------|----------|
| I8 | I32 | 2^16 | 6.927 us | 7.07% | 7.159 us | 1.76% | 0.232 us | 3.35% | SLOW |
| I8 | I32 | 2^20 | 7.965 us | 10.08% | 7.170 us | 3.07% | -0.795 us | -9.98% | FAST |
| I8 | I32 | 2^24 | 16.551 us | 1.67% | 16.955 us | 4.72% | 0.405 us | 2.45% | SLOW |
| I8 | I32 | 2^28 | 144.675 us | 0.43% | 144.367 us | 0.09% | -0.308 us | -0.21% | FAST |
| I8 | I64 | 2^16 | 6.803 us | 7.16% | 7.166 us | 1.35% | 0.363 us | 5.34% | SLOW |
| I8 | I64 | 2^20 | 7.997 us | 10.36% | 7.165 us | 2.26% | -0.832 us | -10.40% | FAST |
| I8 | I64 | 2^24 | 16.554 us | 1.69% | 16.655 us | 5.75% | 0.101 us | 0.61% | SAME |
| I8 | I64 | 2^28 | 146.210 us | 0.40% | 144.864 us | 0.62% | -1.346 us | -0.92% | FAST |
| I8 | I64 | 2^32 | 2.200 ms | 0.04% | 2.152 ms | 0.04% | -47.860 us | -2.18% | FAST |
| I16 | I32 | 2^16 | 6.797 us | 7.47% | 7.153 us | 1.51% | 0.356 us | 5.24% | SLOW |
| I16 | I32 | 2^20 | 8.331 us | 2.25% | 8.294 us | 11.90% | -0.038 us | -0.45% | SAME |
| I16 | I32 | 2^24 | 23.236 us | 2.22% | 23.258 us | 3.07% | 0.022 us | 0.09% | SAME |
| I16 | I32 | 2^28 | 238.235 us | 0.21% | 236.294 us | 0.37% | -1.941 us | -0.81% | FAST |
| I16 | I64 | 2^16 | 6.850 us | 7.66% | 7.161 us | 1.09% | 0.311 us | 4.54% | SLOW |
| I16 | I64 | 2^20 | 8.334 us | 2.37% | 7.922 us | 11.21% | -0.412 us | -4.94% | FAST |
| I16 | I64 | 2^24 | 23.317 us | 2.51% | 23.090 us | 3.71% | -0.226 us | -0.97% | SAME |
| I16 | I64 | 2^28 | 239.593 us | 0.35% | 236.099 us | 0.39% | -3.493 us | -1.46% | FAST |
| I16 | I64 | 2^32 | 3.671 ms | 0.02% | 3.613 ms | 0.11% | -57.870 us | -1.58% | FAST |
| F32 | I32 | 2^16 | 6.395 us | 7.02% | 7.046 us | 4.42% | 0.651 us | 10.18% | SLOW |
| F32 | I32 | 2^20 | 9.258 us | 6.76% | 9.183 us | 1.02% | -0.075 us | -0.81% | SAME |
| F32 | I32 | 2^24 | 37.614 us | 1.35% | 37.826 us | 1.03% | 0.212 us | 0.56% | SAME |
| F32 | I32 | 2^28 | 454.822 us | 0.24% | 465.642 us | 0.25% | 10.820 us | 2.38% | SLOW |
| F32 | I64 | 2^16 | 6.443 us | 8.13% | 7.107 us | 3.60% | 0.665 us | 10.32% | SLOW |
| F32 | I64 | 2^20 | 9.237 us | 6.51% | 9.180 us | 1.02% | -0.057 us | -0.62% | SAME |
| F32 | I64 | 2^24 | 37.619 us | 1.44% | 37.887 us | 0.40% | 0.268 us | 0.71% | SLOW |
| F32 | I64 | 2^28 | 454.647 us | 0.21% | 465.785 us | 0.28% | 11.138 us | 2.45% | SLOW |
| F32 | I64 | 2^32 | 7.198 ms | 0.07% | 7.290 ms | 0.10% | 92.470 us | 1.28% | SLOW |
| F64 | I32 | 2^16 | 7.155 us | 1.19% | 8.776 us | 9.42% | 1.621 us | 22.66% | SLOW |
| F64 | I32 | 2^20 | 11.279 us | 2.13% | 11.283 us | 2.48% | 0.004 us | 0.03% | SAME |
| F64 | I32 | 2^24 | 66.550 us | 0.22% | 68.316 us | 1.05% | 1.767 us | 2.65% | SLOW |
| F64 | I32 | 2^28 | 908.078 us | 0.21% | 936.229 us | 0.14% | 28.151 us | 3.10% | SLOW |
| F64 | I64 | 2^16 | 7.167 us | 1.88% | 7.145 us | 1.36% | -0.022 us | -0.31% | SAME |
| F64 | I64 | 2^20 | 11.255 us | 1.80% | 11.249 us | 0.75% | -0.005 us | -0.05% | SAME |
| F64 | I64 | 2^24 | 66.553 us | 0.17% | 66.559 us | 0.22% | 0.007 us | 0.01% | SAME |
| F64 | I64 | 2^28 | 907.203 us | 0.21% | 921.921 us | 0.17% | 14.718 us | 1.62% | SLOW |
| F64 | I64 | 2^32 | 14.419 ms | 0.04% | 14.559 ms | 0.05% | 140.293 us | 0.97% | SLOW |
| I128 | I32 | 2^16 | 7.586 us | 10.63% | 14.965 us | 2.86% | 7.380 us | 97.29% | SLOW |
| I128 | I32 | 2^20 | 15.031 us | 3.38% | 41.546 us | 1.13% | 26.515 us | 176.40% | SLOW |
| I128 | I32 | 2^24 | 120.996 us | 0.24% | 438.779 us | 0.25% | 317.782 us | 262.64% | SLOW |
| I128 | I32 | 2^28 | 1.811 ms | 0.12% | 6.532 ms | 0.06% | 4.721 ms | 260.64% | SLOW |
| I128 | I64 | 2^16 | 7.350 us | 7.54% | 14.971 us | 2.78% | 7.621 us | 103.70% | SLOW |
| I128 | I64 | 2^20 | 15.002 us | 3.26% | 41.517 us | 1.29% | 26.515 us | 176.74% | SLOW |
| I128 | I64 | 2^24 | 121.028 us | 0.30% | 440.308 us | 0.24% | 319.280 us | 263.81% | SLOW |
| I128 | I64 | 2^28 | 1.810 ms | 0.13% | 6.550 ms | 0.06% | 4.740 ms | 261.83% | SLOW |

# triad

## [0] NVIDIA B200

| T{ct} | OffsetT{ct} | Elements{io} | Ref Time | Ref Noise | Cmp Time | Cmp Noise | Diff | %Diff | Status |
|---------|---------------|----------------|------------|-------------|------------|-------------|-------------|---------|----------|
| I8 | I32 | 2^16 | 7.026 us | 7.66% | 6.988 us | 4.92% | -0.038 us | -0.54% | SAME |
| I8 | I32 | 2^20 | 7.597 us | 9.32% | 7.462 us | 7.68% | -0.135 us | -1.78% | SAME |
| I8 | I32 | 2^24 | 17.504 us | 5.84% | 16.537 us | 1.37% | -0.967 us | -5.52% | FAST |
| I8 | I32 | 2^28 | 153.084 us | 0.50% | 144.901 us | 0.53% | -8.183 us | -5.35% | FAST |
| I8 | I64 | 2^16 | 6.835 us | 7.02% | 6.760 us | 6.55% | -0.074 us | -1.09% | SAME |
| I8 | I64 | 2^20 | 7.746 us | 9.75% | 7.456 us | 7.71% | -0.290 us | -3.75% | SAME |
| I8 | I64 | 2^24 | 17.183 us | 5.43% | 16.533 us | 1.30% | -0.650 us | -3.78% | FAST |
| I8 | I64 | 2^28 | 156.046 us | 0.41% | 146.009 us | 0.30% | -10.036 us | -6.43% | FAST |
| I8 | I64 | 2^32 | 2.342 ms | 0.04% | 2.150 ms | 0.04% | -192.745 us | -8.23% | FAST |
| I16 | I32 | 2^16 | 6.810 us | 7.15% | 6.751 us | 6.44% | -0.059 us | -0.87% | SAME |
| I16 | I32 | 2^20 | 8.347 us | 2.23% | 8.306 us | 2.43% | -0.040 us | -0.48% | SAME |
| I16 | I32 | 2^24 | 23.955 us | 2.88% | 23.190 us | 2.04% | -0.764 us | -3.19% | FAST |
| I16 | I32 | 2^28 | 240.711 us | 0.27% | 234.633 us | 0.43% | -6.077 us | -2.52% | FAST |
| I16 | I64 | 2^16 | 6.788 us | 7.09% | 6.811 us | 6.85% | 0.023 us | 0.34% | SAME |
| I16 | I64 | 2^20 | 8.344 us | 2.36% | 8.307 us | 2.55% | -0.037 us | -0.44% | SAME |
| I16 | I64 | 2^24 | 23.855 us | 2.70% | 23.166 us | 1.94% | -0.690 us | -2.89% | FAST |
| I16 | I64 | 2^28 | 242.304 us | 0.18% | 234.699 us | 0.40% | -7.605 us | -3.14% | FAST |
| I16 | I64 | 2^32 | 3.714 ms | 0.02% | 3.610 ms | 0.12% | -104.363 us | -2.81% | FAST |
| F32 | I32 | 2^16 | 6.417 us | 7.68% | 6.356 us | 5.88% | -0.060 us | -0.94% | SAME |
| F32 | I32 | 2^20 | 9.405 us | 6.67% | 9.077 us | 6.37% | -0.328 us | -3.49% | SAME |
| F32 | I32 | 2^24 | 37.605 us | 1.46% | 37.545 us | 1.31% | -0.060 us | -0.16% | SAME |
| F32 | I32 | 2^28 | 454.030 us | 0.22% | 465.099 us | 0.26% | 11.068 us | 2.44% | SLOW |
| F32 | I64 | 2^16 | 6.405 us | 7.31% | 6.312 us | 4.28% | -0.092 us | -1.44% | SAME |
| F32 | I64 | 2^20 | 9.430 us | 5.86% | 9.160 us | 6.58% | -0.270 us | -2.86% | SAME |
| F32 | I64 | 2^24 | 37.647 us | 1.50% | 37.528 us | 1.57% | -0.120 us | -0.32% | SAME |
| F32 | I64 | 2^28 | 453.900 us | 0.17% | 465.112 us | 0.26% | 11.212 us | 2.47% | SLOW |
| F32 | I64 | 2^32 | 7.205 ms | 0.06% | 7.300 ms | 0.07% | 94.814 us | 1.32% | SLOW |
| F64 | I32 | 2^16 | 7.048 us | 8.08% | 7.623 us | 9.86% | 0.576 us | 8.17% | SLOW |
| F64 | I32 | 2^20 | 11.274 us | 5.28% | 11.411 us | 5.32% | 0.137 us | 1.22% | SAME |
| F64 | I32 | 2^24 | 67.674 us | 1.44% | 68.738 us | 1.15% | 1.063 us | 1.57% | SLOW |
| F64 | I32 | 2^28 | 906.968 us | 0.29% | 937.840 us | 0.19% | 30.872 us | 3.40% | SLOW |
| F64 | I64 | 2^16 | 7.049 us | 8.37% | 7.086 us | 8.69% | 0.037 us | 0.52% | SAME |
| F64 | I64 | 2^20 | 11.468 us | 5.29% | 10.911 us | 4.97% | -0.557 us | -4.85% | SAME |
| F64 | I64 | 2^24 | 67.706 us | 1.38% | 67.511 us | 1.40% | -0.195 us | -0.29% | SAME |
| F64 | I64 | 2^28 | 905.528 us | 0.31% | 920.566 us | 0.17% | 15.037 us | 1.66% | SLOW |
| F64 | I64 | 2^32 | 14.414 ms | 0.04% | 14.566 ms | 0.10% | 151.530 us | 1.05% | SLOW |
| I128 | I32 | 2^16 | 7.458 us | 11.11% | 15.039 us | 2.66% | 7.581 us | 101.65% | SLOW |
| I128 | I32 | 2^20 | 15.035 us | 3.42% | 39.524 us | 1.14% | 24.488 us | 162.87% | SLOW |
| I128 | I32 | 2^24 | 121.110 us | 0.42% | 425.799 us | 0.18% | 304.688 us | 251.58% | SLOW |
| I128 | I32 | 2^28 | 1.809 ms | 0.17% | 6.418 ms | 0.05% | 4.609 ms | 254.81% | SLOW |
| I128 | I64 | 2^16 | 7.201 us | 8.57% | 14.976 us | 2.86% | 7.775 us | 107.97% | SLOW |
| I128 | I64 | 2^20 | 15.101 us | 3.66% | 39.616 us | 1.14% | 24.515 us | 162.33% | SLOW |
| I128 | I64 | 2^24 | 120.993 us | 0.22% | 425.899 us | 0.17% | 304.906 us | 252.00% | SLOW |
| I128 | I64 | 2^28 | 1.809 ms | 0.17% | 6.429 ms | 0.05% | 4.620 ms | 255.48% | SLOW |

# nstream

## [0] NVIDIA B200

| T{ct} | OffsetT{ct} | Elements{io} | Ref Time | Ref Noise | Cmp Time | Cmp Noise | Diff | %Diff | Status |
|---------|---------------|----------------|------------|-------------|------------|-------------|-------------|---------|----------|
| I8 | I32 | 2^16 | 6.996 us | 7.86% | 7.010 us | 4.85% | 0.014 us | 0.21% | SAME |
| I8 | I32 | 2^20 | 8.707 us | 6.08% | 7.457 us | 8.21% | -1.250 us | -14.36% | FAST |
| I8 | I32 | 2^24 | 20.619 us | 0.89% | 18.568 us | 1.12% | -2.051 us | -9.95% | FAST |
| I8 | I32 | 2^28 | 213.643 us | 0.21% | 172.091 us | 0.48% | -41.552 us | -19.45% | FAST |
| I8 | I64 | 2^16 | 6.841 us | 7.59% | 6.747 us | 6.32% | -0.094 us | -1.37% | SAME |
| I8 | I64 | 2^20 | 8.560 us | 7.71% | 7.497 us | 8.50% | -1.064 us | -12.43% | FAST |
| I8 | I64 | 2^24 | 20.676 us | 1.37% | 18.588 us | 0.85% | -2.088 us | -10.10% | FAST |
| I8 | I64 | 2^28 | 216.716 us | 0.38% | 173.268 us | 0.35% | -43.448 us | -20.05% | FAST |
| I8 | I64 | 2^32 | 3.321 ms | 0.03% | 2.608 ms | 0.03% | -713.290 us | -21.48% | FAST |
| I16 | I32 | 2^16 | 6.869 us | 7.14% | 6.763 us | 7.25% | -0.106 us | -1.54% | SAME |
| I16 | I32 | 2^20 | 8.366 us | 3.70% | 8.328 us | 1.82% | -0.038 us | -0.45% | SAME |
| I16 | I32 | 2^24 | 29.062 us | 2.40% | 27.575 us | 2.27% | -1.486 us | -5.11% | FAST |
| I16 | I32 | 2^28 | 315.918 us | 0.26% | 305.415 us | 0.24% | -10.503 us | -3.32% | FAST |
| I16 | I64 | 2^16 | 6.927 us | 7.70% | 6.798 us | 6.32% | -0.128 us | -1.85% | SAME |
| I16 | I64 | 2^20 | 8.324 us | 2.18% | 8.331 us | 2.12% | 0.007 us | 0.08% | SAME |
| I16 | I64 | 2^24 | 29.214 us | 1.73% | 27.927 us | 2.23% | -1.286 us | -4.40% | FAST |
| I16 | I64 | 2^28 | 319.986 us | 0.25% | 305.818 us | 0.15% | -14.168 us | -4.43% | FAST |
| I16 | I64 | 2^32 | 4.994 ms | 0.05% | 4.697 ms | 0.01% | -297.161 us | -5.95% | FAST |
| F32 | I32 | 2^16 | 6.587 us | 10.55% | 6.395 us | 7.08% | -0.192 us | -2.91% | SAME |
| F32 | I32 | 2^20 | 10.756 us | 5.02% | 9.542 us | 6.84% | -1.214 us | -11.29% | FAST |
| F32 | I32 | 2^24 | 47.822 us | 1.16% | 46.640 us | 1.72% | -1.182 us | -2.47% | FAST |
| F32 | I32 | 2^28 | 600.345 us | 0.12% | 599.763 us | 0.15% | -0.582 us | -0.10% | SAME |
| F32 | I64 | 2^16 | 6.623 us | 11.17% | 6.473 us | 9.11% | -0.150 us | -2.26% | SAME |
| F32 | I64 | 2^20 | 10.392 us | 7.54% | 9.849 us | 8.55% | -0.542 us | -5.22% | SAME |
| F32 | I64 | 2^24 | 47.913 us | 1.19% | 46.703 us | 1.77% | -1.210 us | -2.53% | FAST |
| F32 | I64 | 2^28 | 600.855 us | 0.09% | 599.904 us | 0.15% | -0.951 us | -0.16% | FAST |
| F32 | I64 | 2^32 | 9.430 ms | 0.01% | 9.411 ms | 0.02% | -19.400 us | -0.21% | FAST |
| F64 | I32 | 2^16 | 7.368 us | 8.29% | 7.673 us | 9.94% | 0.306 us | 4.15% | SAME |
| F64 | I32 | 2^20 | 12.861 us | 3.60% | 12.434 us | 6.36% | -0.427 us | -3.32% | SAME |
| F64 | I32 | 2^24 | 86.016 us | 1.04% | 85.573 us | 1.08% | -0.443 us | -0.51% | SAME |
| F64 | I32 | 2^28 | 1.185 ms | 0.08% | 1.187 ms | 0.08% | 1.558 us | 0.13% | SLOW |
| F64 | I64 | 2^16 | 7.382 us | 8.03% | 7.554 us | 8.87% | 0.172 us | 2.33% | SAME |
| F64 | I64 | 2^20 | 12.867 us | 3.59% | 12.381 us | 6.74% | -0.486 us | -3.77% | FAST |
| F64 | I64 | 2^24 | 86.050 us | 1.01% | 85.467 us | 1.03% | -0.583 us | -0.68% | SAME |
| F64 | I64 | 2^28 | 1.185 ms | 0.08% | 1.187 ms | 0.09% | 1.563 us | 0.13% | SLOW |
| F64 | I64 | 2^32 | 18.765 ms | 0.01% | 18.780 ms | 0.02% | 14.749 us | 0.08% | SLOW |
| I128 | I32 | 2^16 | 7.784 us | 10.67% | 17.080 us | 2.36% | 9.296 us | 119.42% | SLOW |
| I128 | I32 | 2^20 | 17.952 us | 4.32% | 47.951 us | 1.26% | 29.999 us | 167.11% | SLOW |
| I128 | I32 | 2^24 | 157.839 us | 0.09% | 536.467 us | 0.14% | 378.628 us | 239.88% | SLOW |
| I128 | I32 | 2^28 | 2.357 ms | 0.05% | 8.197 ms | 0.03% | 5.839 ms | 247.70% | SLOW |
| I128 | I64 | 2^16 | 7.464 us | 7.94% | 16.999 us | 2.58% | 9.535 us | 127.75% | SLOW |
| I128 | I64 | 2^20 | 18.015 us | 4.53% | 48.121 us | 1.35% | 30.106 us | 167.12% | SLOW |
| I128 | I64 | 2^24 | 157.859 us | 0.12% | 537.594 us | 0.19% | 379.735 us | 240.55% | SLOW |
| I128 | I64 | 2^28 | 2.357 ms | 0.05% | 8.214 ms | 0.03% | 5.856 ms | 248.43% | SLOW |

```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.