Repository navigation
Commit ee608e6
committed
[C++][Parquet] Scan DELTA_BINARY_PACKED deltas a vector at a time
The value-at-a-time prefix sum becomes a helper that scans whole registers with
a log-step inclusive scan and finishes the remainder one value at a time. Adding
the frame of reference before the scan turns its running multiple into a term the
scan produces rather than a multiply per lane, and the running total is carried
between registers in a vector register rather than through a general-purpose one.
The xsimd include and the vector loop are guarded on ARROW_HAVE_NEON or
ARROW_HAVE_SSE4_2, so a build with neither compiles the scalar loop alone. The
vector loop is compiled only where a register holds four or more values, which at
the 128-bit baseline vectorizes 32-bit values and leaves 64-bit ones on the
value-at-a-time loop.
Also adds a decode benchmark on non-decreasing values, the shape this encoding is
usually chosen for.
Arithmetic is unchanged: every term stays in the unsigned type, so the wrapping
the format specifies is preserved and no decoded value changes.1 parent bd877ee commit ee608e6
3 files changed
Lines changed: 152 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
35 | 39 | | |
36 | 40 | | |
37 | 41 | | |
| |||
1437 | 1441 | | |
1438 | 1442 | | |
1439 | 1443 | | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
1440 | 1509 | | |
1441 | 1510 | | |
1442 | 1511 | | |
| |||
1694 | 1763 | | |
1695 | 1764 | | |
1696 | 1765 | | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
1700 | | - | |
1701 | | - | |
1702 | | - | |
1703 | | - | |
1704 | | - | |
1705 | | - | |
1706 | | - | |
1707 | | - | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
1708 | 1769 | | |
1709 | 1770 | | |
1710 | 1771 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
675 | 675 | | |
676 | 676 | | |
677 | 677 | | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
678 | 694 | | |
679 | 695 | | |
680 | 696 | | |
| |||
713 | 729 | | |
714 | 730 | | |
715 | 731 | | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
716 | 742 | | |
717 | 743 | | |
718 | 744 | | |
| |||
725 | 751 | | |
726 | 752 | | |
727 | 753 | | |
| 754 | + | |
| 755 | + | |
728 | 756 | | |
729 | 757 | | |
730 | 758 | | |
| |||
762 | 790 | | |
763 | 791 | | |
764 | 792 | | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
765 | 803 | | |
766 | 804 | | |
767 | 805 | | |
| |||
774 | 812 | | |
775 | 813 | | |
776 | 814 | | |
| 815 | + | |
| 816 | + | |
777 | 817 | | |
778 | 818 | | |
779 | 819 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
2188 | 2189 | | |
2189 | 2190 | | |
2190 | 2191 | | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
| 2229 | + | |
| 2230 | + | |
2191 | 2231 | | |
2192 | 2232 | | |
2193 | 2233 | | |
| |||
0 commit comments