Proposal for enabling auto-vectorization for checksum calculations
Matthew Sterrett <matthewsterrett2@gmail.com>
From: Matthew Sterrett <matthewsterrett2@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Cc: "Devulapalli, Raghuveer" <raghuveer.devulapalli@intel.com>, "Shankaran, Akash" <akash.shankaran@intel.com>,
Matthew Sterrett <matthewsterrett2@gmail.com>
Date: 2025-04-04T22:03:43Z
Lists: pgsql-hackers
Attachments
- v1-0001-Enable-autovectorizing-pg_checksum_block.patch (application/octet-stream) patch v1-0001
- v1-0002-Benchmark-code-for-postgres-checksums.patch (application/octet-stream) patch v1-0002
Hello, This patch enables more compiler autovectorization for the checksum calculations. This code is particularly well suited for autovectorization, so just adding pg_attribute_target and some simple dynamic dispatch logic we can get improved vectorization. This gives about a 2x speedup in a synthetic benchmark for pg_checksum, which is also included as a seperate patch file. Additionally, another 2x performance increase in the synthetic benchmark with AVX2 can be obtained if N_SUMS was changed to 64. However, this would change the results of the checksum. This isn't included in this patch, but I think it is worth considering for the future One additional factor, without explicitly passing some optimization flag like -O2 the makefile build won't autovectorize any of the code. However, the meson based build does this automatically.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Use AVX2 for calculating page checksums where available
- 5e13b0f24039 19 (unreleased) landed