Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactors thrust::unique_by_key to use cub::DeviceSelect::UniqueByKey #1245

Merged
merged 10 commits into from
Jan 5, 2024

Conversation

elstehle
Copy link
Collaborator

@elstehle elstehle commented Jan 3, 2024

Description

Closes #1210.

  • Refactors thrust::unique_by_key to use cub::DeviceSelect::UniqueByKey
  • Adds support for 64-bit offset types
  • Adds an overload to CUB's cub::DeviceSelect::UniqueByKey that takes an equality_op for key comparison

Checklist

  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@elstehle
Copy link
Collaborator Author

elstehle commented Jan 3, 2024

Benchmark results comparing signed 32-bit offset type (main implementation) versus unsigned 32-bit offset type (on this PR):

cub.bench.select.unique_by_key.base ## [0] Tesla V100-SXM2-32GB
KeyT{ct} ValueT{ct} OffsetT{ct} Elements{io} MaxSegSize Ref Time Ref Noise Cmp Time Cmp Noise Diff %Diff Status
I8 I8 I32 2^16 2^1 10.057 us 5.40% 9.860 us 6.25% -0.197 us -1.96% PASS
I8 I8 I32 2^20 2^1 18.044 us 3.00% 17.355 us 2.90% -0.689 us -3.82% FAIL
I8 I8 I32 2^24 2^1 157.127 us 1.02% 151.968 us 1.14% -5.159 us -3.28% FAIL
I8 I8 I32 2^28 2^1 2.365 ms 0.50% 2.290 ms 0.50% -74.898 us -3.17% FAIL
I8 I8 I32 2^16 2^4 9.614 us 5.21% 9.503 us 4.92% -0.111 us -1.16% PASS
I8 I8 I32 2^20 2^4 17.342 us 2.79% 17.054 us 3.21% -0.288 us -1.66% PASS
I8 I8 I32 2^24 2^4 126.826 us 0.70% 125.512 us 0.74% -1.314 us -1.04% FAIL
I8 I8 I32 2^28 2^4 1.864 ms 0.58% 1.837 ms 0.58% -26.748 us -1.43% FAIL
I8 I8 I32 2^16 2^8 9.553 us 5.06% 9.429 us 4.64% -0.124 us -1.30% PASS
I8 I8 I32 2^20 2^8 17.251 us 2.94% 16.951 us 3.20% -0.300 us -1.74% PASS
I8 I8 I32 2^24 2^8 122.352 us 0.68% 120.700 us 0.64% -1.652 us -1.35% FAIL
I8 I8 I32 2^28 2^8 1.772 ms 0.56% 1.753 ms 0.54% -19.442 us -1.10% FAIL
I8 I16 I32 2^16 2^1 10.281 us 4.20% 10.260 us 4.74% -0.020 us -0.20% PASS
I8 I16 I32 2^20 2^1 19.535 us 2.84% 19.157 us 3.06% -0.379 us -1.94% PASS
I8 I16 I32 2^24 2^1 171.162 us 1.19% 168.441 us 1.21% -2.720 us -1.59% FAIL
I8 I16 I32 2^28 2^1 2.620 ms 0.44% 2.554 ms 0.39% -66.229 us -2.53% FAIL
I8 I16 I32 2^16 2^4 9.971 us 5.33% 10.013 us 5.65% 0.042 us 0.42% PASS
I8 I16 I32 2^20 2^4 18.364 us 2.81% 18.328 us 2.86% -0.036 us -0.20% PASS
I8 I16 I32 2^24 2^4 135.349 us 0.91% 134.152 us 0.96% -1.197 us -0.88% PASS
I8 I16 I32 2^28 2^4 1.992 ms 0.67% 1.967 ms 0.68% -25.143 us -1.26% FAIL
I8 I16 I32 2^16 2^8 9.952 us 5.12% 9.976 us 5.38% 0.023 us 0.24% PASS
I8 I16 I32 2^20 2^8 18.323 us 3.04% 18.227 us 3.05% -0.096 us -0.52% PASS
I8 I16 I32 2^24 2^8 128.096 us 0.82% 126.663 us 0.84% -1.433 us -1.12% FAIL
I8 I16 I32 2^28 2^8 1.848 ms 0.66% 1.825 ms 0.67% -23.208 us -1.26% FAIL
I8 I32 I32 2^16 2^1 10.067 us 4.14% 9.969 us 4.73% -0.098 us -0.97% PASS
I8 I32 I32 2^20 2^1 23.760 us 3.85% 23.216 us 4.04% -0.545 us -2.29% PASS
I8 I32 I32 2^24 2^1 214.643 us 1.34% 210.627 us 1.29% -4.015 us -1.87% FAIL
I8 I32 I32 2^28 2^1 3.280 ms 1.17% 3.209 ms 1.13% -71.004 us -2.17% FAIL
I8 I32 I32 2^16 2^4 9.752 us 5.32% 9.694 us 5.35% -0.058 us -0.60% PASS
I8 I32 I32 2^20 2^4 22.090 us 3.20% 21.942 us 3.11% -0.148 us -0.67% PASS
I8 I32 I32 2^24 2^4 165.261 us 1.09% 163.803 us 1.15% -1.458 us -0.88% PASS
I8 I32 I32 2^28 2^4 2.435 ms 0.85% 2.417 ms 0.87% -18.137 us -0.74% PASS
I8 I32 I32 2^16 2^8 9.738 us 5.32% 9.668 us 5.34% -0.070 us -0.72% PASS
I8 I32 I32 2^20 2^8 21.834 us 3.04% 21.817 us 2.99% -0.017 us -0.08% PASS
I8 I32 I32 2^24 2^8 145.420 us 1.20% 143.695 us 1.22% -1.725 us -1.19% PASS
I8 I32 I32 2^28 2^8 2.074 ms 1.19% 2.056 ms 1.22% -18.449 us -0.89% PASS
I8 I64 I32 2^16 2^1 11.069 us 4.11% 10.928 us 4.58% -0.141 us -1.28% PASS
I8 I64 I32 2^20 2^1 31.928 us 3.38% 31.965 us 3.30% 0.037 us 0.12% PASS
I8 I64 I32 2^24 2^1 349.207 us 1.01% 344.007 us 0.96% -5.200 us -1.49% FAIL
I8 I64 I32 2^28 2^1 5.424 ms 1.04% 5.343 ms 0.99% -80.911 us -1.49% FAIL
I8 I64 I32 2^16 2^4 10.538 us 4.50% 10.508 us 4.45% -0.031 us -0.29% PASS
I8 I64 I32 2^20 2^4 29.695 us 3.05% 30.419 us 3.25% 0.724 us 2.44% PASS
I8 I64 I32 2^24 2^4 256.940 us 0.93% 256.404 us 0.97% -0.536 us -0.21% PASS
I8 I64 I32 2^28 2^4 3.895 ms 0.69% 3.883 ms 0.70% -12.401 us -0.32% PASS
I8 I64 I32 2^16 2^8 10.464 us 4.17% 10.626 us 4.79% 0.162 us 1.55% PASS
I8 I64 I32 2^20 2^8 29.793 us 3.04% 30.457 us 3.08% 0.665 us 2.23% PASS
I8 I64 I32 2^24 2^8 217.313 us 1.08% 215.825 us 1.11% -1.488 us -0.68% PASS
I8 I64 I32 2^28 2^8 3.187 ms 1.17% 3.171 ms 1.18% -15.855 us -0.50% PASS
I8 I128 I32 2^16 2^1 11.882 us 4.36% 11.849 us 4.54% -0.033 us -0.28% PASS
I8 I128 I32 2^20 2^1 49.580 us 2.03% 48.339 us 2.06% -1.241 us -2.50% FAIL
I8 I128 I32 2^24 2^1 623.619 us 0.72% 616.787 us 0.67% -6.832 us -1.10% FAIL
I8 I128 I32 2^28 2^1 9.813 ms 0.92% 9.707 ms 0.91% -105.700 us -1.08% FAIL
I8 I128 I32 2^16 2^4 11.494 us 3.91% 11.552 us 4.24% 0.058 us 0.50% PASS
I8 I128 I32 2^20 2^4 42.239 us 1.97% 41.954 us 2.06% -0.286 us -0.68% PASS
I8 I128 I32 2^24 2^4 454.921 us 0.68% 453.654 us 0.65% -1.268 us -0.28% PASS
I8 I128 I32 2^28 2^4 7.062 ms 0.59% 7.042 ms 0.59% -19.539 us -0.28% PASS
I8 I128 I32 2^16 2^8 11.445 us 3.80% 11.470 us 4.12% 0.025 us 0.22% PASS
I8 I128 I32 2^20 2^8 40.887 us 1.88% 40.701 us 1.97% -0.186 us -0.45% PASS
I8 I128 I32 2^24 2^8 375.544 us 0.83% 374.180 us 0.84% -1.363 us -0.36% PASS
I8 I128 I32 2^28 2^8 5.727 ms 0.98% 5.717 ms 0.97% -9.446 us -0.16% PASS
I8 F32 I32 2^16 2^1 10.208 us 4.11% 9.927 us 5.20% -0.281 us -2.75% PASS
I8 F32 I32 2^20 2^1 23.867 us 3.83% 23.199 us 4.04% -0.668 us -2.80% PASS
I8 F32 I32 2^24 2^1 214.554 us 1.34% 210.493 us 1.32% -4.062 us -1.89% FAIL
I8 F32 I32 2^28 2^1 3.279 ms 1.17% 3.209 ms 1.13% -70.533 us -2.15% FAIL
I8 F32 I32 2^16 2^4 9.728 us 5.33% 9.636 us 5.29% -0.092 us -0.95% PASS
I8 F32 I32 2^20 2^4 22.106 us 3.14% 21.946 us 3.13% -0.161 us -0.73% PASS
I8 F32 I32 2^24 2^4 165.248 us 1.07% 163.692 us 1.08% -1.556 us -0.94% PASS
I8 F32 I32 2^28 2^4 2.436 ms 0.85% 2.417 ms 0.85% -18.377 us -0.75% PASS
I8 F32 I32 2^16 2^8 9.696 us 5.33% 9.626 us 5.27% -0.070 us -0.72% PASS
I8 F32 I32 2^20 2^8 21.858 us 2.96% 21.767 us 2.95% -0.090 us -0.41% PASS
I8 F32 I32 2^24 2^8 145.463 us 1.19% 143.643 us 1.19% -1.820 us -1.25% FAIL
I8 F32 I32 2^28 2^8 2.074 ms 1.20% 2.056 ms 1.22% -18.496 us -0.89% PASS
I8 F64 I32 2^16 2^1 10.970 us 4.48% 11.035 us 8.25% 0.065 us 0.59% PASS
I8 F64 I32 2^20 2^1 31.910 us 3.32% 31.942 us 4.31% 0.032 us 0.10% PASS
I8 F64 I32 2^24 2^1 348.750 us 1.00% 344.179 us 1.08% -4.571 us -1.31% FAIL
I8 F64 I32 2^28 2^1 5.424 ms 1.04% 5.343 ms 0.99% -80.890 us -1.49% FAIL
I8 F64 I32 2^16 2^4 10.599 us 4.69% 10.749 us 9.52% 0.150 us 1.41% PASS
I8 F64 I32 2^20 2^4 29.763 us 3.04% 30.407 us 4.42% 0.644 us 2.16% PASS
I8 F64 I32 2^24 2^4 257.404 us 0.91% 257.005 us 0.94% -0.399 us -0.15% PASS
I8 F64 I32 2^28 2^4 3.895 ms 0.69% 3.883 ms 0.71% -11.808 us -0.30% PASS
I8 F64 I32 2^16 2^8 10.562 us 4.57% 10.620 us 9.75% 0.059 us 0.56% PASS
I8 F64 I32 2^20 2^8 29.863 us 3.00% 30.505 us 4.32% 0.643 us 2.15% PASS
I8 F64 I32 2^24 2^8 217.527 us 1.07% 215.529 us 1.15% -1.999 us -0.92% PASS
I8 F64 I32 2^28 2^8 3.187 ms 1.17% 3.171 ms 1.17% -15.820 us -0.50% PASS
I8 C64 I32 2^16 2^1 11.079 us 4.15% 11.189 us 9.04% 0.110 us 0.99% PASS
I8 C64 I32 2^20 2^1 32.034 us 3.32% 32.015 us 4.14% -0.019 us -0.06% PASS
I8 C64 I32 2^24 2^1 348.868 us 1.00% 344.217 us 1.08% -4.651 us -1.33% FAIL
I8 C64 I32 2^28 2^1 5.426 ms 1.04% 5.344 ms 0.99% -82.169 us -1.51% FAIL
I8 C64 I32 2^16 2^4 10.564 us 4.59% 10.850 us 9.52% 0.286 us 2.71% PASS
I8 C64 I32 2^20 2^4 29.762 us 3.01% 30.347 us 4.34% 0.586 us 1.97% PASS
I8 C64 I32 2^24 2^4 257.480 us 0.92% 256.906 us 0.93% -0.574 us -0.22% PASS
I8 C64 I32 2^28 2^4 3.898 ms 0.69% 3.884 ms 0.70% -14.524 us -0.37% PASS
I8 C64 I32 2^16 2^8 10.469 us 4.25% 10.607 us 9.84% 0.138 us 1.32% PASS
I8 C64 I32 2^20 2^8 29.766 us 2.95% 30.435 us 4.11% 0.669 us 2.25% PASS
I8 C64 I32 2^24 2^8 217.340 us 1.07% 215.858 us 1.17% -1.482 us -0.68% PASS
I8 C64 I32 2^28 2^8 3.186 ms 1.16% 3.172 ms 1.18% -14.326 us -0.45% PASS
I16 I8 I32 2^16 2^1 10.286 us 4.17% 10.173 us 9.67% -0.113 us -1.10% PASS
I16 I8 I32 2^20 2^1 19.808 us 2.86% 19.481 us 5.62% -0.327 us -1.65% PASS
I16 I8 I32 2^24 2^1 173.206 us 1.12% 168.740 us 1.37% -4.466 us -2.58% FAIL
I16 I8 I32 2^28 2^1 2.642 ms 0.37% 2.575 ms 0.34% -67.945 us -2.57% FAIL
I16 I8 I32 2^16 2^4 10.040 us 4.70% 10.003 us 10.50% -0.038 us -0.38% PASS
I16 I8 I32 2^20 2^4 18.541 us 2.66% 18.436 us 5.62% -0.105 us -0.57% PASS
I16 I8 I32 2^24 2^4 137.730 us 0.85% 135.809 us 1.15% -1.921 us -1.39% FAIL
I16 I8 I32 2^28 2^4 2.018 ms 0.65% 1.986 ms 0.66% -32.069 us -1.59% FAIL
I16 I8 I32 2^16 2^8 9.997 us 4.86% 9.975 us 10.64% -0.022 us -0.22% PASS
I16 I8 I32 2^20 2^8 18.530 us 2.84% 18.335 us 5.84% -0.195 us -1.05% PASS
I16 I8 I32 2^24 2^8 130.041 us 0.82% 128.010 us 1.09% -2.031 us -1.56% FAIL
I16 I8 I32 2^28 2^8 1.876 ms 0.63% 1.844 ms 0.65% -31.859 us -1.70% FAIL
I16 I16 I32 2^16 2^1 10.215 us 4.08% 9.949 us 10.21% -0.266 us -2.60% PASS
I16 I16 I32 2^20 2^1 22.010 us 3.41% 21.538 us 5.42% -0.472 us -2.15% PASS
I16 I16 I32 2^24 2^1 195.625 us 1.63% 193.263 us 1.73% -2.362 us -1.21% PASS
I16 I16 I32 2^28 2^1 2.870 ms 0.96% 2.825 ms 0.95% -44.969 us -1.57% FAIL
I16 I16 I32 2^16 2^4 9.854 us 5.12% 9.715 us 10.57% -0.139 us -1.41% PASS
I16 I16 I32 2^20 2^4 20.478 us 2.85% 20.314 us 5.26% -0.164 us -0.80% PASS
I16 I16 I32 2^24 2^4 150.622 us 1.06% 148.255 us 1.27% -2.367 us -1.57% FAIL
I16 I16 I32 2^28 2^4 2.171 ms 0.82% 2.144 ms 0.78% -26.684 us -1.23% FAIL
I16 I16 I32 2^16 2^8 9.792 us 5.26% 9.577 us 10.66% -0.214 us -2.19% PASS
I16 I16 I32 2^20 2^8 20.420 us 2.84% 20.240 us 5.27% -0.180 us -0.88% PASS
I16 I16 I32 2^24 2^8 139.932 us 0.93% 136.960 us 1.15% -2.973 us -2.12% FAIL
I16 I16 I32 2^28 2^8 1.942 ms 0.81% 1.903 ms 0.84% -38.842 us -2.00% FAIL
I16 I32 I32 2^16 2^1 10.540 us 4.54% 10.231 us 10.13% -0.309 us -2.93% PASS
I16 I32 I32 2^20 2^1 25.746 us 3.18% 25.192 us 4.64% -0.555 us -2.15% PASS
I16 I32 I32 2^24 2^1 250.452 us 1.25% 247.196 us 1.34% -3.256 us -1.30% FAIL
I16 I32 I32 2^28 2^1 3.853 ms 1.17% 3.783 ms 1.16% -69.755 us -1.81% FAIL
I16 I32 I32 2^16 2^4 9.971 us 4.79% 9.996 us 10.39% 0.025 us 0.25% PASS
I16 I32 I32 2^20 2^4 23.789 us 2.70% 23.825 us 4.58% 0.036 us 0.15% PASS
I16 I32 I32 2^24 2^4 186.962 us 1.08% 185.169 us 1.10% -1.793 us -0.96% PASS
I16 I32 I32 2^28 2^4 2.773 ms 0.84% 2.747 ms 0.84% -25.942 us -0.94% FAIL
I16 I32 I32 2^16 2^8 9.955 us 4.85% 9.991 us 10.48% 0.036 us 0.36% PASS
I16 I32 I32 2^20 2^8 23.912 us 2.69% 23.844 us 4.42% -0.067 us -0.28% PASS
I16 I32 I32 2^24 2^8 161.087 us 1.15% 159.484 us 1.22% -1.603 us -0.99% PASS
I16 I32 I32 2^28 2^8 2.306 ms 1.28% 2.285 ms 1.29% -21.115 us -0.92% PASS
I16 I64 I32 2^16 2^1 11.271 us 4.32% 11.049 us 9.32% -0.222 us -1.97% PASS
I16 I64 I32 2^20 2^1 34.989 us 3.39% 33.876 us 4.16% -1.113 us -3.18% PASS
I16 I64 I32 2^24 2^1 387.706 us 0.97% 381.364 us 1.00% -6.342 us -1.64% FAIL
I16 I64 I32 2^28 2^1 6.031 ms 1.05% 5.944 ms 1.02% -86.846 us -1.44% FAIL
I16 I64 I32 2^16 2^4 10.807 us 4.84% 10.725 us 9.63% -0.082 us -0.76% PASS
I16 I64 I32 2^20 2^4 32.068 us 3.04% 31.376 us 4.15% -0.693 us -2.16% PASS
I16 I64 I32 2^24 2^4 282.455 us 0.86% 281.063 us 0.88% -1.392 us -0.49% PASS
I16 I64 I32 2^28 2^4 4.290 ms 0.65% 4.277 ms 0.66% -12.592 us -0.29% PASS
I16 I64 I32 2^16 2^8 10.738 us 4.90% 10.609 us 9.37% -0.129 us -1.20% PASS
I16 I64 I32 2^20 2^8 32.463 us 2.81% 31.770 us 3.94% -0.693 us -2.13% PASS
I16 I64 I32 2^24 2^8 236.311 us 1.06% 234.075 us 1.18% -2.236 us -0.95% PASS
I16 I64 I32 2^28 2^8 3.478 ms 1.14% 3.463 ms 1.15% -14.261 us -0.41% PASS
I16 I128 I32 2^16 2^1 12.332 us 4.07% 11.794 us 8.78% -0.538 us -4.36% FAIL
I16 I128 I32 2^20 2^1 53.019 us 2.08% 51.509 us 2.50% -1.510 us -2.85% FAIL
I16 I128 I32 2^24 2^1 661.315 us 0.71% 654.374 us 0.70% -6.941 us -1.05% FAIL
I16 I128 I32 2^28 2^1 10.410 ms 0.94% 10.314 ms 0.93% -96.288 us -0.92% PASS
I16 I128 I32 2^16 2^4 11.899 us 4.48% 11.794 us 9.34% -0.106 us -0.89% PASS
I16 I128 I32 2^20 2^4 44.298 us 2.05% 43.549 us 2.94% -0.749 us -1.69% PASS
I16 I128 I32 2^24 2^4 483.959 us 0.67% 481.727 us 0.69% -2.231 us -0.46% PASS
I16 I128 I32 2^28 2^4 7.512 ms 0.61% 7.487 ms 0.59% -24.804 us -0.33% PASS
I16 I128 I32 2^16 2^8 11.618 us 4.33% 11.487 us 8.89% -0.131 us -1.13% PASS
I16 I128 I32 2^20 2^8 42.822 us 1.95% 41.940 us 2.64% -0.881 us -2.06% FAIL
I16 I128 I32 2^24 2^8 396.814 us 0.84% 395.973 us 0.86% -0.841 us -0.21% PASS
I16 I128 I32 2^28 2^8 6.060 ms 0.98% 6.050 ms 0.98% -9.574 us -0.16% PASS
I16 F32 I32 2^16 2^1 10.354 us 3.89% 10.197 us 10.12% -0.157 us -1.52% PASS
I16 F32 I32 2^20 2^1 25.684 us 3.12% 25.385 us 4.65% -0.300 us -1.17% PASS
I16 F32 I32 2^24 2^1 250.483 us 1.25% 247.274 us 1.29% -3.210 us -1.28% FAIL
I16 F32 I32 2^28 2^1 3.853 ms 1.17% 3.784 ms 1.16% -69.406 us -1.80% FAIL
I16 F32 I32 2^16 2^4 9.977 us 4.74% 10.028 us 10.53% 0.051 us 0.51% PASS
I16 F32 I32 2^20 2^4 23.780 us 2.73% 23.899 us 4.74% 0.119 us 0.50% PASS
I16 F32 I32 2^24 2^4 187.045 us 1.03% 185.419 us 1.13% -1.626 us -0.87% PASS
I16 F32 I32 2^28 2^4 2.773 ms 0.84% 2.747 ms 0.85% -25.447 us -0.92% FAIL
I16 F32 I32 2^16 2^8 9.922 us 4.94% 9.995 us 10.39% 0.074 us 0.75% PASS
I16 F32 I32 2^20 2^8 23.908 us 2.70% 23.954 us 4.89% 0.046 us 0.19% PASS
I16 F32 I32 2^24 2^8 161.187 us 1.14% 159.628 us 1.21% -1.559 us -0.97% PASS
I16 F32 I32 2^28 2^8 2.306 ms 1.29% 2.285 ms 1.29% -21.067 us -0.91% PASS
I16 F64 I32 2^16 2^1 11.192 us 4.32% 11.255 us 9.14% 0.063 us 0.56% PASS
I16 F64 I32 2^20 2^1 35.059 us 3.38% 34.054 us 4.13% -1.005 us -2.87% PASS
I16 F64 I32 2^24 2^1 387.770 us 0.98% 381.397 us 0.98% -6.373 us -1.64% FAIL
I16 F64 I32 2^28 2^1 6.031 ms 1.05% 5.944 ms 1.02% -86.658 us -1.44% FAIL
I16 F64 I32 2^16 2^4 10.875 us 4.70% 10.786 us 9.87% -0.088 us -0.81% PASS
I16 F64 I32 2^20 2^4 32.184 us 2.85% 31.426 us 4.13% -0.759 us -2.36% PASS
I16 F64 I32 2^24 2^4 282.552 us 0.86% 281.340 us 0.92% -1.212 us -0.43% PASS
I16 F64 I32 2^28 2^4 4.290 ms 0.65% 4.277 ms 0.65% -12.922 us -0.30% PASS
I16 F64 I32 2^16 2^8 10.751 us 4.89% 10.619 us 9.43% -0.131 us -1.22% PASS
I16 F64 I32 2^20 2^8 32.423 us 2.85% 31.773 us 3.90% -0.650 us -2.01% PASS
I16 F64 I32 2^24 2^8 236.280 us 1.03% 234.241 us 1.22% -2.039 us -0.86% PASS
I16 F64 I32 2^28 2^8 3.478 ms 1.14% 3.463 ms 1.15% -14.372 us -0.41% PASS
I16 C64 I32 2^16 2^1 11.151 us 3.69% 10.937 us 9.31% -0.214 us -1.92% PASS
I16 C64 I32 2^20 2^1 34.958 us 3.38% 33.835 us 4.16% -1.123 us -3.21% PASS
I16 C64 I32 2^24 2^1 387.713 us 0.96% 381.318 us 0.97% -6.395 us -1.65% FAIL
I16 C64 I32 2^28 2^1 6.033 ms 1.05% 5.945 ms 1.02% -87.353 us -1.45% FAIL
I16 C64 I32 2^16 2^4 10.831 us 4.79% 10.695 us 9.46% -0.137 us -1.26% PASS
I16 C64 I32 2^20 2^4 31.994 us 3.04% 31.317 us 4.09% -0.677 us -2.12% PASS
I16 C64 I32 2^24 2^4 282.787 us 0.85% 281.318 us 0.93% -1.469 us -0.52% PASS
I16 C64 I32 2^28 2^4 4.293 ms 0.65% 4.278 ms 0.65% -14.965 us -0.35% PASS
I16 C64 I32 2^16 2^8 10.739 us 4.89% 10.668 us 9.66% -0.070 us -0.66% PASS
I16 C64 I32 2^20 2^8 32.463 us 2.68% 31.842 us 4.06% -0.621 us -1.91% PASS
I16 C64 I32 2^24 2^8 235.705 us 1.06% 234.256 us 1.13% -1.449 us -0.61% PASS
I16 C64 I32 2^28 2^8 3.478 ms 1.14% 3.464 ms 1.14% -14.885 us -0.43% PASS
I32 I8 I32 2^16 2^1 10.177 us 3.64% 10.005 us 10.17% -0.171 us -1.68% PASS
I32 I8 I32 2^20 2^1 24.161 us 3.70% 23.631 us 5.21% -0.529 us -2.19% PASS
I32 I8 I32 2^24 2^1 216.987 us 1.29% 212.019 us 1.34% -4.968 us -2.29% FAIL
I32 I8 I32 2^28 2^1 3.296 ms 1.12% 3.231 ms 1.09% -64.827 us -1.97% FAIL
I32 I8 I32 2^16 2^4 9.757 us 5.31% 9.747 us 10.43% -0.009 us -0.09% PASS
I32 I8 I32 2^20 2^4 22.108 us 2.79% 22.119 us 4.89% 0.011 us 0.05% PASS
I32 I8 I32 2^24 2^4 167.038 us 1.14% 165.470 us 1.30% -1.568 us -0.94% PASS
I32 I8 I32 2^28 2^4 2.460 ms 0.85% 2.441 ms 0.87% -19.137 us -0.78% PASS
I32 I8 I32 2^16 2^8 9.726 us 5.33% 9.732 us 10.73% 0.006 us 0.06% PASS
I32 I8 I32 2^20 2^8 21.986 us 2.77% 22.235 us 4.93% 0.250 us 1.14% PASS
I32 I8 I32 2^24 2^8 146.803 us 1.18% 144.812 us 1.27% -1.991 us -1.36% FAIL
I32 I8 I32 2^28 2^8 2.079 ms 1.26% 2.061 ms 1.28% -18.020 us -0.87% PASS
I32 I16 I32 2^16 2^1 10.246 us 3.70% 10.107 us 9.76% -0.139 us -1.35% PASS
I32 I16 I32 2^20 2^1 25.660 us 3.10% 25.387 us 4.78% -0.273 us -1.06% PASS
I32 I16 I32 2^24 2^1 252.667 us 1.20% 247.202 us 1.29% -5.466 us -2.16% FAIL
I32 I16 I32 2^28 2^1 3.863 ms 1.16% 3.796 ms 1.14% -67.287 us -1.74% FAIL
I32 I16 I32 2^16 2^4 9.907 us 5.04% 9.967 us 10.22% 0.060 us 0.61% PASS
I32 I16 I32 2^20 2^4 23.809 us 2.83% 23.758 us 4.77% -0.050 us -0.21% PASS
I32 I16 I32 2^24 2^4 187.832 us 1.05% 185.463 us 1.11% -2.369 us -1.26% FAIL
I32 I16 I32 2^28 2^4 2.793 ms 0.83% 2.759 ms 0.82% -34.097 us -1.22% FAIL
I32 I16 I32 2^16 2^8 9.890 us 5.09% 9.898 us 10.11% 0.008 us 0.08% PASS
I32 I16 I32 2^20 2^8 23.938 us 2.80% 23.796 us 4.67% -0.143 us -0.60% PASS
I32 I16 I32 2^24 2^8 161.324 us 1.21% 159.101 us 1.20% -2.222 us -1.38% FAIL
I32 I16 I32 2^28 2^8 2.309 ms 1.35% 2.283 ms 1.32% -26.085 us -1.13% PASS
I32 I32 I32 2^16 2^1 10.351 us 3.74% 10.212 us 9.40% -0.139 us -1.34% PASS
I32 I32 I32 2^20 2^1 29.999 us 2.83% 28.817 us 3.73% -1.182 us -3.94% FAIL
I32 I32 I32 2^24 2^1 322.683 us 1.13% 315.345 us 1.18% -7.338 us -2.27% FAIL
I32 I32 I32 2^28 2^1 5.049 ms 1.21% 4.922 ms 1.15% -126.941 us -2.51% FAIL
I32 I32 I32 2^16 2^4 10.092 us 4.41% 10.089 us 10.10% -0.003 us -0.03% PASS
I32 I32 I32 2^20 2^4 27.117 us 2.77% 26.536 us 3.90% -0.581 us -2.14% PASS
I32 I32 I32 2^24 2^4 238.684 us 0.83% 228.955 us 0.97% -9.729 us -4.08% FAIL
I32 I32 I32 2^28 2^4 3.663 ms 0.55% 3.659 ms 0.56% -4.560 us -0.12% PASS
I32 I32 I32 2^16 2^8 10.052 us 4.64% 10.057 us 10.01% 0.006 us 0.06% PASS
I32 I32 I32 2^20 2^8 27.094 us 2.37% 26.797 us 3.85% -0.297 us -1.10% PASS
I32 I32 I32 2^24 2^8 194.752 us 1.07% 191.097 us 1.25% -3.656 us -1.88% FAIL
I32 I32 I32 2^28 2^8 2.840 ms 1.14% 2.829 ms 1.15% -11.083 us -0.39% PASS
I32 I64 I32 2^16 2^1 11.282 us 3.28% 11.282 us 8.89% -0.000 us -0.00% PASS
I32 I64 I32 2^20 2^1 39.345 us 2.80% 38.427 us 3.41% -0.918 us -2.33% PASS
I32 I64 I32 2^24 2^1 460.116 us 0.91% 451.462 us 0.88% -8.653 us -1.88% FAIL
I32 I64 I32 2^28 2^1 7.187 ms 1.08% 7.056 ms 1.05% -130.851 us -1.82% FAIL
I32 I64 I32 2^16 2^4 10.794 us 4.93% 10.850 us 9.45% 0.056 us 0.51% PASS
I32 I64 I32 2^20 2^4 34.367 us 2.54% 34.182 us 3.55% -0.185 us -0.54% PASS
I32 I64 I32 2^24 2^4 328.056 us 0.78% 327.710 us 0.75% -0.345 us -0.11% PASS
I32 I64 I32 2^28 2^4 5.026 ms 0.63% 5.021 ms 0.63% -5.465 us -0.11% PASS
I32 I64 I32 2^16 2^8 10.720 us 4.93% 10.815 us 9.81% 0.095 us 0.88% PASS
I32 I64 I32 2^20 2^8 34.554 us 2.44% 34.455 us 3.38% -0.099 us -0.29% PASS
I32 I64 I32 2^24 2^8 270.591 us 0.95% 270.484 us 0.97% -0.107 us -0.04% PASS
I32 I64 I32 2^28 2^8 4.049 ms 1.06% 4.042 ms 1.06% -6.659 us -0.16% PASS
I32 I128 I32 2^16 2^1 12.312 us 3.50% 12.018 us 4.72% -0.294 us -2.39% PASS
I32 I128 I32 2^20 2^1 57.526 us 1.77% 55.804 us 1.65% -1.722 us -2.99% FAIL
I32 I128 I32 2^24 2^1 731.570 us 0.66% 723.621 us 0.63% -7.950 us -1.09% FAIL
I32 I128 I32 2^28 2^1 11.535 ms 0.98% 11.411 ms 0.96% -123.378 us -1.07% FAIL
I32 I128 I32 2^16 2^4 11.886 us 4.46% 11.846 us 8.78% -0.040 us -0.34% PASS
I32 I128 I32 2^20 2^4 47.142 us 1.88% 46.111 us 2.63% -1.031 us -2.19% FAIL
I32 I128 I32 2^24 2^4 528.952 us 0.63% 527.327 us 0.66% -1.625 us -0.31% PASS
I32 I128 I32 2^28 2^4 8.247 ms 0.59% 8.236 ms 0.59% -10.456 us -0.13% PASS
I32 I128 I32 2^16 2^8 11.694 us 4.44% 11.836 us 9.01% 0.142 us 1.21% PASS
I32 I128 I32 2^20 2^8 45.329 us 1.86% 44.205 us 2.73% -1.124 us -2.48% FAIL
I32 I128 I32 2^24 2^8 433.252 us 0.74% 432.005 us 0.76% -1.246 us -0.29% PASS
I32 I128 I32 2^28 2^8 6.648 ms 0.95% 6.642 ms 0.96% -5.967 us -0.09% PASS
I32 F32 I32 2^16 2^1 10.408 us 4.17% 10.265 us 9.89% -0.143 us -1.37% PASS
I32 F32 I32 2^20 2^1 29.954 us 2.78% 28.745 us 3.88% -1.209 us -4.04% FAIL
I32 F32 I32 2^24 2^1 322.472 us 1.11% 315.236 us 1.17% -7.236 us -2.24% FAIL
I32 F32 I32 2^28 2^1 5.049 ms 1.20% 4.922 ms 1.15% -127.059 us -2.52% FAIL
I32 F32 I32 2^16 2^4 9.993 us 4.72% 9.959 us 10.29% -0.034 us -0.34% PASS
I32 F32 I32 2^20 2^4 27.077 us 2.74% 26.446 us 3.98% -0.631 us -2.33% PASS
I32 F32 I32 2^24 2^4 238.666 us 0.88% 228.825 us 0.95% -9.841 us -4.12% FAIL
I32 F32 I32 2^28 2^4 3.663 ms 0.54% 3.659 ms 0.56% -4.452 us -0.12% PASS
I32 F32 I32 2^16 2^8 9.937 us 4.96% 9.921 us 10.62% -0.015 us -0.16% PASS
I32 F32 I32 2^20 2^8 27.032 us 2.38% 26.646 us 3.72% -0.386 us -1.43% PASS
I32 F32 I32 2^24 2^8 194.776 us 1.08% 191.026 us 1.17% -3.751 us -1.93% FAIL
I32 F32 I32 2^28 2^8 2.840 ms 1.14% 2.829 ms 1.15% -11.257 us -0.40% PASS
I32 F64 I32 2^16 2^1 11.304 us 3.73% 11.136 us 8.98% -0.168 us -1.48% PASS
I32 F64 I32 2^20 2^1 39.265 us 2.77% 38.370 us 3.38% -0.895 us -2.28% PASS
I32 F64 I32 2^24 2^1 460.186 us 0.89% 451.421 us 0.88% -8.765 us -1.90% FAIL
I32 F64 I32 2^28 2^1 7.187 ms 1.08% 7.056 ms 1.05% -130.672 us -1.82% FAIL
I32 F64 I32 2^16 2^4 10.971 us 4.64% 10.843 us 10.04% -0.128 us -1.17% PASS
I32 F64 I32 2^20 2^4 34.420 us 2.58% 34.161 us 3.66% -0.258 us -0.75% PASS
I32 F64 I32 2^24 2^4 328.129 us 0.78% 327.820 us 0.80% -0.309 us -0.09% PASS
I32 F64 I32 2^28 2^4 5.027 ms 0.63% 5.021 ms 0.63% -5.854 us -0.12% PASS
I32 F64 I32 2^16 2^8 10.797 us 4.92% 10.834 us 9.45% 0.038 us 0.35% PASS
I32 F64 I32 2^20 2^8 34.592 us 2.40% 34.465 us 3.60% -0.127 us -0.37% PASS
I32 F64 I32 2^24 2^8 270.804 us 0.95% 270.332 us 1.04% -0.472 us -0.17% PASS
I32 F64 I32 2^28 2^8 4.049 ms 1.06% 4.042 ms 1.06% -6.608 us -0.16% PASS
I32 C64 I32 2^16 2^1 11.260 us 3.49% 11.313 us 8.96% 0.053 us 0.47% PASS
I32 C64 I32 2^20 2^1 39.173 us 2.63% 38.343 us 3.36% -0.830 us -2.12% PASS
I32 C64 I32 2^24 2^1 460.166 us 0.90% 451.568 us 0.88% -8.598 us -1.87% FAIL
I32 C64 I32 2^28 2^1 7.188 ms 1.08% 7.056 ms 1.05% -131.673 us -1.83% FAIL
I32 C64 I32 2^16 2^4 11.035 us 4.51% 10.883 us 9.30% -0.152 us -1.38% PASS
I32 C64 I32 2^20 2^4 34.392 us 2.56% 34.157 us 3.58% -0.234 us -0.68% PASS
I32 C64 I32 2^24 2^4 328.351 us 0.78% 327.790 us 0.85% -0.560 us -0.17% PASS
I32 C64 I32 2^28 2^4 5.028 ms 0.63% 5.021 ms 0.63% -7.033 us -0.14% PASS
I32 C64 I32 2^16 2^8 10.734 us 4.92% 10.774 us 9.38% 0.041 us 0.38% PASS
I32 C64 I32 2^20 2^8 34.565 us 2.41% 34.449 us 3.64% -0.116 us -0.34% PASS
I32 C64 I32 2^24 2^8 270.535 us 0.94% 270.496 us 1.03% -0.039 us -0.01% PASS
I32 C64 I32 2^28 2^8 4.049 ms 1.06% 4.042 ms 1.07% -7.360 us -0.18% PASS
I64 I8 I32 2^16 2^1 11.680 us 4.43% 11.464 us 8.69% -0.216 us -1.85% PASS
I64 I8 I32 2^20 2^1 33.791 us 2.92% 33.917 us 4.14% 0.126 us 0.37% PASS
I64 I8 I32 2^24 2^1 378.004 us 1.27% 369.982 us 1.12% -8.022 us -2.12% FAIL
I64 I8 I32 2^28 2^1 5.864 ms 0.79% 5.767 ms 0.77% -97.041 us -1.65% FAIL
I64 I8 I32 2^16 2^4 11.454 us 3.85% 11.469 us 8.73% 0.015 us 0.13% PASS
I64 I8 I32 2^20 2^4 31.783 us 2.18% 32.355 us 3.83% 0.572 us 1.80% PASS
I64 I8 I32 2^24 2^4 285.782 us 0.86% 285.379 us 0.92% -0.403 us -0.14% PASS
I64 I8 I32 2^28 2^4 4.363 ms 0.54% 4.337 ms 0.54% -26.212 us -0.60% FAIL
I64 I8 I32 2^16 2^8 11.440 us 3.74% 11.395 us 8.18% -0.045 us -0.39% PASS
I64 I8 I32 2^20 2^8 31.877 us 2.02% 32.329 us 3.64% 0.453 us 1.42% PASS
I64 I8 I32 2^24 2^8 254.301 us 0.72% 253.001 us 0.88% -1.300 us -0.51% PASS
I64 I8 I32 2^28 2^8 3.828 ms 0.65% 3.798 ms 0.66% -29.710 us -0.78% FAIL
I64 I16 I32 2^16 2^1 11.753 us 4.48% 11.659 us 8.94% -0.094 us -0.80% PASS
I64 I16 I32 2^20 2^1 35.568 us 2.38% 35.015 us 3.33% -0.553 us -1.55% PASS
I64 I16 I32 2^24 2^1 407.992 us 1.03% 400.689 us 1.02% -7.302 us -1.79% FAIL
I64 I16 I32 2^28 2^1 6.357 ms 0.91% 6.262 ms 0.88% -94.801 us -1.49% FAIL
I64 I16 I32 2^16 2^4 11.531 us 4.03% 11.506 us 8.60% -0.025 us -0.21% PASS
I64 I16 I32 2^20 2^4 32.961 us 2.17% 32.380 us 3.15% -0.581 us -1.76% PASS
I64 I16 I32 2^24 2^4 305.738 us 0.90% 302.898 us 0.91% -2.840 us -0.93% FAIL
I64 I16 I32 2^28 2^4 4.664 ms 0.55% 4.635 ms 0.56% -28.454 us -0.61% FAIL
I64 I16 I32 2^16 2^8 11.415 us 3.57% 11.515 us 8.93% 0.100 us 0.88% PASS
I64 I16 I32 2^20 2^8 33.179 us 2.10% 32.742 us 3.08% -0.437 us -1.32% PASS
I64 I16 I32 2^24 2^8 266.720 us 0.89% 264.194 us 0.93% -2.526 us -0.95% FAIL
I64 I16 I32 2^28 2^8 4.003 ms 0.74% 3.971 ms 0.76% -31.386 us -0.78% FAIL
I64 I32 I32 2^16 2^1 12.023 us 4.06% 11.923 us 8.48% -0.100 us -0.83% PASS
I64 I32 I32 2^20 2^1 39.074 us 1.81% 38.314 us 3.20% -0.760 us -1.94% FAIL
I64 I32 I32 2^24 2^1 472.729 us 0.87% 464.099 us 0.87% -8.630 us -1.83% FAIL
I64 I32 I32 2^28 2^1 7.409 ms 0.97% 7.289 ms 0.95% -120.098 us -1.62% FAIL
I64 I32 I32 2^16 2^4 11.866 us 4.48% 11.612 us 8.58% -0.254 us -2.14% PASS
I64 I32 I32 2^20 2^4 35.435 us 1.78% 34.784 us 2.92% -0.651 us -1.84% FAIL
I64 I32 I32 2^24 2^4 339.983 us 0.76% 338.209 us 0.74% -1.775 us -0.52% PASS
I64 I32 I32 2^28 2^4 5.222 ms 0.57% 5.200 ms 0.56% -22.618 us -0.43% PASS
I64 I32 I32 2^16 2^8 11.852 us 4.51% 11.623 us 8.85% -0.229 us -1.93% PASS
I64 I32 I32 2^20 2^8 35.533 us 1.68% 35.059 us 2.80% -0.474 us -1.33% PASS
I64 I32 I32 2^24 2^8 289.277 us 0.87% 287.317 us 0.94% -1.961 us -0.68% PASS
I64 I32 I32 2^28 2^8 4.356 ms 0.84% 4.339 ms 0.84% -17.215 us -0.40% PASS
I64 I64 I32 2^16 2^1 12.521 us 3.72% 12.351 us 7.99% -0.170 us -1.36% PASS
I64 I64 I32 2^20 2^1 47.055 us 1.53% 45.806 us 2.26% -1.249 us -2.65% FAIL
I64 I64 I32 2^24 2^1 603.516 us 0.74% 592.252 us 0.75% -11.264 us -1.87% FAIL
I64 I64 I32 2^28 2^1 9.572 ms 1.01% 9.407 ms 0.99% -165.693 us -1.73% FAIL
I64 I64 I32 2^16 2^4 12.263 us 3.46% 12.032 us 8.94% -0.231 us -1.89% PASS
I64 I64 I32 2^20 2^4 41.036 us 1.60% 40.496 us 2.81% -0.540 us -1.32% PASS
I64 I64 I32 2^24 2^4 430.068 us 0.67% 427.556 us 0.68% -2.513 us -0.58% PASS
I64 I64 I32 2^28 2^4 7.010 ms 0.50% 7.010 ms 0.50% -0.328 us -0.00% PASS
I64 I64 I32 2^16 2^8 12.173 us 3.69% 12.033 us 8.70% -0.140 us -1.15% PASS
I64 I64 I32 2^20 2^8 40.693 us 1.57% 40.120 us 2.83% -0.573 us -1.41% PASS
I64 I64 I32 2^24 2^8 360.794 us 0.81% 358.193 us 0.84% -2.601 us -0.72% PASS
I64 I64 I32 2^28 2^8 5.480 ms 0.94% 5.471 ms 0.95% -9.210 us -0.17% PASS
I64 I128 I32 2^16 2^1 13.506 us 3.32% 13.364 us 7.58% -0.142 us -1.05% PASS
I64 I128 I32 2^20 2^1 65.663 us 1.55% 63.841 us 2.00% -1.823 us -2.78% FAIL
I64 I128 I32 2^24 2^1 871.958 us 0.57% 862.269 us 0.57% -9.689 us -1.11% FAIL
I64 I128 I32 2^28 2^1 13.797 ms 0.99% 13.647 ms 0.96% -149.739 us -1.09% FAIL
I64 I128 I32 2^16 2^4 13.246 us 3.48% 13.310 us 7.87% 0.064 us 0.48% PASS
I64 I128 I32 2^20 2^4 53.308 us 1.81% 52.603 us 2.24% -0.704 us -1.32% PASS
I64 I128 I32 2^24 2^4 634.502 us 0.50% 634.185 us 0.53% -0.317 us -0.05% PASS
I64 I128 I32 2^28 2^4 9.938 ms 0.57% 9.935 ms 0.58% -2.733 us -0.03% PASS
I64 I128 I32 2^16 2^8 13.171 us 3.62% 13.151 us 7.54% -0.020 us -0.15% PASS
I64 I128 I32 2^20 2^8 50.854 us 1.77% 49.721 us 2.32% -1.134 us -2.23% FAIL
I64 I128 I32 2^24 2^8 520.067 us 0.64% 519.489 us 0.67% -0.577 us -0.11% PASS
I64 I128 I32 2^28 2^8 8.034 ms 0.92% 8.027 ms 0.90% -6.647 us -0.08% PASS
I64 F32 I32 2^16 2^1 12.228 us 3.73% 12.757 us 8.56% 0.530 us 4.33% FAIL
I64 F32 I32 2^20 2^1 39.164 us 1.80% 37.911 us 3.13% -1.253 us -3.20% FAIL
I64 F32 I32 2^24 2^1 472.675 us 0.86% 463.945 us 0.85% -8.731 us -1.85% FAIL
I64 F32 I32 2^28 2^1 7.409 ms 0.98% 7.289 ms 0.95% -120.493 us -1.63% FAIL
I64 F32 I32 2^16 2^4 11.911 us 4.41% 11.634 us 8.76% -0.277 us -2.33% PASS
I64 F32 I32 2^20 2^4 35.525 us 1.80% 34.814 us 3.10% -0.711 us -2.00% FAIL
I64 F32 I32 2^24 2^4 340.012 us 0.79% 338.106 us 0.84% -1.906 us -0.56% PASS
I64 F32 I32 2^28 2^4 5.223 ms 0.56% 5.199 ms 0.57% -23.456 us -0.45% PASS
I64 F32 I32 2^16 2^8 11.924 us 4.37% 11.615 us 8.65% -0.309 us -2.59% PASS
I64 F32 I32 2^20 2^8 35.574 us 1.68% 35.070 us 3.09% -0.504 us -1.42% PASS
I64 F32 I32 2^24 2^8 289.303 us 0.86% 287.236 us 0.87% -2.067 us -0.71% PASS
I64 F32 I32 2^28 2^8 4.357 ms 0.84% 4.339 ms 0.84% -17.422 us -0.40% PASS
I64 F64 I32 2^16 2^1 12.556 us 3.81% 12.391 us 7.96% -0.165 us -1.31% PASS
I64 F64 I32 2^20 2^1 47.128 us 1.54% 45.964 us 2.33% -1.164 us -2.47% FAIL
I64 F64 I32 2^24 2^1 603.400 us 0.75% 592.291 us 0.73% -11.109 us -1.84% FAIL
I64 F64 I32 2^28 2^1 9.572 ms 1.01% 9.407 ms 0.99% -165.423 us -1.73% FAIL
I64 F64 I32 2^16 2^4 12.165 us 3.70% 12.131 us 8.17% -0.033 us -0.27% PASS
I64 F64 I32 2^20 2^4 40.948 us 1.61% 40.575 us 2.62% -0.372 us -0.91% PASS
I64 F64 I32 2^24 2^4 430.025 us 0.67% 427.436 us 0.70% -2.589 us -0.60% PASS
I64 F64 I32 2^28 2^4 7.010 ms 0.50% 7.010 ms 0.50% -0.112 us -0.00% PASS
I64 F64 I32 2^16 2^8 12.166 us 3.69% 12.091 us 3.98% -0.075 us -0.62% PASS
I64 F64 I32 2^20 2^8 40.677 us 1.57% 40.034 us 1.49% -0.643 us -1.58% FAIL
I64 F64 I32 2^24 2^8 360.904 us 0.81% 358.153 us 0.80% -2.751 us -0.76% PASS
I64 F64 I32 2^28 2^8 5.480 ms 0.95% 5.471 ms 0.94% -8.888 us -0.16% PASS
I64 C64 I32 2^16 2^1 12.460 us 3.61% 12.124 us 4.04% -0.336 us -2.70% PASS
I64 C64 I32 2^20 2^1 47.018 us 1.51% 46.018 us 1.39% -1.000 us -2.13% FAIL
I64 C64 I32 2^24 2^1 603.064 us 0.75% 592.228 us 0.71% -10.836 us -1.80% FAIL
I64 C64 I32 2^28 2^1 9.567 ms 1.02% 9.407 ms 0.99% -159.671 us -1.67% FAIL
I64 C64 I32 2^16 2^4 12.168 us 3.72% 11.957 us 4.37% -0.211 us -1.73% PASS
I64 C64 I32 2^20 2^4 40.953 us 1.61% 40.460 us 1.50% -0.493 us -1.20% PASS
I64 C64 I32 2^24 2^4 429.724 us 0.68% 427.357 us 0.65% -2.367 us -0.55% PASS
I64 C64 I32 2^28 2^4 7.009 ms 0.50% 7.010 ms 0.50% 0.870 us 0.01% PASS
I64 C64 I32 2^16 2^8 12.058 us 4.03% 12.102 us 8.69% 0.044 us 0.36% PASS
I64 C64 I32 2^20 2^8 40.634 us 1.56% 40.148 us 2.75% -0.486 us -1.20% PASS
I64 C64 I32 2^24 2^8 360.499 us 0.82% 359.257 us 0.85% -1.242 us -0.34% PASS
I64 C64 I32 2^28 2^8 5.477 ms 0.95% 5.471 ms 0.95% -5.717 us -0.10% PASS
I128 I8 I32 2^16 2^1 13.396 us 3.84% 13.492 us 7.26% 0.096 us 0.72% PASS
I128 I8 I32 2^20 2^1 54.423 us 1.73% 54.557 us 2.40% 0.134 us 0.25% PASS
I128 I8 I32 2^24 2^1 704.903 us 0.75% 702.722 us 0.74% -2.181 us -0.31% PASS
I128 I8 I32 2^28 2^1 11.125 ms 0.63% 11.075 ms 0.63% -50.538 us -0.45% PASS
I128 I8 I32 2^16 2^4 13.251 us 3.78% 13.366 us 7.77% 0.115 us 0.87% PASS
I128 I8 I32 2^20 2^4 49.249 us 1.47% 49.634 us 2.35% 0.385 us 0.78% PASS
I128 I8 I32 2^24 2^4 571.938 us 0.50% 569.138 us 0.51% -2.800 us -0.49% PASS
I128 I8 I32 2^28 2^4 8.939 ms 0.50% 8.887 ms 0.50% -52.543 us -0.59% FAIL
I128 I8 I32 2^16 2^8 13.267 us 3.72% 13.434 us 7.56% 0.167 us 1.26% PASS
I128 I8 I32 2^20 2^8 47.756 us 1.33% 48.457 us 2.22% 0.701 us 1.47% FAIL
I128 I8 I32 2^24 2^8 529.196 us 0.50% 525.320 us 0.54% -3.876 us -0.73% FAIL
I128 I8 I32 2^28 2^8 8.230 ms 0.50% 8.174 ms 0.50% -55.173 us -0.67% FAIL
I128 I16 I32 2^16 2^1 13.471 us 3.73% 13.410 us 8.11% -0.060 us -0.45% PASS
I128 I16 I32 2^20 2^1 58.687 us 1.73% 55.890 us 2.29% -2.797 us -4.77% FAIL
I128 I16 I32 2^24 2^1 774.531 us 0.62% 712.377 us 0.66% -62.154 us -8.02% FAIL
I128 I16 I32 2^28 2^1 12.227 ms 0.50% 11.233 ms 0.81% -994.090 us -8.13% FAIL
I128 I16 I32 2^16 2^4 13.351 us 3.61% 13.374 us 8.30% 0.023 us 0.17% PASS
I128 I16 I32 2^20 2^4 52.919 us 1.53% 50.443 us 2.42% -2.477 us -4.68% FAIL
I128 I16 I32 2^24 2^4 633.834 us 0.50% 573.598 us 0.58% -60.236 us -9.50% FAIL
I128 I16 I32 2^28 2^4 9.949 ms 0.50% 8.930 ms 0.50% -1019.515 us -10.25% FAIL
I128 I16 I32 2^16 2^8 13.269 us 3.73% 13.366 us 7.47% 0.097 us 0.73% PASS
I128 I16 I32 2^20 2^8 51.095 us 1.42% 49.340 us 2.49% -1.755 us -3.44% FAIL
I128 I16 I32 2^24 2^8 586.871 us 0.50% 514.162 us 0.62% -72.709 us -12.39% FAIL
I128 I16 I32 2^28 2^8 9.177 ms 0.50% 7.958 ms 0.52% -1218.174 us -13.27% FAIL
I128 I32 I32 2^16 2^1 13.558 us 3.63% 13.582 us 7.22% 0.024 us 0.18% PASS
I128 I32 I32 2^20 2^1 59.647 us 1.68% 58.863 us 2.11% -0.784 us -1.31% PASS
I128 I32 I32 2^24 2^1 792.701 us 0.79% 788.959 us 0.80% -3.742 us -0.47% PASS
I128 I32 I32 2^28 2^1 12.515 ms 0.89% 12.455 ms 0.91% -59.535 us -0.48% PASS
I128 I32 I32 2^16 2^4 13.526 us 3.43% 13.673 us 7.40% 0.148 us 1.09% PASS
I128 I32 I32 2^20 2^4 52.774 us 1.46% 52.186 us 1.91% -0.589 us -1.12% PASS
I128 I32 I32 2^24 2^4 614.252 us 0.52% 611.616 us 0.52% -2.636 us -0.43% PASS
I128 I32 I32 2^28 2^4 9.627 ms 0.50% 9.566 ms 0.50% -60.342 us -0.63% FAIL
I128 I32 I32 2^16 2^8 13.546 us 3.42% 13.618 us 7.56% 0.071 us 0.53% PASS
I128 I32 I32 2^20 2^8 50.911 us 1.30% 50.422 us 2.12% -0.489 us -0.96% PASS
I128 I32 I32 2^24 2^8 552.750 us 0.50% 548.387 us 0.50% -4.362 us -0.79% FAIL
I128 I32 I32 2^28 2^8 8.594 ms 0.50% 8.530 ms 0.50% -64.851 us -0.75% FAIL
I128 I64 I32 2^16 2^1 14.326 us 4.23% 14.181 us 7.86% -0.146 us -1.02% PASS
I128 I64 I32 2^20 2^1 66.806 us 1.40% 66.182 us 1.87% -0.624 us -0.93% PASS
I128 I64 I32 2^24 2^1 912.552 us 0.68% 909.574 us 0.68% -2.978 us -0.33% PASS
I128 I64 I32 2^28 2^1 14.465 ms 0.98% 14.423 ms 0.99% -42.016 us -0.29% PASS
I128 I64 I32 2^16 2^4 14.220 us 3.81% 14.167 us 7.50% -0.054 us -0.38% PASS
I128 I64 I32 2^20 2^4 57.391 us 1.32% 56.728 us 1.85% -0.663 us -1.16% PASS
I128 I64 I32 2^24 2^4 683.042 us 0.53% 679.586 us 0.52% -3.456 us -0.51% PASS
I128 I64 I32 2^28 2^4 10.705 ms 0.50% 10.663 ms 0.50% -41.936 us -0.39% PASS
I128 I64 I32 2^16 2^8 14.155 us 3.77% 14.122 us 7.74% -0.032 us -0.23% PASS
I128 I64 I32 2^20 2^8 54.668 us 1.27% 53.628 us 1.92% -1.041 us -1.90% FAIL
I128 I64 I32 2^24 2^8 592.776 us 0.50% 592.804 us 0.52% 0.029 us 0.00% PASS
I128 I64 I32 2^28 2^8 9.244 ms 0.59% 9.195 ms 0.59% -48.660 us -0.53% PASS
I128 I128 I32 2^16 2^1 15.340 us 4.12% 15.064 us 7.33% -0.276 us -1.80% PASS
I128 I128 I32 2^20 2^1 102.534 us 0.87% 82.357 us 1.36% -20.178 us -19.68% FAIL
I128 I128 I32 2^24 2^1 1.519 ms 0.58% 1.160 ms 0.53% -359.399 us -23.65% FAIL
I128 I128 I32 2^28 2^1 24.243 ms 1.32% 18.419 ms 0.97% -5824.412 us -24.03% FAIL
I128 I128 I32 2^16 2^4 15.202 us 5.21% 14.912 us 7.33% -0.291 us -1.91% PASS
I128 I128 I32 2^20 2^4 78.316 us 1.40% 69.069 us 1.96% -9.247 us -11.81% FAIL
I128 I128 I32 2^24 2^4 1.066 ms 0.46% 848.330 us 0.50% -217.621 us -20.42% FAIL
I128 I128 I32 2^28 2^4 16.857 ms 0.50% 13.251 ms 0.57% -3605.921 us -21.39% FAIL
I128 I128 I32 2^16 2^8 15.154 us 4.05% 14.942 us 7.13% -0.212 us -1.40% PASS
I128 I128 I32 2^20 2^8 75.502 us 1.13% 63.023 us 1.94% -12.478 us -16.53% FAIL
I128 I128 I32 2^24 2^8 995.774 us 0.49% 714.795 us 0.54% -280.979 us -28.22% FAIL
I128 I128 I32 2^28 2^8 15.712 ms 0.50% 11.044 ms 0.76% -4667.906 us -29.71% FAIL
I128 F32 I32 2^16 2^1 13.574 us 3.74% 13.723 us 7.43% 0.149 us 1.10% PASS
I128 F32 I32 2^20 2^1 59.681 us 1.68% 58.949 us 1.84% -0.733 us -1.23% PASS
I128 F32 I32 2^24 2^1 792.577 us 0.80% 788.937 us 0.80% -3.640 us -0.46% PASS
I128 F32 I32 2^28 2^1 12.515 ms 0.89% 12.455 ms 0.90% -60.023 us -0.48% PASS
I128 F32 I32 2^16 2^4 13.498 us 3.35% 13.727 us 7.84% 0.228 us 1.69% PASS
I128 F32 I32 2^20 2^4 52.725 us 1.45% 52.231 us 2.05% -0.494 us -0.94% PASS
I128 F32 I32 2^24 2^4 614.056 us 0.53% 611.573 us 0.51% -2.483 us -0.40% PASS
I128 F32 I32 2^28 2^4 9.627 ms 0.50% 9.566 ms 0.50% -61.168 us -0.64% FAIL
I128 F32 I32 2^16 2^8 13.473 us 3.27% 13.660 us 6.07% 0.187 us 1.39% PASS
I128 F32 I32 2^20 2^8 50.865 us 1.33% 50.392 us 2.12% -0.474 us -0.93% PASS
I128 F32 I32 2^24 2^8 551.757 us 0.50% 548.297 us 0.50% -3.460 us -0.63% FAIL
I128 F32 I32 2^28 2^8 8.594 ms 0.50% 8.530 ms 0.50% -64.423 us -0.75% FAIL
I128 F64 I32 2^16 2^1 14.297 us 4.25% 14.139 us 7.43% -0.158 us -1.11% PASS
I128 F64 I32 2^20 2^1 66.691 us 1.43% 66.174 us 1.88% -0.518 us -0.78% PASS
I128 F64 I32 2^24 2^1 912.388 us 0.67% 909.510 us 0.68% -2.878 us -0.32% PASS
I128 F64 I32 2^28 2^1 14.464 ms 0.98% 14.422 ms 0.99% -41.904 us -0.29% PASS
I128 F64 I32 2^16 2^4 14.209 us 3.83% 14.107 us 8.12% -0.102 us -0.72% PASS
I128 F64 I32 2^20 2^4 57.421 us 1.35% 56.720 us 1.91% -0.700 us -1.22% PASS
I128 F64 I32 2^24 2^4 683.250 us 0.53% 679.718 us 0.51% -3.531 us -0.52% FAIL
I128 F64 I32 2^28 2^4 10.706 ms 0.50% 10.663 ms 0.50% -42.222 us -0.39% PASS
I128 F64 I32 2^16 2^8 14.176 us 3.74% 14.069 us 7.21% -0.107 us -0.76% PASS
I128 F64 I32 2^20 2^8 54.711 us 1.26% 53.555 us 1.71% -1.157 us -2.11% FAIL
I128 F64 I32 2^24 2^8 592.826 us 0.50% 592.772 us 0.50% -0.055 us -0.01% PASS
I128 F64 I32 2^28 2^8 9.244 ms 0.59% 9.195 ms 0.59% -49.344 us -0.53% PASS
I128 C64 I32 2^16 2^1 14.289 us 4.31% 14.178 us 7.71% -0.111 us -0.78% PASS
I128 C64 I32 2^20 2^1 66.629 us 1.43% 66.150 us 1.88% -0.479 us -0.72% PASS
I128 C64 I32 2^24 2^1 912.011 us 0.67% 910.094 us 0.68% -1.917 us -0.21% PASS
I128 C64 I32 2^28 2^1 14.460 ms 0.97% 14.421 ms 0.99% -39.005 us -0.27% PASS
I128 C64 I32 2^16 2^4 14.104 us 3.84% 14.165 us 7.20% 0.061 us 0.43% PASS
I128 C64 I32 2^20 2^4 57.191 us 1.36% 56.750 us 1.93% -0.441 us -0.77% PASS
I128 C64 I32 2^24 2^4 680.848 us 0.53% 679.677 us 0.53% -1.171 us -0.17% PASS
I128 C64 I32 2^28 2^4 10.672 ms 0.50% 10.662 ms 0.50% -10.604 us -0.10% PASS
I128 C64 I32 2^16 2^8 14.024 us 3.88% 14.251 us 7.15% 0.227 us 1.62% PASS
I128 C64 I32 2^20 2^8 54.339 us 1.28% 53.726 us 1.89% -0.613 us -1.13% PASS
I128 C64 I32 2^24 2^8 589.151 us 0.50% 592.761 us 0.51% 3.610 us 0.61% FAIL
I128 C64 I32 2^28 2^8 9.189 ms 0.60% 9.194 ms 0.60% 4.680 us 0.05% PASS

Copy link
Collaborator

@gevtushenko gevtushenko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few minor notes in addition to conversion warnings.

cub/cub/device/dispatch/dispatch_unique_by_key.cuh Outdated Show resolved Hide resolved
cub/cub/device/device_select.cuh Show resolved Hide resolved
@elstehle elstehle merged commit 50ce545 into NVIDIA:main Jan 5, 2024
537 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Refactor thrust::unique_by_key to use cub::DeviceSelect::UniqueByKey
2 participants