cudf icon indicating copy to clipboard operation
cudf copied to clipboard

Apply primitive row operators into join operations

Open PointKernel opened this issue 6 months ago • 8 comments

Description

Supersedes https://github.com/rapidsai/cudf/pull/15700

This PR updates mixed join and hash join to leverage primitive row operators where applicable, resulting in performance improvements of 10% to 30% in most cases. However, it introduces slowdowns for mixed joins when nulls are present. Further work is needed to resolve this regression for nullable mixed joins. Migration for semi and anti joins will be handled in a separate PR to keep this one manageable.

This PR adds 4 new translation units, each adding ~3 to 4 MB for a total binary size increase of ~16 MB. In CI tests, mixed_join_size_kernel_nulls.cu build time dropped from ~35 to ~31 minutes, and the new *_primitive.cu TU builds in ~27 minutes. With parallel builds, the added time shouldn’t be a major issue.

Checklist

  • [x] I am familiar with the Contributing Guidelines.
  • [x] New or existing tests cover these changes.
  • [x] The documentation is up to date with these changes.

PointKernel avatar May 20 '25 19:05 PointKernel

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

copy-pr-bot[bot] avatar May 20 '25 19:05 copy-pr-bot[bot]

/ok to test

PointKernel avatar May 28 '25 01:05 PointKernel

/ok to test

PointKernel avatar May 28 '25 01:05 PointKernel

# inner_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |        Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  76.496 us |      12.32% |  73.220 us |      10.92% |   -3.276 us |  -4.28% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 104.790 us |       3.45% |  94.597 us |       2.80% |  -10.192 us |  -9.73% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   3.736 ms |       0.99% |   2.980 ms |       1.14% | -755.683 us | -20.23% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 121.523 us |       2.89% | 107.236 us |       3.94% |  -14.287 us | -11.76% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   4.127 ms |       0.73% |   3.321 ms |       0.99% | -805.807 us | -19.53% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  16.905 ms |       0.38% |  16.581 ms |       0.06% | -323.901 us |  -1.92% |   FAST   |
|  I32  |     1      |    1000     |     1000     |  88.099 us |       3.89% |  84.664 us |       3.45% |   -3.435 us |  -3.90% |   FAST   |
|  I32  |     1      |   100000    |     1000     | 104.264 us |       2.83% |  94.456 us |       5.46% |   -9.808 us |  -9.41% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   1.859 ms |       0.50% |   1.477 ms |       0.75% | -382.242 us | -20.56% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 113.249 us |       3.39% | 100.623 us |       6.92% |  -12.626 us | -11.15% |   FAST   |
|  I32  |     1      |  10000000   |    100000    |   1.965 ms |       0.78% |   1.578 ms |       0.91% | -387.441 us | -19.71% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   4.546 ms |       0.45% |   4.166 ms |       0.29% | -379.543 us |  -8.35% |   FAST   |
|  I64  |     0      |    1000     |     1000     |  73.796 us |       6.77% |  70.100 us |       5.83% |   -3.696 us |  -5.01% |   SAME   |
|  I64  |     0      |   100000    |     1000     | 112.911 us |       2.31% |  97.095 us |       3.56% |  -15.817 us | -14.01% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   3.924 ms |       1.16% |   3.240 ms |       1.06% | -684.814 us | -17.45% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 123.590 us |       4.25% | 110.667 us |       4.25% |  -12.923 us | -10.46% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   4.321 ms |       0.75% |   3.446 ms |       0.94% | -874.776 us | -20.25% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  17.029 ms |       0.42% |  16.711 ms |       0.09% | -317.485 us |  -1.86% |   FAST   |
|  I64  |     1      |    1000     |     1000     |  88.708 us |       3.20% |  85.632 us |       3.39% |   -3.076 us |  -3.47% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 105.656 us |       2.73% |  93.084 us |       6.76% |  -12.572 us | -11.90% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   1.936 ms |       1.00% |   1.540 ms |       0.92% | -396.215 us | -20.46% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 112.776 us |       2.60% | 100.570 us |       6.27% |  -12.207 us | -10.82% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   2.065 ms |       0.77% |   1.649 ms |       1.13% | -415.948 us | -20.14% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   4.620 ms |       0.27% |   4.212 ms |       0.26% | -407.898 us |  -8.83% |   FAST   |

# left_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  72.296 us |       5.47% |  69.141 us |       4.09% |    -3.155 us |  -4.36% |   FAST   |
|  I32  |     0      |   100000    |     1000     | 117.937 us |       4.16% |  98.218 us |       4.64% |   -19.718 us | -16.72% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   4.369 ms |       1.19% |   3.277 ms |       1.14% | -1092.540 us | -25.01% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 132.216 us |       2.48% | 113.654 us |       3.12% |   -18.562 us | -14.04% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   4.823 ms |       0.64% |   3.654 ms |       0.93% | -1168.689 us | -24.23% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  17.349 ms |       0.07% |  16.894 ms |       0.12% |  -455.119 us |  -2.62% |   FAST   |
|  I32  |     1      |    1000     |     1000     |  87.981 us |       4.39% |  85.312 us |       3.26% |    -2.669 us |  -3.03% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 106.206 us |       4.28% |  98.308 us |       5.15% |    -7.898 us |  -7.44% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   2.238 ms |       0.62% |   1.715 ms |       1.12% |  -522.897 us | -23.36% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 116.416 us |       6.22% | 105.079 us |       4.96% |   -11.337 us |  -9.74% |   FAST   |
|  I32  |     1      |  10000000   |    100000    |   2.374 ms |       0.55% |   1.829 ms |       0.82% |  -545.056 us | -22.96% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   5.018 ms |       0.21% |   4.468 ms |       0.47% |  -550.529 us | -10.97% |   FAST   |
|  I64  |     0      |    1000     |     1000     |  75.222 us |       5.64% |  70.539 us |       6.40% |    -4.683 us |  -6.23% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 122.101 us |       3.44% | 103.817 us |       3.56% |   -18.284 us | -14.97% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   4.573 ms |       1.09% |   3.591 ms |       1.10% |  -982.262 us | -21.48% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 132.252 us |       2.31% | 115.643 us |       5.95% |   -16.609 us | -12.56% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   5.015 ms |       0.68% |   3.802 ms |       1.01% | -1212.996 us | -24.19% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  17.461 ms |       0.11% |  17.030 ms |       0.35% |  -430.382 us |  -2.46% |   FAST   |
|  I64  |     1      |    1000     |     1000     |  89.991 us |       8.23% |  89.318 us |      13.77% |    -0.673 us |  -0.75% |   SAME   |
|  I64  |     1      |   100000    |     1000     | 109.564 us |       9.06% | 100.005 us |       7.69% |    -9.559 us |  -8.72% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   2.310 ms |       0.68% |   1.785 ms |       0.97% |  -525.546 us | -22.75% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 114.085 us |       3.57% | 106.364 us |       4.78% |    -7.721 us |  -6.77% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   2.485 ms |       0.63% |   1.917 ms |       0.93% |  -567.290 us | -22.83% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   5.094 ms |       0.46% |   4.509 ms |       0.50% |  -584.803 us | -11.48% |   FAST   |

# full_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 127.702 us |       6.62% | 126.059 us |       6.58% |    -1.643 us |  -1.29% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 152.026 us |       5.04% | 135.067 us |       7.01% |   -16.959 us | -11.16% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   4.753 ms |       0.93% |   3.632 ms |       1.14% | -1120.988 us | -23.59% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 190.791 us |       5.05% | 173.761 us |       3.26% |   -17.030 us |  -8.93% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   5.089 ms |       0.65% |   3.888 ms |       0.80% | -1200.937 us | -23.60% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  19.156 ms |       0.11% |  18.696 ms |       0.09% |  -459.531 us |  -2.40% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 141.395 us |       2.66% | 142.302 us |       3.61% |     0.907 us |   0.64% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 159.494 us |       3.34% | 159.348 us |       8.89% |    -0.146 us |  -0.09% |   SAME   |
|  I32  |     1      |  10000000   |     1000     |   2.644 ms |       0.61% |   2.104 ms |       0.69% |  -540.118 us | -20.43% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 173.049 us |       2.83% | 164.480 us |       4.75% |    -8.569 us |  -4.95% |   FAST   |
|  I32  |     1      |  10000000   |    100000    |   2.784 ms |       0.61% |   2.229 ms |       0.96% |  -554.291 us | -19.91% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   5.999 ms |       0.46% |   5.431 ms |       0.32% |  -567.740 us |  -9.46% |   FAST   |
|  I64  |     0      |    1000     |     1000     | 129.219 us |       5.39% | 124.834 us |       3.15% |    -4.386 us |  -3.39% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 153.177 us |       2.05% | 136.012 us |       3.27% |   -17.165 us | -11.21% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   4.909 ms |       0.96% |   3.907 ms |       0.98% | -1001.705 us | -20.41% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 192.070 us |       5.01% | 173.814 us |       2.76% |   -18.256 us |  -9.51% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   5.224 ms |       0.69% |   4.005 ms |       0.93% | -1218.576 us | -23.33% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  19.228 ms |       0.08% |  18.828 ms |       0.19% |  -399.745 us |  -2.08% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 142.552 us |       3.44% | 141.992 us |       3.34% |    -0.560 us |  -0.39% |   SAME   |
|  I64  |     1      |   100000    |     1000     | 161.311 us |       3.80% | 154.507 us |       5.00% |    -6.804 us |  -4.22% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   2.692 ms |       0.60% |   2.165 ms |       0.90% |  -526.854 us | -19.57% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 172.401 us |       2.60% | 165.046 us |       3.27% |    -7.355 us |  -4.27% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   2.872 ms |       0.74% |   2.300 ms |       0.76% |  -572.358 us | -19.93% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   6.046 ms |       0.35% |   5.467 ms |       0.26% |  -579.564 us |  -9.59% |   FAST   |

# mixed_inner_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 124.021 us |       3.86% | 115.761 us |       3.74% |    -8.260 us |  -6.66% |   FAST   |
|  I32  |     0      |   100000    |     1000     | 162.415 us |       2.48% | 154.986 us |       3.97% |    -7.429 us |  -4.57% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   5.507 ms |       0.77% |   5.050 ms |       0.76% |  -457.878 us |  -8.31% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 184.582 us |       2.84% | 169.141 us |       4.85% |   -15.441 us |  -8.37% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   6.491 ms |       0.59% |   5.628 ms |       0.64% |  -862.557 us | -13.29% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  24.156 ms |       0.32% |  21.824 ms |       0.09% | -2331.296 us |  -9.65% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 125.821 us |       2.46% | 123.314 us |       5.73% |    -2.507 us |  -1.99% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 192.878 us |       1.64% | 198.296 us |       7.34% |     5.418 us |   2.81% |   SLOW   |
|  I32  |     1      |  10000000   |     1000     |   7.216 ms |       0.18% |   7.611 ms |       0.24% |   395.553 us |   5.48% |   SLOW   |
|  I32  |     1      |   100000    |    100000    | 212.363 us |       2.69% | 221.021 us |       1.93% |     8.658 us |   4.08% |   SLOW   |
|  I32  |     1      |  10000000   |    100000    |   8.581 ms |       0.14% |   9.638 ms |       0.19% |     1.057 ms |  12.32% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |  11.520 ms |       0.22% |  12.688 ms |       0.15% |     1.168 ms |  10.14% |   SLOW   |
|  I64  |     0      |    1000     |     1000     | 130.010 us |       6.08% | 118.011 us |       5.27% |   -11.999 us |  -9.23% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 184.012 us |       3.88% | 166.819 us |       2.74% |   -17.193 us |  -9.34% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   6.569 ms |       0.71% |   5.913 ms |       0.80% |  -655.882 us |  -9.99% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 202.465 us |       3.92% | 181.923 us |       3.64% |   -20.542 us | -10.15% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   7.336 ms |       0.57% |   6.350 ms |       0.58% |  -985.442 us | -13.43% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  24.471 ms |       0.06% |  22.093 ms |       0.09% | -2377.915 us |  -9.72% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 138.098 us |       3.15% | 124.872 us |       3.36% |   -13.226 us |  -9.58% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 195.456 us |       1.65% | 198.706 us |       4.05% |     3.250 us |   1.66% |   SLOW   |
|  I64  |     1      |  10000000   |     1000     |   7.306 ms |       0.24% |   7.758 ms |       0.26% |   451.973 us |   6.19% |   SLOW   |
|  I64  |     1      |   100000    |    100000    | 216.544 us |       2.36% | 222.934 us |       1.85% |     6.390 us |   2.95% |   SLOW   |
|  I64  |     1      |  10000000   |    100000    |   8.746 ms |       0.19% |   9.786 ms |       0.28% |     1.040 ms |  11.89% |   SLOW   |
|  I64  |     1      |  10000000   |   10000000   |  11.643 ms |       0.13% |  12.778 ms |       0.24% |     1.135 ms |   9.75% |   SLOW   |

# mixed_left_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 125.896 us |       2.61% | 120.352 us |       5.27% |    -5.544 us |  -4.40% |   FAST   |
|  I32  |     0      |   100000    |     1000     | 165.368 us |       1.82% | 157.426 us |       2.90% |    -7.943 us |  -4.80% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   5.832 ms |       0.77% |   5.156 ms |       0.73% |  -675.834 us | -11.59% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 190.380 us |       2.24% | 171.162 us |       3.53% |   -19.218 us | -10.09% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   6.849 ms |       0.67% |   5.729 ms |       0.56% | -1119.670 us | -16.35% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  24.707 ms |       0.09% |  22.200 ms |       0.08% | -2506.939 us | -10.15% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 125.667 us |       2.76% | 125.556 us |       5.83% |    -0.112 us |  -0.09% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 199.149 us |       1.99% | 206.563 us |       3.27% |     7.414 us |   3.72% |   SLOW   |
|  I32  |     1      |  10000000   |     1000     |   8.050 ms |       0.23% |   9.336 ms |       0.20% |     1.286 ms |  15.98% |   SLOW   |
|  I32  |     1      |   100000    |    100000    | 221.416 us |       4.56% | 231.098 us |       1.68% |     9.682 us |   4.37% |   SLOW   |
|  I32  |     1      |  10000000   |    100000    |   9.508 ms |       0.12% |  11.345 ms |       0.28% |     1.837 ms |  19.32% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |  12.420 ms |       0.11% |  14.354 ms |       0.16% |     1.934 ms |  15.57% |   SLOW   |
|  I64  |     0      |    1000     |     1000     | 129.818 us |       2.26% | 121.237 us |       4.37% |    -8.581 us |  -6.61% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 187.966 us |       3.47% | 168.726 us |       2.54% |   -19.240 us | -10.24% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   7.004 ms |       0.70% |   5.911 ms |       0.75% | -1093.064 us | -15.61% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 207.325 us |       2.63% | 184.086 us |       2.41% |   -23.239 us | -11.21% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   7.810 ms |       0.54% |   6.357 ms |       0.57% | -1453.222 us | -18.61% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  25.036 ms |       0.12% |  22.455 ms |       0.06% | -2580.921 us | -10.31% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 135.595 us |       5.12% | 125.942 us |       4.23% |    -9.654 us |  -7.12% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 199.955 us |       1.80% | 208.398 us |       2.66% |     8.442 us |   4.22% |   SLOW   |
|  I64  |     1      |  10000000   |     1000     |   8.097 ms |       0.15% |   9.523 ms |       0.26% |     1.426 ms |  17.61% |   SLOW   |
|  I64  |     1      |   100000    |    100000    | 222.752 us |       2.14% | 238.406 us |       3.30% |    15.654 us |   7.03% |   SLOW   |
|  I64  |     1      |  10000000   |    100000    |   9.666 ms |       0.13% |  11.455 ms |       0.18% |     1.789 ms |  18.51% |   SLOW   |
|  I64  |     1      |  10000000   |   10000000   |  12.544 ms |       0.14% |  14.470 ms |       0.18% |     1.926 ms |  15.36% |   SLOW   |

# mixed_full_join

## [0] Quadro RTX 8000

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 183.306 us |       2.09% | 175.219 us |       4.78% |    -8.087 us |  -4.41% |   FAST   |
|  I32  |     0      |   100000    |     1000     | 200.780 us |       1.75% | 192.889 us |       4.09% |    -7.892 us |  -3.93% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   6.115 ms |       0.75% |   5.435 ms |       0.65% |  -679.983 us | -11.12% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 255.427 us |       4.22% | 233.911 us |       3.01% |   -21.516 us |  -8.42% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   7.012 ms |       0.60% |   5.880 ms |       0.65% | -1132.396 us | -16.15% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |  26.471 ms |       0.07% |  23.977 ms |       0.10% | -2493.731 us |  -9.42% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 185.178 us |       3.35% | 182.850 us |       3.82% |    -2.328 us |  -1.26% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 259.109 us |       2.76% | 264.232 us |       2.00% |     5.123 us |   1.98% |   SAME   |
|  I32  |     1      |  10000000   |     1000     |   8.437 ms |       0.17% |   9.724 ms |       0.14% |     1.287 ms |  15.25% |   SLOW   |
|  I32  |     1      |   100000    |    100000    | 283.822 us |       1.81% | 293.303 us |       2.88% |     9.481 us |   3.34% |   SLOW   |
|  I32  |     1      |  10000000   |    100000    |   9.916 ms |       0.29% |  11.737 ms |       0.28% |     1.821 ms |  18.37% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |  13.402 ms |       0.24% |  15.338 ms |       0.25% |     1.936 ms |  14.44% |   SLOW   |
|  I64  |     0      |    1000     |     1000     | 189.618 us |       6.23% | 176.477 us |       4.31% |   -13.142 us |  -6.93% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 224.937 us |       2.77% | 205.971 us |       5.51% |   -18.966 us |  -8.43% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   7.279 ms |       0.69% |   6.167 ms |       0.88% | -1112.963 us | -15.29% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 273.106 us |       3.99% | 249.683 us |       4.55% |   -23.423 us |  -8.58% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   7.965 ms |       0.60% |   6.508 ms |       0.59% | -1456.692 us | -18.29% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |  26.797 ms |       0.08% |  24.226 ms |       0.05% | -2570.732 us |  -9.59% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 194.283 us |       3.36% | 179.971 us |       3.20% |   -14.311 us |  -7.37% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 259.852 us |       1.69% | 266.651 us |       1.91% |     6.798 us |   2.62% |   SLOW   |
|  I64  |     1      |  10000000   |     1000     |   8.503 ms |       0.32% |   9.908 ms |       0.17% |     1.406 ms |  16.53% |   SLOW   |
|  I64  |     1      |   100000    |    100000    | 285.125 us |       2.18% | 299.434 us |       2.56% |    14.309 us |   5.02% |   SLOW   |
|  I64  |     1      |  10000000   |    100000    |  10.084 ms |       0.23% |  11.854 ms |       0.19% |     1.770 ms |  17.56% |   SLOW   |
|  I64  |     1      |  10000000   |   10000000   |  13.575 ms |       0.45% |  15.428 ms |       0.15% |     1.854 ms |  13.66% |   SLOW   |

# high_multiplicity_inner_join

## [0] Quadro RTX 8000

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 212.725 us |      26.48% | 182.441 us |       3.41% |    -30.285 us | -14.24% |   FAST   |
|   100000    |    100000    |       20       | 285.606 us |       1.15% | 240.797 us |       1.75% |    -44.809 us | -15.69% |   FAST   |
|   100000    |    100000    |       50       | 502.428 us |       1.27% | 402.944 us |       1.51% |    -99.484 us | -19.80% |   FAST   |
|   100000    |    100000    |      100       | 836.903 us |       0.86% | 666.814 us |       1.35% |   -170.089 us | -20.32% |   FAST   |
|   100000    |    100000    |      1000      |   6.358 ms |       0.65% |   4.973 ms |       0.86% |  -1384.349 us | -21.78% |   FAST   |
|   100000    |    100000    |     10000      |  57.323 ms |       0.70% |  44.073 ms |       0.93% | -13250.232 us | -23.12% |   FAST   |
|   100000    |    100000    |     50000      | 242.153 ms |       0.44% | 187.165 ms |       0.41% | -54987.339 us | -22.71% |   FAST   |

# high_multiplicity_left_join

## [0] Quadro RTX 8000

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 230.774 us |       2.47% | 191.411 us |       2.18% |    -39.363 us | -17.06% |   FAST   |
|   100000    |    100000    |       20       | 310.166 us |       1.51% | 246.603 us |       2.02% |    -63.563 us | -20.49% |   FAST   |
|   100000    |    100000    |       50       | 546.044 us |       1.49% | 420.372 us |       1.29% |   -125.672 us | -23.01% |   FAST   |
|   100000    |    100000    |      100       | 915.736 us |       0.83% | 692.836 us |       1.15% |   -222.900 us | -24.34% |   FAST   |
|   100000    |    100000    |      1000      |   6.969 ms |       0.69% |   5.173 ms |       0.95% |  -1796.354 us | -25.78% |   FAST   |
|   100000    |    100000    |     10000      |  63.100 ms |       0.76% |  45.847 ms |       1.04% | -17252.992 us | -27.34% |   FAST   |
|   100000    |    100000    |     50000      | 265.670 ms |       0.31% | 194.377 ms |       0.59% | -71293.098 us | -26.84% |   FAST   |

# high_multiplicity_full_join

## [0] Quadro RTX 8000

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 300.377 us |       2.25% | 261.127 us |       2.73% |    -39.250 us | -13.07% |   FAST   |
|   100000    |    100000    |       20       | 399.842 us |       1.32% | 333.505 us |       1.29% |    -66.336 us | -16.59% |   FAST   |
|   100000    |    100000    |       50       | 629.612 us |       1.80% | 501.980 us |       2.05% |   -127.632 us | -20.27% |   FAST   |
|   100000    |    100000    |      100       |   1.048 ms |       1.12% | 828.154 us |       1.54% |   -219.448 us | -20.95% |   FAST   |
|   100000    |    100000    |      1000      |   8.112 ms |       0.68% |   6.331 ms |       0.87% |  -1781.649 us | -21.96% |   FAST   |
|   100000    |    100000    |     10000      |  72.823 ms |       0.49% |  55.674 ms |       0.70% | -17149.294 us | -23.55% |   FAST   |
|   100000    |    100000    |     50000      | 292.234 ms |       0.43% | 221.459 ms |       0.49% | -70774.914 us | -24.22% |   FAST   |

PointKernel avatar May 29 '25 01:05 PointKernel

/ok to test 19eaae1

PointKernel avatar May 29 '25 01:05 PointKernel

/ok to test

PointKernel avatar May 30 '25 18:05 PointKernel

@PointKernel Can you quantify the impact on binary size and compile time?

bdice avatar Jun 02 '25 21:06 bdice

Hello I would like to suggest reviewers: @lamarrr would you please review the cpp content? @Matt711 would you please review review the python test changes? @bdice would you please provide a cmake review?

GregoryKimball avatar Jun 04 '25 18:06 GregoryKimball

I’ve updated the PR to include only the hash join changes. @davidwendt @bdice could you please take another look?

PointKernel avatar Jun 17 '25 18:06 PointKernel

/merge

PointKernel avatar Jun 18 '25 21:06 PointKernel

Benchmark numbers on H100

# left_anti_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |      Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-----------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  64.752 us |       2.47% |  63.771 us |       2.56% | -0.981 us |  -1.52% |   SAME   |
|  I32  |     0      |   100000    |     1000     |  67.385 us |       2.31% |  68.975 us |       2.48% |  1.589 us |   2.36% |   SLOW   |
|  I32  |     0      |  10000000   |     1000     | 399.233 us |       0.33% | 402.619 us |       0.33% |  3.386 us |   0.85% |   SLOW   |
|  I32  |     0      |   100000    |    100000    |  80.411 us |       1.83% |  79.460 us |       2.21% | -0.951 us |  -1.18% |   SAME   |
|  I32  |     0      |  10000000   |    100000    | 489.105 us |       0.27% | 485.330 us |       0.28% | -3.775 us |  -0.77% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   1.462 ms |       0.11% |   1.459 ms |       0.14% | -3.033 us |  -0.21% |   FAST   |
|  I32  |     1      |    1000     |     1000     |  62.268 us |       2.89% |  63.376 us |       2.33% |  1.108 us |   1.78% |   SAME   |
|  I32  |     1      |   100000    |     1000     |  65.514 us |       2.63% |  63.053 us |       1.61% | -2.461 us |  -3.76% |   FAST   |
|  I32  |     1      |  10000000   |     1000     | 280.226 us |       0.48% | 279.387 us |       0.64% | -0.838 us |  -0.30% |   SAME   |
|  I32  |     1      |   100000    |    100000    |  67.945 us |       2.03% |  68.777 us |       2.45% |  0.832 us |   1.22% |   SAME   |
|  I32  |     1      |  10000000   |    100000    | 301.159 us |       0.71% | 299.179 us |       0.46% | -1.980 us |  -0.66% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   | 677.538 us |       0.50% | 676.185 us |       0.26% | -1.352 us |  -0.20% |   SAME   |
|  I64  |     0      |    1000     |     1000     |  66.747 us |       2.05% |  68.394 us |       2.23% |  1.646 us |   2.47% |   SLOW   |
|  I64  |     0      |   100000    |     1000     |  71.676 us |       2.51% |  70.521 us |       2.09% | -1.156 us |  -1.61% |   SAME   |
|  I64  |     0      |  10000000   |     1000     | 446.867 us |       0.33% | 445.680 us |       0.43% | -1.187 us |  -0.27% |   SAME   |
|  I64  |     0      |   100000    |    100000    |  80.258 us |       1.51% |  81.683 us |       2.09% |  1.425 us |   1.78% |   SLOW   |
|  I64  |     0      |  10000000   |    100000    | 494.513 us |       0.39% | 493.664 us |       0.28% | -0.849 us |  -0.17% |   SAME   |
|  I64  |     0      |  10000000   |   10000000   |   1.546 ms |       0.09% |   1.544 ms |       0.13% | -2.124 us |  -0.14% |   FAST   |
|  I64  |     1      |    1000     |     1000     |  62.029 us |       2.66% |  62.062 us |       2.31% |  0.033 us |   0.05% |   SAME   |
|  I64  |     1      |   100000    |     1000     |  65.413 us |       2.90% |  63.870 us |       1.75% | -1.543 us |  -2.36% |   FAST   |
|  I64  |     1      |  10000000   |     1000     | 281.434 us |       0.55% | 281.008 us |       0.67% | -0.427 us |  -0.15% |   SAME   |
|  I64  |     1      |   100000    |    100000    |  67.633 us |       2.04% |  68.468 us |       2.53% |  0.835 us |   1.23% |   SAME   |
|  I64  |     1      |  10000000   |    100000    | 302.896 us |       0.66% | 301.241 us |       0.47% | -1.655 us |  -0.55% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   | 691.634 us |       0.23% | 689.851 us |       0.27% | -1.783 us |  -0.26% |   FAST   |

# left_semi_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |      Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-----------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  65.980 us |       3.68% |  63.969 us |       1.79% | -2.011 us |  -3.05% |   FAST   |
|  I32  |     0      |   100000    |     1000     |  67.757 us |       2.57% |  68.599 us |       2.51% |  0.842 us |   1.24% |   SAME   |
|  I32  |     0      |  10000000   |     1000     | 398.355 us |       0.29% | 398.659 us |       0.28% |  0.304 us |   0.08% |   SAME   |
|  I32  |     0      |   100000    |    100000    |  78.095 us |       1.88% |  79.376 us |       2.16% |  1.281 us |   1.64% |   SAME   |
|  I32  |     0      |  10000000   |    100000    | 483.003 us |       0.42% | 481.651 us |       0.29% | -1.352 us |  -0.28% |   SAME   |
|  I32  |     0      |  10000000   |   10000000   |   1.459 ms |       0.09% |   1.456 ms |       0.13% | -3.672 us |  -0.25% |   FAST   |
|  I32  |     1      |    1000     |     1000     |  62.495 us |       2.74% |  63.610 us |       2.18% |  1.116 us |   1.78% |   SAME   |
|  I32  |     1      |   100000    |     1000     |  65.487 us |       2.47% |  63.094 us |       1.50% | -2.392 us |  -3.65% |   FAST   |
|  I32  |     1      |  10000000   |     1000     | 274.340 us |       0.46% | 273.465 us |       0.61% | -0.875 us |  -0.32% |   SAME   |
|  I32  |     1      |   100000    |    100000    |  68.096 us |       2.40% |  68.728 us |       2.41% |  0.632 us |   0.93% |   SAME   |
|  I32  |     1      |  10000000   |    100000    | 294.995 us |       0.64% | 293.403 us |       0.41% | -1.591 us |  -0.54% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   | 672.693 us |       0.24% | 671.058 us |       0.27% | -1.635 us |  -0.24% |   FAST   |
|  I64  |     0      |    1000     |     1000     |  67.214 us |       2.17% |  68.835 us |       2.13% |  1.621 us |   2.41% |   SLOW   |
|  I64  |     0      |   100000    |     1000     |  71.196 us |       2.52% |  70.102 us |       1.44% | -1.094 us |  -1.54% |   FAST   |
|  I64  |     0      |  10000000   |     1000     | 443.007 us |       0.28% | 441.638 us |       0.38% | -1.369 us |  -0.31% |   FAST   |
|  I64  |     0      |   100000    |    100000    |  80.093 us |       1.62% |  81.735 us |       4.48% |  1.642 us |   2.05% |   SLOW   |
|  I64  |     0      |  10000000   |    100000    | 492.726 us |       0.75% | 490.341 us |       0.24% | -2.385 us |  -0.48% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |   1.543 ms |       0.11% |   1.541 ms |       0.13% | -2.405 us |  -0.16% |   FAST   |
|  I64  |     1      |    1000     |     1000     |  62.181 us |       6.58% |  63.453 us |       2.43% |  1.272 us |   2.05% |   SAME   |
|  I64  |     1      |   100000    |     1000     |  65.654 us |       3.04% |  63.779 us |       1.57% | -1.876 us |  -2.86% |   FAST   |
|  I64  |     1      |  10000000   |     1000     | 276.497 us |       6.88% | 274.579 us |       0.61% | -1.918 us |  -0.69% |   FAST   |
|  I64  |     1      |   100000    |    100000    |  69.699 us |       2.18% |  68.147 us |       2.45% | -1.552 us |  -2.23% |   FAST   |
|  I64  |     1      |  10000000   |    100000    | 297.413 us |       0.45% | 295.695 us |       0.37% | -1.718 us |  -0.58% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   | 685.351 us |       0.28% | 685.367 us |       0.26% |  0.016 us |   0.00% |   SAME   |

# conditional_inner_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |   1.267 ms |       0.11% |   1.273 ms |       0.08% |   6.377 us |   0.50% |   SLOW   |
|  I32  |     0      |   100000    |     1000     |   1.494 ms |       0.20% |   1.495 ms |       0.26% |   0.693 us |   0.05% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 143.823 ms |       0.01% | 143.809 ms |       0.01% | -13.220 us |  -0.01% |   FAST   |
|  I32  |     1      |    1000     |     1000     |   1.623 ms |       0.10% |   1.629 ms |       0.10% |   5.644 us |   0.35% |   SLOW   |
|  I32  |     1      |   100000    |     1000     |   2.065 ms |       0.10% |   2.063 ms |       0.13% |  -1.850 us |  -0.09% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 200.703 ms |       0.00% | 200.684 ms |       0.00% | -18.789 us |  -0.01% |   FAST   |
|  I64  |     0      |    1000     |     1000     |   1.322 ms |       0.12% |   1.321 ms |       0.09% |  -1.315 us |  -0.10% |   FAST   |
|  I64  |     0      |   100000    |     1000     |   1.509 ms |       0.10% |   1.507 ms |       0.07% |  -1.603 us |  -0.11% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 144.837 ms |       0.01% | 144.820 ms |       0.01% | -16.492 us |  -0.01% |   FAST   |
|  I64  |     1      |    1000     |     1000     |   1.692 ms |       0.12% |   1.692 ms |       0.20% |  -0.543 us |  -0.03% |   SAME   |
|  I64  |     1      |   100000    |     1000     |   2.068 ms |       0.08% |   2.067 ms |       0.09% |  -1.953 us |  -0.09% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 200.765 ms |       0.01% | 200.747 ms |       0.00% | -18.270 us |  -0.01% |   FAST   |

# conditional_left_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |   1.267 ms |       0.14% |   1.273 ms |       0.11% |   6.666 us |   0.53% |   SLOW   |
|  I32  |     0      |   100000    |     1000     |   1.494 ms |       1.10% |   1.495 ms |       0.35% |   0.710 us |   0.05% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 143.808 ms |       0.01% | 143.801 ms |       0.01% |  -6.660 us |  -0.00% |   SAME   |
|  I32  |     1      |    1000     |     1000     |   1.623 ms |       0.09% |   1.629 ms |       0.11% |   5.596 us |   0.34% |   SLOW   |
|  I32  |     1      |   100000    |     1000     |   2.065 ms |       0.09% |   2.063 ms |       0.10% |  -1.677 us |  -0.08% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 200.707 ms |       0.01% | 200.675 ms |       0.00% | -32.009 us |  -0.02% |   FAST   |
|  I64  |     0      |    1000     |     1000     |   1.322 ms |       0.09% |   1.321 ms |       0.16% |  -1.016 us |  -0.08% |   SAME   |
|  I64  |     0      |   100000    |     1000     |   1.508 ms |       0.08% |   1.509 ms |       0.50% |   0.462 us |   0.03% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 144.829 ms |       0.01% | 144.815 ms |       0.01% | -14.372 us |  -0.01% |   FAST   |
|  I64  |     1      |    1000     |     1000     |   1.692 ms |       0.11% |   1.692 ms |       0.20% |   0.552 us |   0.03% |   SAME   |
|  I64  |     1      |   100000    |     1000     |   2.068 ms |       0.07% |   2.067 ms |       0.07% |  -1.080 us |  -0.05% |   SAME   |
|  I64  |     1      |   100000    |    100000    | 200.764 ms |       0.01% | 200.745 ms |       0.01% | -18.889 us |  -0.01% |   FAST   |

# inner_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |         Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|--------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  98.889 us |       2.23% |  97.684 us |       6.83% |    -1.206 us |  -1.22% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 112.072 us |       2.32% | 103.432 us |       2.45% |    -8.640 us |  -7.71% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   2.200 ms |       0.70% |   1.532 ms |       0.66% |  -668.182 us | -30.37% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 120.750 us |       1.08% | 116.898 us |       3.48% |    -3.852 us |  -3.19% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   2.488 ms |       0.17% |   1.685 ms |       0.11% |  -802.724 us | -32.26% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   3.791 ms |       0.09% |   2.768 ms |       0.11% | -1023.345 us | -26.99% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 108.165 us |       2.73% | 108.075 us |       1.40% |    -0.090 us |  -0.08% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 116.140 us |       3.44% | 111.876 us |       2.75% |    -4.264 us |  -3.67% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   1.453 ms |       0.24% |   1.030 ms |       0.43% |  -423.842 us | -29.16% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 125.665 us |       2.93% | 117.982 us |       1.98% |    -7.682 us |  -6.11% |   FAST   |
|  I32  |     1      |  10000000   |    100000    |   1.528 ms |       0.15% |   1.077 ms |       0.17% |  -450.668 us | -29.50% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   2.148 ms |       0.15% |   1.492 ms |       0.24% |  -655.789 us | -30.53% |   FAST   |
|  I64  |     0      |    1000     |     1000     | 100.507 us |       2.49% |  95.986 us |       3.55% |    -4.521 us |  -4.50% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 113.899 us |       2.27% | 105.193 us |       3.02% |    -8.706 us |  -7.64% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   2.241 ms |       0.64% |   1.588 ms |       0.59% |  -653.250 us | -29.15% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 123.646 us |       2.69% | 112.093 us |       3.62% |   -11.553 us |  -9.34% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   2.517 ms |       0.19% |   1.697 ms |       0.15% |  -819.997 us | -32.58% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |   3.844 ms |       0.09% |   2.805 ms |       0.12% | -1039.232 us | -27.04% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 110.541 us |       1.42% | 105.805 us |       3.12% |    -4.735 us |  -4.28% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 118.239 us |       3.08% | 109.906 us |       1.32% |    -8.333 us |  -7.05% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   1.464 ms |       0.26% |   1.046 ms |       0.51% |  -417.779 us | -28.54% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 128.176 us |       2.11% | 116.603 us |       2.61% |   -11.572 us |  -9.03% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   1.550 ms |       0.20% |   1.075 ms |       0.30% |  -474.436 us | -30.61% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   2.174 ms |       0.20% |   1.502 ms |       0.29% |  -671.547 us | -30.89% |   FAST   |

# left_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |        Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-------------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  97.557 us |       2.70% |  98.358 us |       2.71% |    0.801 us |   0.82% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 115.334 us |       2.07% | 112.180 us |       1.70% |   -3.155 us |  -2.74% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   2.403 ms |       0.72% |   1.728 ms |       0.67% | -674.940 us | -28.09% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 124.930 us |       3.00% | 120.735 us |       1.06% |   -4.195 us |  -3.36% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   2.700 ms |       0.08% |   1.909 ms |       0.16% | -791.569 us | -29.31% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   4.003 ms |       0.10% |   3.025 ms |       0.08% | -978.231 us | -24.44% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 104.551 us |       2.66% | 108.406 us |       1.40% |    3.855 us |   3.69% |   SLOW   |
|  I32  |     1      |   100000    |     1000     | 123.081 us |       2.59% | 116.376 us |       3.61% |   -6.704 us |  -5.45% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   1.621 ms |       0.13% |   1.200 ms |       0.30% | -420.638 us | -25.95% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 129.187 us |       1.67% | 124.204 us |       2.95% |   -4.983 us |  -3.86% |   FAST   |
|  I32  |     1      |  10000000   |    100000    |   1.695 ms |       0.20% |   1.247 ms |       0.30% | -448.426 us | -26.45% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   2.323 ms |       0.25% |   1.689 ms |       0.15% | -634.457 us | -27.31% |   FAST   |
|  I64  |     0      |    1000     |     1000     | 101.975 us |       3.28% |  96.413 us |       3.25% |   -5.562 us |  -5.45% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 116.858 us |       1.27% | 114.286 us |       2.19% |   -2.571 us |  -2.20% |   FAST   |
|  I64  |     0      |  10000000   |     1000     |   2.453 ms |       0.69% |   1.787 ms |       0.61% | -666.584 us | -27.17% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 130.565 us |       2.67% | 121.062 us |       1.21% |   -9.502 us |  -7.28% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   2.729 ms |       0.11% |   1.933 ms |       0.15% | -796.272 us | -29.18% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |   4.058 ms |       0.08% |   3.061 ms |       0.13% | -997.624 us | -24.58% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 109.959 us |       1.43% | 105.880 us |       3.08% |   -4.079 us |  -3.71% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 123.521 us |       2.76% | 117.225 us |       3.05% |   -6.296 us |  -5.10% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   1.623 ms |       0.13% |   1.213 ms |       0.31% | -409.787 us | -25.25% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 128.201 us |       2.54% | 124.109 us |       3.28% |   -4.092 us |  -3.19% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   1.712 ms |       0.21% |   1.251 ms |       0.43% | -461.026 us | -26.92% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   2.345 ms |       0.15% |   1.694 ms |       0.21% | -651.661 us | -27.79% |   FAST   |

# full_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |        Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 172.062 us |       3.26% | 169.895 us |       2.28% |   -2.166 us |  -1.26% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 156.776 us |       1.11% | 156.703 us |       2.46% |   -0.073 us |  -0.05% |   SAME   |
|  I32  |     0      |  10000000   |     1000     |   2.799 ms |       0.58% |   2.145 ms |       0.52% | -653.536 us | -23.35% |   FAST   |
|  I32  |     0      |   100000    |    100000    | 200.968 us |       1.94% | 193.674 us |       2.34% |   -7.293 us |  -3.63% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   2.807 ms |       0.09% |   2.008 ms |       0.19% | -798.921 us | -28.46% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   4.365 ms |       0.11% |   3.382 ms |       0.16% | -982.983 us | -22.52% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 175.747 us |       2.71% | 171.027 us |       1.58% |   -4.720 us |  -2.69% |   FAST   |
|  I32  |     1      |   100000    |     1000     | 195.665 us |       2.77% | 188.434 us |       3.08% |   -7.231 us |  -3.70% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   1.798 ms |       0.13% |   1.382 ms |       0.30% | -415.417 us | -23.11% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 198.731 us |       2.55% | 200.281 us |       2.16% |    1.550 us |   0.78% |   SAME   |
|  I32  |     1      |  10000000   |    100000    |   1.845 ms |       0.23% |   1.406 ms |       0.23% | -438.600 us | -23.78% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   |   2.606 ms |       0.20% |   1.971 ms |       0.17% | -634.458 us | -24.35% |   FAST   |
|  I64  |     0      |    1000     |     1000     | 172.981 us |       2.91% | 166.994 us |       3.15% |   -5.987 us |  -3.46% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 154.324 us |       1.18% | 154.750 us |       1.17% |    0.426 us |   0.28% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   2.742 ms |       0.62% |   2.076 ms |       0.60% | -665.403 us | -24.27% |   FAST   |
|  I64  |     0      |   100000    |    100000    | 200.973 us |       2.52% | 196.987 us |       0.97% |   -3.986 us |  -1.98% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   2.830 ms |       0.12% |   2.039 ms |       0.14% | -790.519 us | -27.94% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |   4.421 ms |       0.09% |   3.421 ms |       0.12% | -999.718 us | -22.61% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 175.263 us |       2.02% | 171.417 us |       2.83% |   -3.847 us |  -2.19% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 194.338 us |       2.75% | 187.383 us |       3.10% |   -6.955 us |  -3.58% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   1.803 ms |       0.13% |   1.389 ms |       0.23% | -414.394 us | -22.98% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 206.616 us |       0.99% | 196.541 us |       3.11% |  -10.075 us |  -4.88% |   FAST   |
|  I64  |     1      |  10000000   |    100000    |   1.870 ms |       0.21% |   1.404 ms |       0.41% | -465.941 us | -24.92% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   2.631 ms |       0.17% |   1.978 ms |       0.34% | -652.346 us | -24.80% |   FAST   |

# mixed_inner_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 169.404 us |       1.13% | 167.009 us |       1.52% |  -2.395 us |  -1.41% |   FAST   |
|  I32  |     0      |   100000    |     1000     | 189.911 us |       1.05% | 188.780 us |       1.30% |  -1.131 us |  -0.60% |   SAME   |
|  I32  |     0      |  10000000   |     1000     |   3.471 ms |       0.49% |   3.471 ms |       0.43% |  -0.190 us |  -0.01% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 206.390 us |       1.93% | 207.167 us |       1.36% |   0.777 us |   0.38% |   SAME   |
|  I32  |     0      |  10000000   |    100000    |   4.108 ms |       0.09% |   4.107 ms |       0.10% |  -0.758 us |  -0.02% |   SAME   |
|  I32  |     0      |  10000000   |   10000000   |   5.960 ms |       0.05% |   5.958 ms |       0.04% |  -1.661 us |  -0.03% |   SAME   |
|  I32  |     1      |    1000     |     1000     | 160.757 us |       1.17% | 155.915 us |       2.77% |  -4.842 us |  -3.01% |   FAST   |
|  I32  |     1      |   100000    |     1000     | 173.471 us |       1.99% | 169.557 us |       1.11% |  -3.914 us |  -2.26% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   2.349 ms |       0.15% |   2.357 ms |       0.24% |   7.661 us |   0.33% |   SLOW   |
|  I32  |     1      |   100000    |    100000    | 181.431 us |       2.15% | 180.516 us |       1.17% |  -0.915 us |  -0.50% |   SAME   |
|  I32  |     1      |  10000000   |    100000    |   2.543 ms |       0.12% |   2.547 ms |       0.10% |   4.140 us |   0.16% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |   3.202 ms |       0.11% |   3.199 ms |       0.09% |  -3.037 us |  -0.09% |   FAST   |
|  I64  |     0      |    1000     |     1000     | 167.445 us |       2.31% | 162.592 us |       1.55% |  -4.853 us |  -2.90% |   FAST   |
|  I64  |     0      |   100000    |     1000     | 194.938 us |       2.01% | 198.624 us |       2.32% |   3.686 us |   1.89% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   3.742 ms |       0.50% |   3.742 ms |       0.49% |   0.096 us |   0.00% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 211.842 us |       1.09% | 210.642 us |       1.07% |  -1.200 us |  -0.57% |   SAME   |
|  I64  |     0      |  10000000   |    100000    |   4.220 ms |       0.09% |   4.220 ms |       0.09% |  -0.011 us |  -0.00% |   SAME   |
|  I64  |     0      |  10000000   |   10000000   |   6.082 ms |       0.06% |   6.081 ms |       0.06% |  -1.401 us |  -0.02% |   SAME   |
|  I64  |     1      |    1000     |     1000     | 172.100 us |       3.62% | 172.410 us |       3.29% |   0.309 us |   0.18% |   SAME   |
|  I64  |     1      |   100000    |     1000     | 183.254 us |       2.28% | 170.778 us |       1.87% | -12.476 us |  -6.81% |   FAST   |
|  I64  |     1      |  10000000   |     1000     |   2.365 ms |       0.16% |   2.357 ms |       0.16% |  -8.359 us |  -0.35% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 184.168 us |       2.13% | 182.424 us |       2.18% |  -1.743 us |  -0.95% |   SAME   |
|  I64  |     1      |  10000000   |    100000    |   2.598 ms |       0.11% |   2.593 ms |       0.15% |  -5.560 us |  -0.21% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   3.243 ms |       0.14% |   3.240 ms |       0.12% |  -3.473 us |  -0.11% |   SAME   |

# mixed_left_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 173.913 us |       2.88% | 170.841 us |       3.30% |  -3.072 us |  -1.77% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 196.073 us |       2.26% | 190.393 us |       1.17% |  -5.680 us |  -2.90% |   FAST   |
|  I32  |     0      |  10000000   |     1000     |   3.844 ms |       0.48% |   3.839 ms |       0.48% |  -4.944 us |  -0.13% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 208.956 us |       0.93% | 208.966 us |       1.58% |   0.010 us |   0.00% |   SAME   |
|  I32  |     0      |  10000000   |    100000    |   4.525 ms |       0.09% |   4.526 ms |       0.11% |   0.480 us |   0.01% |   SAME   |
|  I32  |     0      |  10000000   |   10000000   |   6.383 ms |       0.06% |   6.381 ms |       0.05% |  -2.089 us |  -0.03% |   SAME   |
|  I32  |     1      |    1000     |     1000     | 158.346 us |       3.09% | 159.309 us |       1.28% |   0.963 us |   0.61% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 180.869 us |       1.35% | 184.208 us |       2.49% |   3.339 us |   1.85% |   SLOW   |
|  I32  |     1      |  10000000   |     1000     |   2.635 ms |       0.16% |   2.633 ms |       0.10% |  -2.269 us |  -0.09% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 188.925 us |       1.12% | 186.904 us |       2.53% |  -2.021 us |  -1.07% |   SAME   |
|  I32  |     1      |  10000000   |    100000    |   2.826 ms |       0.12% |   2.828 ms |       0.10% |   1.664 us |   0.06% |   SAME   |
|  I32  |     1      |  10000000   |   10000000   |   3.493 ms |       0.09% |   3.492 ms |       0.10% |  -0.580 us |  -0.02% |   SAME   |
|  I64  |     0      |    1000     |     1000     | 176.286 us |       2.55% | 176.604 us |       2.29% |   0.318 us |   0.18% |   SAME   |
|  I64  |     0      |   100000    |     1000     | 204.047 us |       1.14% | 204.121 us |       1.35% |   0.074 us |   0.04% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   4.097 ms |       0.50% |   4.099 ms |       0.50% |   2.035 us |   0.05% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 215.613 us |       2.20% | 218.323 us |       1.66% |   2.710 us |   1.26% |   SAME   |
|  I64  |     0      |  10000000   |    100000    |   4.627 ms |       0.11% |   4.626 ms |       0.10% |  -0.961 us |  -0.02% |   SAME   |
|  I64  |     0      |  10000000   |   10000000   |   6.498 ms |       0.05% |   6.495 ms |       0.05% |  -2.906 us |  -0.04% |   SAME   |
|  I64  |     1      |    1000     |     1000     | 177.529 us |       1.25% | 160.708 us |       3.42% | -16.821 us |  -9.48% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 180.823 us |       1.71% | 179.936 us |       1.32% |  -0.887 us |  -0.49% |   SAME   |
|  I64  |     1      |  10000000   |     1000     |   2.641 ms |       0.12% |   2.643 ms |       0.18% |   2.045 us |   0.08% |   SAME   |
|  I64  |     1      |   100000    |    100000    | 190.131 us |       0.98% | 189.234 us |       1.04% |  -0.898 us |  -0.47% |   SAME   |
|  I64  |     1      |  10000000   |    100000    |   2.886 ms |       0.10% |   2.884 ms |       0.14% |  -2.408 us |  -0.08% |   SAME   |
|  I64  |     1      |  10000000   |   10000000   |   3.539 ms |       0.11% |   3.535 ms |       0.10% |  -3.711 us |  -0.10% |   FAST   |

# mixed_full_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 246.432 us |       2.92% | 240.782 us |       2.67% |  -5.651 us |  -2.29% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 237.450 us |       1.90% | 240.562 us |       2.05% |   3.112 us |   1.31% |   SAME   |
|  I32  |     0      |  10000000   |     1000     |   4.266 ms |       0.43% |   4.272 ms |       0.41% |   6.279 us |   0.15% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 289.973 us |       0.89% | 281.096 us |       2.11% |  -8.877 us |  -3.06% |   FAST   |
|  I32  |     0      |  10000000   |    100000    |   4.637 ms |       0.09% |   4.629 ms |       0.11% |  -8.231 us |  -0.18% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   6.752 ms |       0.06% |   6.745 ms |       0.08% |  -6.840 us |  -0.10% |   FAST   |
|  I32  |     1      |    1000     |     1000     | 228.968 us |       2.24% | 236.553 us |       1.07% |   7.585 us |   3.31% |   SLOW   |
|  I32  |     1      |   100000    |     1000     | 261.705 us |       2.49% | 252.965 us |       1.22% |  -8.740 us |  -3.34% |   FAST   |
|  I32  |     1      |  10000000   |     1000     |   2.818 ms |       0.12% |   2.810 ms |       0.18% |  -7.476 us |  -0.27% |   FAST   |
|  I32  |     1      |   100000    |    100000    | 261.983 us |       2.23% | 270.985 us |       1.06% |   9.002 us |   3.44% |   SLOW   |
|  I32  |     1      |  10000000   |    100000    |   2.978 ms |       0.11% |   2.992 ms |       0.11% |  13.747 us |   0.46% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |   3.784 ms |       0.14% |   3.781 ms |       0.11% |  -2.500 us |  -0.07% |   SAME   |
|  I64  |     0      |    1000     |     1000     | 249.766 us |       2.56% | 248.032 us |       2.62% |  -1.735 us |  -0.69% |   SAME   |
|  I64  |     0      |   100000    |     1000     | 245.441 us |       0.98% | 244.841 us |       1.30% |  -0.600 us |  -0.24% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   4.387 ms |       0.46% |   4.388 ms |       0.47% |   1.174 us |   0.03% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 296.913 us |       1.76% | 297.229 us |       1.48% |   0.316 us |   0.11% |   SAME   |
|  I64  |     0      |  10000000   |    100000    |   4.738 ms |       0.10% |   4.736 ms |       0.10% |  -2.250 us |  -0.05% |   SAME   |
|  I64  |     0      |  10000000   |   10000000   |   6.866 ms |       0.07% |   6.861 ms |       0.06% |  -5.254 us |  -0.08% |   FAST   |
|  I64  |     1      |    1000     |     1000     | 245.200 us |       2.15% | 232.682 us |       2.96% | -12.518 us |  -5.11% |   FAST   |
|  I64  |     1      |   100000    |     1000     | 256.618 us |       1.79% | 258.823 us |       2.57% |   2.205 us |   0.86% |   SAME   |
|  I64  |     1      |  10000000   |     1000     |   2.820 ms |       0.11% |   2.828 ms |       0.13% |   8.350 us |   0.30% |   SLOW   |
|  I64  |     1      |   100000    |    100000    | 265.319 us |       2.59% | 261.215 us |       2.34% |  -4.104 us |  -1.55% |   SAME   |
|  I64  |     1      |  10000000   |    100000    |   3.052 ms |       0.11% |   3.036 ms |       0.13% | -15.544 us |  -0.51% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   |   3.830 ms |       0.10% |   3.823 ms |       0.15% |  -6.449 us |  -0.17% |   FAST   |

# mixed_left_semi_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |       Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|------------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 121.727 us |       2.43% | 121.564 us |       2.52% |  -0.163 us |  -0.13% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 131.791 us |       1.18% | 132.079 us |       1.31% |   0.288 us |   0.22% |   SAME   |
|  I32  |     0      |  10000000   |     1000     |   1.581 ms |       0.28% |   1.581 ms |       0.23% |  -0.152 us |  -0.01% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 150.335 us |       1.20% | 148.799 us |       2.14% |  -1.536 us |  -1.02% |   SAME   |
|  I32  |     0      |  10000000   |    100000    |   1.815 ms |       0.12% |   1.804 ms |       0.12% | -11.575 us |  -0.64% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   3.534 ms |       0.06% |   3.534 ms |       0.11% |   0.340 us |   0.01% |   SAME   |
|  I32  |     1      |    1000     |     1000     | 136.028 us |       1.26% | 135.457 us |       2.49% |  -0.572 us |  -0.42% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 151.429 us |       2.68% | 150.758 us |       2.70% |  -0.671 us |  -0.44% |   SAME   |
|  I32  |     1      |  10000000   |     1000     |   1.494 ms |       0.43% |   1.488 ms |       0.42% |  -5.269 us |  -0.35% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 161.702 us |       1.12% | 159.997 us |       1.35% |  -1.705 us |  -1.05% |   SAME   |
|  I32  |     1      |  10000000   |    100000    |   1.353 ms |       0.18% |   1.360 ms |       0.21% |   7.641 us |   0.56% |   SLOW   |
|  I32  |     1      |  10000000   |   10000000   |   2.008 ms |       0.14% |   2.010 ms |       0.13% |   1.345 us |   0.07% |   SAME   |
|  I64  |     0      |    1000     |     1000     | 128.106 us |       2.33% | 126.385 us |       2.71% |  -1.720 us |  -1.34% |   SAME   |
|  I64  |     0      |   100000    |     1000     | 137.333 us |       1.16% | 137.724 us |       1.36% |   0.390 us |   0.28% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   1.665 ms |       0.21% |   1.665 ms |       0.21% |   0.265 us |   0.02% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 154.835 us |       1.12% | 152.940 us |       2.17% |  -1.895 us |  -1.22% |   FAST   |
|  I64  |     0      |  10000000   |    100000    |   1.894 ms |       0.11% |   1.901 ms |       0.11% |   7.192 us |   0.38% |   SLOW   |
|  I64  |     0      |  10000000   |   10000000   |   3.654 ms |       0.07% |   3.653 ms |       0.10% |  -1.121 us |  -0.03% |   SAME   |
|  I64  |     1      |    1000     |     1000     | 136.609 us |       1.60% | 143.878 us |       2.43% |   7.269 us |   5.32% |   SLOW   |
|  I64  |     1      |   100000    |     1000     | 150.824 us |       2.74% | 151.264 us |       2.87% |   0.440 us |   0.29% |   SAME   |
|  I64  |     1      |  10000000   |     1000     |   1.293 ms |       0.33% |   1.285 ms |       0.33% |  -7.284 us |  -0.56% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 158.371 us |       2.56% | 160.207 us |       2.46% |   1.836 us |   1.16% |   SAME   |
|  I64  |     1      |  10000000   |    100000    |   1.385 ms |       0.21% |   1.394 ms |       0.20% |   9.747 us |   0.70% |   SLOW   |
|  I64  |     1      |  10000000   |   10000000   |   2.031 ms |       0.19% |   2.035 ms |       0.10% |   4.534 us |   0.22% |   SLOW   |

# mixed_left_anti_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |      Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-----------|---------|----------|
|  I32  |     0      |    1000     |     1000     | 121.648 us |       2.42% | 120.942 us |       2.57% | -0.707 us |  -0.58% |   SAME   |
|  I32  |     0      |   100000    |     1000     | 132.197 us |       1.14% | 132.172 us |       1.19% | -0.024 us |  -0.02% |   SAME   |
|  I32  |     0      |  10000000   |     1000     |   1.587 ms |       0.22% |   1.587 ms |       0.24% |  0.501 us |   0.03% |   SAME   |
|  I32  |     0      |   100000    |    100000    | 150.935 us |       1.44% | 150.628 us |       1.21% | -0.307 us |  -0.20% |   SAME   |
|  I32  |     0      |  10000000   |    100000    |   1.821 ms |       0.14% |   1.815 ms |       0.13% | -6.632 us |  -0.36% |   FAST   |
|  I32  |     0      |  10000000   |   10000000   |   3.539 ms |       0.06% |   3.542 ms |       0.06% |  2.281 us |   0.06% |   SLOW   |
|  I32  |     1      |    1000     |     1000     | 143.310 us |       1.22% | 133.781 us |       1.58% | -9.530 us |  -6.65% |   FAST   |
|  I32  |     1      |   100000    |     1000     | 154.172 us |       2.57% | 150.805 us |       2.75% | -3.367 us |  -2.18% |   SAME   |
|  I32  |     1      |  10000000   |     1000     |   1.494 ms |       0.46% |   1.495 ms |       0.43% |  1.353 us |   0.09% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 158.756 us |       2.65% | 155.875 us |       2.75% | -2.881 us |  -1.81% |   SAME   |
|  I32  |     1      |  10000000   |    100000    |   1.361 ms |       0.20% |   1.360 ms |       0.23% | -0.600 us |  -0.04% |   SAME   |
|  I32  |     1      |  10000000   |   10000000   |   2.016 ms |       0.14% |   2.015 ms |       0.20% | -1.039 us |  -0.05% |   SAME   |
|  I64  |     0      |    1000     |     1000     | 127.699 us |       2.35% | 127.138 us |       2.38% | -0.561 us |  -0.44% |   SAME   |
|  I64  |     0      |   100000    |     1000     | 137.406 us |       1.24% | 138.000 us |       1.41% |  0.594 us |   0.43% |   SAME   |
|  I64  |     0      |  10000000   |     1000     |   1.670 ms |       0.20% |   1.669 ms |       0.21% | -0.643 us |  -0.04% |   SAME   |
|  I64  |     0      |   100000    |    100000    | 155.021 us |       1.29% | 154.869 us |       1.11% | -0.152 us |  -0.10% |   SAME   |
|  I64  |     0      |  10000000   |    100000    |   1.900 ms |       0.13% |   1.913 ms |       0.12% | 12.879 us |   0.68% |   SLOW   |
|  I64  |     0      |  10000000   |   10000000   |   3.659 ms |       0.08% |   3.661 ms |       0.06% |  2.117 us |   0.06% |   SAME   |
|  I64  |     1      |    1000     |     1000     | 136.481 us |       1.58% | 136.084 us |       1.40% | -0.396 us |  -0.29% |   SAME   |
|  I64  |     1      |   100000    |     1000     | 153.573 us |       2.74% | 151.880 us |       2.95% | -1.693 us |  -1.10% |   SAME   |
|  I64  |     1      |  10000000   |     1000     |   1.300 ms |       0.34% |   1.301 ms |       0.34% |  1.386 us |   0.11% |   SAME   |
|  I64  |     1      |   100000    |    100000    | 158.907 us |       2.62% | 157.956 us |       2.68% | -0.951 us |  -0.60% |   SAME   |
|  I64  |     1      |  10000000   |    100000    |   1.393 ms |       0.23% |   1.395 ms |       0.31% |  1.880 us |   0.13% |   SAME   |
|  I64  |     1      |  10000000   |   10000000   |   2.038 ms |       0.20% |   2.041 ms |       0.20% |  2.676 us |   0.13% |   SAME   |

# distinct_inner_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |      Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-----------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  76.019 us |       2.32% |  75.235 us |       2.31% | -0.784 us |  -1.03% |   SAME   |
|  I32  |     0      |   100000    |     1000     |  75.076 us |       1.44% |  74.974 us |       1.46% | -0.102 us |  -0.14% |   SAME   |
|  I32  |     0      |  10000000   |     1000     | 467.665 us |       0.47% | 467.945 us |       0.48% |  0.280 us |   0.06% |   SAME   |
|  I32  |     0      |   100000    |    100000    |  99.629 us |       1.95% |  99.058 us |       1.89% | -0.572 us |  -0.57% |   SAME   |
|  I32  |     0      |  10000000   |    100000    | 533.131 us |       0.36% | 532.458 us |       0.38% | -0.673 us |  -0.13% |   SAME   |
|  I32  |     0      |  10000000   |   10000000   |   1.452 ms |       0.16% |   1.452 ms |       0.16% |  0.137 us |   0.01% |   SAME   |
|  I32  |     1      |    1000     |     1000     | 108.776 us |       1.30% | 107.924 us |       1.89% | -0.852 us |  -0.78% |   SAME   |
|  I32  |     1      |   100000    |     1000     | 106.517 us |       3.03% | 110.927 us |       2.53% |  4.410 us |   4.14% |   SLOW   |
|  I32  |     1      |  10000000   |     1000     | 262.069 us |       3.22% | 260.614 us |       1.33% | -1.455 us |  -0.56% |   SAME   |
|  I32  |     1      |   100000    |    100000    | 114.123 us |       1.24% | 118.416 us |       2.49% |  4.293 us |   3.76% |   SLOW   |
|  I32  |     1      |  10000000   |    100000    | 276.321 us |       0.55% | 275.114 us |       0.52% | -1.207 us |  -0.44% |   SAME   |
|  I32  |     1      |  10000000   |   10000000   | 570.836 us |       0.43% | 570.083 us |       0.32% | -0.753 us |  -0.13% |   SAME   |
|  I64  |     0      |    1000     |     1000     |  70.681 us |       1.49% |  75.710 us |       1.40% |  5.028 us |   7.11% |   SLOW   |
|  I64  |     0      |   100000    |     1000     |  75.169 us |       2.72% |  73.470 us |       2.47% | -1.699 us |  -2.26% |   SAME   |
|  I64  |     0      |  10000000   |     1000     | 430.307 us |       0.36% | 425.791 us |       0.45% | -4.517 us |  -1.05% |   FAST   |
|  I64  |     0      |   100000    |    100000    |  98.016 us |       1.12% |  97.566 us |       1.12% | -0.450 us |  -0.46% |   SAME   |
|  I64  |     0      |  10000000   |    100000    | 540.791 us |       0.31% | 539.246 us |       0.27% | -1.546 us |  -0.29% |   FAST   |
|  I64  |     0      |  10000000   |   10000000   |   1.487 ms |       0.11% |   1.486 ms |       0.11% | -1.011 us |  -0.07% |   SAME   |
|  I64  |     1      |    1000     |     1000     | 105.519 us |       8.66% | 102.742 us |       3.12% | -2.777 us |  -2.63% |   SAME   |
|  I64  |     1      |   100000    |     1000     | 108.336 us |       3.12% | 112.204 us |       2.76% |  3.868 us |   3.57% |   SLOW   |
|  I64  |     1      |  10000000   |     1000     | 270.462 us |       2.62% | 267.988 us |       0.71% | -2.474 us |  -0.91% |   FAST   |
|  I64  |     1      |   100000    |    100000    | 114.772 us |       2.77% | 114.868 us |       2.81% |  0.096 us |   0.08% |   SAME   |
|  I64  |     1      |  10000000   |    100000    | 280.079 us |       0.61% | 272.171 us |       1.17% | -7.908 us |  -2.82% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   | 587.797 us |       0.39% | 587.067 us |       0.31% | -0.730 us |  -0.12% |   SAME   |

# distinct_left_join

## [0] NVIDIA H100 80GB HBM3

|  Key  |  Nullable  |  left_size  |  right_size  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |      Diff |   %Diff |  Status  |
|-------|------------|-------------|--------------|------------|-------------|------------|-------------|-----------|---------|----------|
|  I32  |     0      |    1000     |     1000     |  51.573 us |       2.19% |  53.932 us |       1.50% |  2.359 us |   4.57% |   SLOW   |
|  I32  |     0      |   100000    |     1000     |  53.801 us |       2.70% |  54.312 us |       1.44% |  0.511 us |   0.95% |   SAME   |
|  I32  |     0      |  10000000   |     1000     | 390.009 us |       0.25% | 390.043 us |       0.24% |  0.034 us |   0.01% |   SAME   |
|  I32  |     0      |   100000    |    100000    |  75.969 us |       1.52% |  76.168 us |       1.35% |  0.199 us |   0.26% |   SAME   |
|  I32  |     0      |  10000000   |    100000    | 456.601 us |       0.27% | 456.600 us |       0.27% | -0.001 us |  -0.00% |   SAME   |
|  I32  |     0      |  10000000   |   10000000   |   1.379 ms |       0.11% |   1.378 ms |       0.09% | -0.083 us |  -0.01% |   SAME   |
|  I32  |     1      |    1000     |     1000     |  82.138 us |       3.31% |  87.369 us |       5.25% |  5.231 us |   6.37% |   SLOW   |
|  I32  |     1      |   100000    |     1000     |  86.923 us |       4.21% |  84.411 us |       4.61% | -2.512 us |  -2.89% |   SAME   |
|  I32  |     1      |  10000000   |     1000     | 193.792 us |       0.72% | 193.232 us |       0.84% | -0.561 us |  -0.29% |   SAME   |
|  I32  |     1      |   100000    |    100000    |  87.560 us |       4.43% |  90.441 us |       4.96% |  2.881 us |   3.29% |   SAME   |
|  I32  |     1      |  10000000   |    100000    | 201.306 us |       1.54% | 197.259 us |       0.67% | -4.047 us |  -2.01% |   FAST   |
|  I32  |     1      |  10000000   |   10000000   | 500.691 us |       0.45% | 498.653 us |       0.55% | -2.038 us |  -0.41% |   SAME   |
|  I64  |     0      |    1000     |     1000     |  49.451 us |       2.56% |  53.656 us |       1.48% |  4.204 us |   8.50% |   SLOW   |
|  I64  |     0      |   100000    |     1000     |  51.644 us |       3.01% |  50.831 us |       2.67% | -0.813 us |  -1.58% |   SAME   |
|  I64  |     0      |  10000000   |     1000     | 352.354 us |       0.23% | 348.247 us |       0.24% | -4.107 us |  -1.17% |   FAST   |
|  I64  |     0      |   100000    |    100000    |  74.085 us |       1.28% |  73.558 us |       1.61% | -0.528 us |  -0.71% |   SAME   |
|  I64  |     0      |  10000000   |    100000    | 462.120 us |       0.28% | 461.726 us |       0.25% | -0.394 us |  -0.09% |   SAME   |
|  I64  |     0      |  10000000   |   10000000   |   1.410 ms |       0.09% |   1.410 ms |       0.10% | -0.187 us |  -0.01% |   SAME   |
|  I64  |     1      |    1000     |     1000     |  82.767 us |       4.01% |  86.485 us |       5.51% |  3.718 us |   4.49% |   SLOW   |
|  I64  |     1      |   100000    |     1000     |  86.277 us |       4.17% |  86.131 us |       5.00% | -0.146 us |  -0.17% |   SAME   |
|  I64  |     1      |  10000000   |     1000     | 197.141 us |       0.68% | 196.573 us |       0.59% | -0.569 us |  -0.29% |   SAME   |
|  I64  |     1      |   100000    |    100000    |  88.188 us |       4.50% |  89.536 us |       4.82% |  1.348 us |   1.53% |   SAME   |
|  I64  |     1      |  10000000   |    100000    | 205.077 us |       1.53% | 201.265 us |       0.67% | -3.813 us |  -1.86% |   FAST   |
|  I64  |     1      |  10000000   |   10000000   | 517.652 us |       0.46% | 517.265 us |       0.29% | -0.387 us |  -0.07% |   SAME   |

# high_multiplicity_inner_join

## [0] NVIDIA H100 80GB HBM3

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 192.342 us |       2.89% | 177.549 us |       0.87% |    -14.793 us |  -7.69% |   FAST   |
|   100000    |    100000    |       20       | 248.742 us |       1.83% | 223.070 us |       1.37% |    -25.673 us | -10.32% |   FAST   |
|   100000    |    100000    |       50       | 402.537 us |       1.24% | 357.712 us |       1.20% |    -44.825 us | -11.14% |   FAST   |
|   100000    |    100000    |      100       | 660.580 us |       0.55% | 576.539 us |       0.87% |    -84.041 us | -12.72% |   FAST   |
|   100000    |    100000    |      1000      |   4.872 ms |       0.55% |   4.318 ms |       0.44% |   -553.611 us | -11.36% |   FAST   |
|   100000    |    100000    |     10000      |  43.878 ms |       1.01% |  38.073 ms |       0.50% |  -5804.701 us | -13.23% |   FAST   |
|   100000    |    100000    |     50000      | 192.519 ms |       0.89% | 166.915 ms |       1.17% | -25603.983 us | -13.30% |   FAST   |

# high_multiplicity_left_join

## [0] NVIDIA H100 80GB HBM3

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 199.659 us |       1.09% | 191.122 us |       2.38% |     -8.536 us |  -4.28% |   FAST   |
|   100000    |    100000    |       20       | 258.045 us |       0.64% | 244.209 us |       1.40% |    -13.835 us |  -5.36% |   FAST   |
|   100000    |    100000    |       50       | 419.160 us |       1.14% | 394.634 us |       0.99% |    -24.526 us |  -5.85% |   FAST   |
|   100000    |    100000    |      100       | 686.169 us |       0.78% | 644.263 us |       0.53% |    -41.906 us |  -6.11% |   FAST   |
|   100000    |    100000    |      1000      |   5.086 ms |       0.61% |   4.870 ms |       0.48% |   -215.693 us |  -4.24% |   FAST   |
|   100000    |    100000    |     10000      |  46.253 ms |       0.98% |  42.530 ms |       0.65% |  -3723.028 us |  -8.05% |   FAST   |
|   100000    |    100000    |     50000      | 202.373 ms |       0.96% | 185.152 ms |       1.23% | -17220.535 us |  -8.51% |   FAST   |

# high_multiplicity_full_join

## [0] NVIDIA H100 80GB HBM3

|  left_size  |  right_size  |  multiplicity  |   Ref Time |   Ref Noise |   Cmp Time |   Cmp Noise |          Diff |   %Diff |  Status  |
|-------------|--------------|----------------|------------|-------------|------------|-------------|---------------|---------|----------|
|   100000    |    100000    |       10       | 285.804 us |       0.74% | 275.411 us |       1.85% |    -10.393 us |  -3.64% |   FAST   |
|   100000    |    100000    |       20       | 349.979 us |       0.63% | 336.248 us |       0.83% |    -13.731 us |  -3.92% |   FAST   |
|   100000    |    100000    |       50       | 492.786 us |       1.01% | 469.498 us |       0.88% |    -23.288 us |  -4.73% |   FAST   |
|   100000    |    100000    |      100       | 794.755 us |       0.73% | 755.507 us |       0.47% |    -39.248 us |  -4.94% |   FAST   |
|   100000    |    100000    |      1000      |   5.972 ms |       0.52% |   5.765 ms |       0.46% |   -207.055 us |  -3.47% |   FAST   |
|   100000    |    100000    |     10000      |  53.180 ms |       0.83% |  49.554 ms |       0.47% |  -3626.164 us |  -6.82% |   FAST   |
|   100000    |    100000    |     50000      | 221.420 ms |       0.86% | 204.842 ms |       1.10% | -16577.634 us |  -7.49% |   FAST   |

# Summary

- Total Matches: 333
  - Pass    (diff <= min_noise): 152
  - Unknown (infinite noise):    0
  - Failure (diff > min_noise):  181

tgujar avatar Jun 25 '25 00:06 tgujar