forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit792752a
committed
Optimize pg_popcount() with AVX-512 instructions.
Presently, pg_popcount() processes data in 32-bit or 64-bit chunkswhen possible. Newer hardware that supports AVX-512 instructionscan use 512-bit chunks, which provides a nice speedup, especiallyfor larger buffers. This commit introduces the infrastructurerequired to detect compiler and CPU support for the requiredAVX-512 intrinsic functions, and it adds a new pg_popcount()implementation that uses these functions. If CPU support for thisoptimized implementation is detected at runtime, a function pointeris updated so that it is used by subsequent calls to pg_popcount().Most of the existing in-tree calls to pg_popcount() should benefitfrom these instructions, and calls with smaller buffers should atleast not regress compared to v16. The new infrastructureintroduced by this commit can also be used to optimizevisibilitymap_count(), but that is left for a follow-up commit.Co-authored-by: Paul Amonson, Ants AasmaReviewed-by: Matthias van de Meent, Tom Lane, Noah Misch, Akash Shankaran, Alvaro Herrera, Andres Freund, David RowleyDiscussion:https://postgr.es/m/BL1PR11MB5304097DF7EA81D04C33F3D1DCA6A%40BL1PR11MB5304.namprd11.prod.outlook.com1 parent158f581 commit792752a
File tree
15 files changed
+696
-3
lines changed- config
- src
- include
- port
- makefiles
- port
- test/regress
- expected
- sql
15 files changed
+696
-3
lines changedLines changed: 58 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
694 | 694 |
| |
695 | 695 |
| |
696 | 696 |
| |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + |
Lines changed: 252 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
647 | 647 |
| |
648 | 648 |
| |
649 | 649 |
| |
| 650 | + | |
| 651 | + | |
| 652 | + | |
650 | 653 |
| |
651 | 654 |
| |
652 | 655 |
| |
| |||
17404 | 17407 |
| |
17405 | 17408 |
| |
17406 | 17409 |
| |
| 17410 | + | |
| 17411 | + | |
| 17412 | + | |
| 17413 | + | |
| 17414 | + | |
| 17415 | + | |
| 17416 | + | |
| 17417 | + | |
| 17418 | + | |
| 17419 | + | |
| 17420 | + | |
| 17421 | + | |
| 17422 | + | |
| 17423 | + | |
| 17424 | + | |
| 17425 | + | |
| 17426 | + | |
| 17427 | + | |
| 17428 | + | |
| 17429 | + | |
| 17430 | + | |
| 17431 | + | |
| 17432 | + | |
| 17433 | + | |
| 17434 | + | |
| 17435 | + | |
| 17436 | + | |
| 17437 | + | |
| 17438 | + | |
| 17439 | + | |
| 17440 | + | |
| 17441 | + | |
| 17442 | + | |
| 17443 | + | |
17407 | 17444 |
| |
17408 | 17445 |
| |
17409 | 17446 |
| |
| |||
17438 | 17475 |
| |
17439 | 17476 |
| |
17440 | 17477 |
| |
| 17478 | + | |
| 17479 | + | |
| 17480 | + | |
| 17481 | + | |
| 17482 | + | |
| 17483 | + | |
| 17484 | + | |
| 17485 | + | |
| 17486 | + | |
| 17487 | + | |
| 17488 | + | |
| 17489 | + | |
| 17490 | + | |
| 17491 | + | |
| 17492 | + | |
| 17493 | + | |
| 17494 | + | |
| 17495 | + | |
| 17496 | + | |
| 17497 | + | |
| 17498 | + | |
| 17499 | + | |
| 17500 | + | |
| 17501 | + | |
| 17502 | + | |
| 17503 | + | |
| 17504 | + | |
| 17505 | + | |
| 17506 | + | |
| 17507 | + | |
| 17508 | + | |
| 17509 | + | |
| 17510 | + | |
| 17511 | + | |
| 17512 | + | |
| 17513 | + | |
| 17514 | + | |
| 17515 | + | |
| 17516 | + | |
| 17517 | + | |
| 17518 | + | |
| 17519 | + | |
| 17520 | + | |
| 17521 | + | |
| 17522 | + | |
| 17523 | + | |
| 17524 | + | |
| 17525 | + | |
| 17526 | + | |
| 17527 | + | |
| 17528 | + | |
| 17529 | + | |
| 17530 | + | |
| 17531 | + | |
| 17532 | + | |
| 17533 | + | |
| 17534 | + | |
| 17535 | + | |
| 17536 | + | |
| 17537 | + | |
| 17538 | + | |
| 17539 | + | |
| 17540 | + | |
| 17541 | + | |
| 17542 | + | |
| 17543 | + | |
| 17544 | + | |
| 17545 | + | |
| 17546 | + | |
| 17547 | + | |
| 17548 | + | |
| 17549 | + | |
| 17550 | + | |
| 17551 | + | |
| 17552 | + | |
| 17553 | + | |
| 17554 | + | |
| 17555 | + | |
| 17556 | + | |
| 17557 | + | |
| 17558 | + | |
| 17559 | + | |
| 17560 | + | |
| 17561 | + | |
| 17562 | + | |
| 17563 | + | |
| 17564 | + | |
| 17565 | + | |
| 17566 | + | |
| 17567 | + | |
| 17568 | + | |
| 17569 | + | |
| 17570 | + | |
| 17571 | + | |
| 17572 | + | |
| 17573 | + | |
| 17574 | + | |
| 17575 | + | |
| 17576 | + | |
| 17577 | + | |
| 17578 | + | |
| 17579 | + | |
| 17580 | + | |
| 17581 | + | |
| 17582 | + | |
| 17583 | + | |
| 17584 | + | |
| 17585 | + | |
| 17586 | + | |
| 17587 | + | |
| 17588 | + | |
| 17589 | + | |
| 17590 | + | |
| 17591 | + | |
| 17592 | + | |
| 17593 | + | |
| 17594 | + | |
| 17595 | + | |
| 17596 | + | |
| 17597 | + | |
| 17598 | + | |
| 17599 | + | |
| 17600 | + | |
| 17601 | + | |
| 17602 | + | |
| 17603 | + | |
| 17604 | + | |
| 17605 | + | |
| 17606 | + | |
| 17607 | + | |
| 17608 | + | |
| 17609 | + | |
| 17610 | + | |
| 17611 | + | |
| 17612 | + | |
| 17613 | + | |
| 17614 | + | |
| 17615 | + | |
| 17616 | + | |
| 17617 | + | |
| 17618 | + | |
| 17619 | + | |
| 17620 | + | |
| 17621 | + | |
| 17622 | + | |
| 17623 | + | |
| 17624 | + | |
| 17625 | + | |
| 17626 | + | |
| 17627 | + | |
| 17628 | + | |
| 17629 | + | |
| 17630 | + | |
| 17631 | + | |
| 17632 | + | |
| 17633 | + | |
| 17634 | + | |
| 17635 | + | |
| 17636 | + | |
| 17637 | + | |
| 17638 | + | |
| 17639 | + | |
| 17640 | + | |
| 17641 | + | |
| 17642 | + | |
| 17643 | + | |
| 17644 | + | |
| 17645 | + | |
| 17646 | + | |
| 17647 | + | |
| 17648 | + | |
| 17649 | + | |
| 17650 | + | |
| 17651 | + | |
| 17652 | + | |
| 17653 | + | |
| 17654 | + | |
| 17655 | + | |
| 17656 | + | |
| 17657 | + | |
| 17658 | + | |
| 17659 | + | |
| 17660 | + | |
| 17661 | + | |
| 17662 | + | |
| 17663 | + | |
| 17664 | + | |
| 17665 | + | |
| 17666 | + | |
| 17667 | + | |
| 17668 | + | |
| 17669 | + | |
| 17670 | + | |
| 17671 | + | |
| 17672 | + | |
| 17673 | + | |
| 17674 | + | |
| 17675 | + | |
| 17676 | + | |
| 17677 | + | |
| 17678 | + | |
| 17679 | + | |
| 17680 | + | |
| 17681 | + | |
| 17682 | + | |
| 17683 | + | |
| 17684 | + | |
| 17685 | + | |
| 17686 | + | |
| 17687 | + | |
| 17688 | + | |
| 17689 | + | |
| 17690 | + | |
| 17691 | + | |
| 17692 | + | |
17441 | 17693 |
| |
17442 | 17694 |
| |
17443 | 17695 |
| |
|
Lines changed: 51 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2052 | 2052 |
| |
2053 | 2053 |
| |
2054 | 2054 |
| |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
| 2061 | + | |
| 2062 | + | |
| 2063 | + | |
| 2064 | + | |
| 2065 | + | |
2055 | 2066 |
| |
2056 | 2067 |
| |
2057 | 2068 |
| |
| |||
2063 | 2074 |
| |
2064 | 2075 |
| |
2065 | 2076 |
| |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
| 2085 | + | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
| 2092 | + | |
| 2093 | + | |
| 2094 | + | |
| 2095 | + | |
| 2096 | + | |
| 2097 | + | |
| 2098 | + | |
| 2099 | + | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
| 2103 | + | |
| 2104 | + | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
| 2108 | + | |
| 2109 | + | |
| 2110 | + | |
| 2111 | + | |
| 2112 | + | |
| 2113 | + | |
| 2114 | + | |
| 2115 | + | |
| 2116 | + | |
2066 | 2117 |
| |
2067 | 2118 |
| |
2068 | 2119 |
| |
|
0 commit comments
Comments
(0)