Thread: Proposal for enabling auto-vectorization for checksum calculations
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.
Attachment
Hello! I'm still trying to figure out those CI failures, I just wanted to update things. From my testing, with this patch repeatedly disabling/enabling checksums is about 12.4% on an approximately 15 GB database. By the way, I'd love it if anyone could help me figure out how to replicate a CI failure in the Cirrus CI. I haven't been able to figure out how to test CI runs locally, does anyone know a good method to do that?
On Thu, May 8, 2025 at 6:57 AM Matthew Sterrett <matthewsterrett2@gmail.com> wrote:
Hello! I'm still trying to figure out those CI failures, I just wanted
to update things.
From my testing, with this patch repeatedly disabling/enabling
checksums is about 12.4% on an approximately 15 GB database.
By the way, I'd love it if anyone could help me figure out how to
replicate a CI failure in the Cirrus CI.
I haven't been able to figure out how to test CI runs locally, does
anyone know a good method to do that?
Hi Matthew,
Thanks for the patch!
I ran some timing tests:
(without avx2)
Time: 4034.351 ms
SELECT drive_pg_checksum(512);
(with avx2)
Time: 3559.076 ms
SELECT drive_pg_checksum(512);
Also attached two patches that should fix the CI issues.
Best,
Stepan Neretin