> For reference, coreutils' cksum uses slice by 8 unconditionally since:
> https://github.com/coreutils/coreutils/commit/a7533917e

perfect, we could just copy this across then? is there a reason gnulib
wouldn't just include coreutils as a dependency?

> Note we don't use it on systems with pclmul, since:
> https://github.com/coreutils/coreutils/commit/4b9118cdb

that is the paper I was looking for today, I've reading through this which
appears to have missed the earlier intel paper
https://ieeexplore.ieee.org/abstract/document/8713103

On Mon, 14 Oct 2024 at 15:50, Pádraig Brady <p...@draigbrady.com> wrote:

> On 14/10/2024 11:16, Sam Russell wrote:
> > Hi,
> >
> > First off, this is my first GNU contribution so I have *no idea* what
> I'm doing, feedback is appreciated.
> >
> > I've noticed that GZIP trails behind zlib in performance and part of
> this is down to the fact that zlib is using a more efficient CRC32
> implementation. I've written an implementation of this for gnulib based off
> the Intel paper at
> https://static.aminer.org/pdf/PDF/000/432/446/a_systematic_approach_to_building_high_performance_software_based_crc.pdf
> <
> https://static.aminer.org/pdf/PDF/000/432/446/a_systematic_approach_to_building_high_performance_software_based_crc.pdf>
>  (the
> code is mine, written based on the paper, the tables are generated by
> extending the code from RFC 1952 to generate the lookups for partial
> bitfields, this can be provided on request but it's not my finest work).
> >
> > The code:
> >
> https://github.com/samrussell/gnulib/commit/2d5f5d0e131feea6e04cb48d56589537506f91a8
> <
> https://github.com/samrussell/gnulib/commit/2d5f5d0e131feea6e04cb48d56589537506f91a8
> >
> > (yes, I am aware you don't take contributions via github. I have an open
> ticket with GNU to get my SSH access fixed so I can have non-anonymous
> access to the repository on Savannah).
> >
> > Considerations:
> > - robustness/appropriateness: both the zlib and Linux kernel CRC32
> implementations use this slice-by-4 and slice-by-8 algorithm for the
> performance improvements
> > - free software/patents: the Intel paper is from 2008; zlib had an
> independently-discovered version of slice-by-4 from 2002 so it seems
> unlikely there should be any patents encumbering this. the software is my
> own design and I am happy for it to be transferred to GNU and licensed
> accordingly
> >
> > Requests for help:
> > - how do I get someone to review my code and then get it added to the
> codebase? is this done via Savannah, or the mailing list, do we email
> around PATCH files etc?
> > - I assume we'll want to gate this functionality based on CPU ability
> (32-bit arithmetic is presumably fine but 64-bit makes no sense unless
> running on a system with a native 64-bit bus). What is the convention here
> for enforcing this at compile-time? I couldn't find the right flag to test
> for and I'm assuming there's a correct answer that someone knows off the
> top of their head
> >
> > Thanks for your time,
> >
> > Sam
> >
> > (PS I sent this before I subscribed to the list so I'm assuming the old
> one just bounced, apologies if I end up creating 2 threads by mistake)
>
> For reference, coreutils' cksum uses slice by 8 unconditionally since:
> https://github.com/coreutils/coreutils/commit/a7533917e
>
> Note we don't use it on systems with pclmul, since:
> https://github.com/coreutils/coreutils/commit/4b9118cdb
>
> cheers,
> Pádraig
>

Reply via email to