EddyRivasLab / hmmer

HMMER: biological sequence analysis using profile HMMs
http://hmmer.org
Other
317 stars 70 forks source link

Add platform-specific implementation for ARM using NEON #230

Closed althonos closed 3 years ago

althonos commented 3 years ago

Hi @npcarter

As discussed in easel, here is my code for the ARM port of HMMER. I basically used the SSE implementation and swapped the __mm_* calls with their NEON counterparts, and it mostly works, except in ssvfilter.c where I have inconsistent results when it's enabled. Because the code uses esl_neon_hmax_f32 that just got merged you'll need the develop branch of easel checked out locally.

Otherwise, the code compiles and passes unit tests on my Raspberry Pi 4. I had to force enabling the -mlittle-endian flag in configure.ac, otherwise i had some consistency issues, probably with the way GCC handles data loading.

althonos commented 3 years ago

Actually, the base branch for this PR is hmmer/develop, which is the one I started working on, but since you instructed me to use h3-arm as the base i did so.