Closed tmsincomb closed 1 year ago
I know about that branch, I'm the one who contributed the code :wink:
At the moment, HMMER development efforts are focusing on the next version of HMMER (v4) which will also provide an ARM NEON implementation, supporting Armv7 and Aarch64 platforms. Until either HMMER4 is released or a new HMMER3 version is released, I'm reluctant to push forward any support for Arm support in pyhmmer
, because I'd have to support diverging codebases, which goes against the idea of reproducibility / providing a clearly identified version of HMMER in pyhmmer
.
In the meantime, you should try to install pyhmmer
via Rosetta, which should still give reasonable performances. I have no Mac to give you any help on this front, but it's been reported to work by a collaborator of mine.
That's pretty awesome and thank you for your quick response. I'll move forward with Rosetta then and make a note for my team.
I think the develop branch of hmmer works for ARM64 (I successfully compiled and run all binaries on an arm64 iMac), which I downloaded and then put it under vendor, with easel, but I still have the compiling error:
Is there technique issue for the Cython to support AMR64?
Thanks,
Jianshu
@jianshu93 : the NEON branch definitely works, yes, but it still hasn't been released in a public version by the HMMER team. For reproducibility sake I want to have PyHMMER compile versioned releases only. They are actively working on it at the moment so I'm hoping a new release is due soon.
Hi @althonos! It looks like they merged your updates to main and was able to be installed for ARM using a collaborators pip install hmmer. I wanted to get it working and submit a pull request, but I needed help with replacing #include <emmintrin.h>
found https://github.com/althonos/pyhmmer/blob/master/setup.py#L299. I didn't want to start pulling in more overhead with sse2neon.h so I was hoping if you already new the equivalents for these helpers on ARM from your previous work.
Hi @tmsincomb !
I'm still reluctant to merge the ARM code in a non-development version because I would like to keep in sync with stable HMMER releases. Nevertheless, I'm adding a new branch so that pyhmmer
can be compiled for Arm as well, and once that's done I'll maybe publish some pre-releases specifically for Arm.
You can try to install from the neon-support
branch now, with:
$ python3 -m pip install -U git+https://github.com/althonos/pyhmmer@neon-support
This will hopefully work on a M1 MAC, it works on a Raspberry Pi 4. You'll get a big warning when importing though :yum:
Awesome! Our Sadie package passed all tests on ARM thanks to your neon-support branch! This is what we needed, I can't thank you enough 🙂
Cool! I hope HMMER makes an official Arm release at some point, I'd then be happy to officially support Arm as a platform and provide pre-built wheels in PyPI as well...
HMMER was updated to v3.4
in v0.10.0
, meaning that there's now an official Arm release and pre-built wheels for MacOS and Linux on PyPI.
This is wonderful news, thank you so much for all your hard work!
HMMER has a branch that can be built from source for a M1 chip https://github.com/EddyRivasLab/hmmer/tree/h3-arm, but it looks like they are holding out on merging it to main for awhile. This seems to be confirmed when they did it by accident in the closed pull request https://github.com/EddyRivasLab/hmmer/pull/232.
It looks like the pyhmmer pip install is using the main branch for hmmer that currently doesn't support M1. If there is a workaround or if this issue was fixed please let know.