Closed jianshu93 closed 1 year ago
Hello. We have had good luck running the current version of HMMER on M1 Macs using Apple's Rosetta 2 tool. You'll want to follow the instructions that you can find on the web to both install Rosetta 2 and create a version of the terminal app that runs under Rosetta 2. Once you do that, if you open the Rosetta Terminal and follow the normal build instructions for HMMER, it should work smoothly, although you'll have to run HMMER from the Rosetta Terminal.
We have full support for M1 Macs implemented and scheduled for the next release. My best guess is that that release will happen after the end of the term, but it's contingent on Sean's schedule.
-Nick
On Sun, Nov 7, 2021 at 9:53 PM Jianshu_Zhao @.***> wrote:
Dear hmmer team,
Any possibility to support macOS m1 chip (ARM)?
Thanks,
Jianshu
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZEAEAROGBIY3R3OGXDUK43SDANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Hello Thanks for those info. The h3-neon branch, I have the following error:
Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 ld: symbol(s) not found for architecture arm64 Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 make[1]: [hmmemit] Error 1 make[1]: Waiting for unfinished jobs.... make[1]: [hmmbuild] Error 1 make[1]: [hmmalign] Error 1 collect2: error: ld returned 1 exit status make[1]: [hmmpgmd] Error 1 make: [all] Error 2
Jianshu
Hello,
The easiest way to run HMMER on an M1 Mac for now is to use Apple's Rosetta 2 tool to build and run the x86 version on ARM. Performance is quite good.
If you want to proceed with the h3-neon branch, the errors you're getting make me think you're trying to build the h3-neon branch of HMMER using the master (default) branch of our easel libraries. h3-neon requires the "/remotes/origin/develop" branch of Easel. Could you try checking that branch out and see how it goes?
-Nick
On Wed, Nov 24, 2021 at 3:40 PM Jianshu_Zhao @.***> wrote:
Hello Thanks for those info. The h3-neon branch, I have the following error:
Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 ld: symbol(s) not found for architecture arm64 Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status Undefined symbols for architecture arm64: "_esl_neon_hmax_f32", referenced from: _p7_OptimalAccuracy in libhmmer.a(optacc.o) ld: symbol(s) not found for architecture arm64 make[1]: [hmmemit] Error 1 make[1]: Waiting for unfinished jobs.... make[1]: [hmmbuild] Error 1 make[1]: [hmmalign] Error 1 collect2: error: ld returned 1 exit status make[1]: [hmmpgmd] Error 1 make: [all] Error 2
Jianshu
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262#issuecomment-978204641, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZGUZHV2NDLF63THXVTUNVESPANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Just to share my experience (MacBook Air with M1, running macOS Big Sur): Installing with brew
didn't work for me, even if my terminal app was opened in Rosetta2 mode. It always resorted to the suggestion that I should install Homebrew into /usr/local first. Trying to install with conda
failed as well. What did work for me is compiling from source, after opening the terminal in Rosetta2 mode!
Thanks for the feedback. That's consistent with what others have reported. We don't work directly with the Homebrew team, so don't have much insight into how they do things. We hope to release a new version of HMMER over the winter break that incorporates the h3-neon branch and builds for M1 automatically.
-Nick
On Fri, Nov 26, 2021 at 12:25 PM Dimi Boeckaerts @.***> wrote:
Just to share my experience (MacBook Air with M1, running macOS Big Sur): Installing with brew didn't work for me, even if my terminal app was opened in Rosetta2 mode. It always resorted to the suggestion that I should install Homebrew into /usr/local first. Trying to install with conda failed as well. What did work for me is compiling from source, after opening the terminal in Rosetta2 mode!
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262#issuecomment-980184947, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZASYMS3XKFK6BSIYWDUN67HXANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Hello all,
After using the develop branch of Easel and h3-arm branch of hmmer. I can successfully compile it on My MacBook Pro M1 Pro/Max. I am attaching the binaries here. Should be working. No need to use the Rosetta terminal at all and the native support is extremely faster for large searches.
Thanks,
Jianshu
A few testings showed that the hmmsearch results are exactly the same with non-arm version.
A big step to an official release of hmmer-neon.
Thanks,
Jianshu
Is there a "simple" solution to run/build hmmer3 on M1 with docker in Debian (arm) container?
Not that I know of. Our current solution for M1 on Mac is to build under Rosetta 2, but I don't think that would work in a container. You might try experimenting with the h3-arm branch and see if that builds for you.
-Nick
On Thu, Feb 10, 2022 at 7:51 AM Priit Adler @.***> wrote:
Is there a "simple" solution to run/build hmmer3 on M1 with docker in Debian (arm) container?
— Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262#issuecomment-1034885845, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZBESGI3W2P7WKR3V33U2OYF5ANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Hi-- not sure if this is the exact issue to ask this, but we have a new test system at Oak Ridge's OLCF that has Ampere Altra ARM 80-core nodes with ARM v8.2 ISA and NEON 128-bit SIMD. We are looking for things to test on it, and I was wondering if any of the NEON ports in HMMER were functional enough to test. If so, I would love to know which they are to try to see how HMMER performs! We run a lot of HMMER especially now with AlphaFold being released, so it would be a very relevant test.
arm branch could be built. esl arm branch must be used. I would be happy to see how it works on ARM.
Jianshu
Hello,
We'd be interested in the answer to that as well, since we've been testing on an M1 Mac. If you check out the h3-arm branch of hmmer and the develop branch of easel from our Github repository, that should give you a fully-functional version of HMMER for ARM. Please let us know how it works!
-Nick
On Tue, Feb 15, 2022 at 7:51 PM asedova @.***> wrote:
Hi-- not sure if this is the exact issue to ask this, but we have a new test system at Oak Ridge's OLCF that has Ampere Altra ARM 80-core nodes with ARM v8.2 ISA and NEON 128-bit SIMD. We are looking for things to test on it, and I was wondering if any of the NEON ports in HMMER were functional enough to test. If so, I would love to know which they are to try to see how HMMER performs! We run a lot of HMMER especially now with AlphaFold being released, so it would be a very relevant test.
— Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262#issuecomment-1040950674, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZBG2F6SVGQ22EHVB7DU3LYIXANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Attempt to compile h3-arm inside Debian docker container running on mac M1
I tried to compile the h3-arm branch with easel develop branch, but to a number of the following errors:
generic_vtrace.c:89:33: error: too few arguments to function 'esl_FCompare'
I can see that in easel/easel.h:
there are references to the function, that expects 4 arguments and esl_FCompare_old
expects 3 arguments. I'd assume that ideally in the places where to function is called I should add a fourth argument? Or change the function names to *_old
My guess is that something's gone wrong in checking out the h3-arm branch of HMMER, and you're actually trying to compile the master branch with the develop branch of Easel. I checked the source code on our Github site, and line 89 of generic_vtrace.c in the h3-arm branch has the esl_FCompare_old call instead of esl_FCompare.
-Nick
On Wed, Mar 2, 2022 at 1:20 PM Priit Adler @.***> wrote:
Attempt to compile h3-arm inside Debian docker container running on mac M1
I tried to compile the h3-arm branch with easel develop branch, but to a number of the following errors:
generic_vtrace.c:89:33: error: too few arguments to function 'esl_FCompare'
I can see that in easel/easel.h: there are references to the function, that expects 4 arguments and esl_FCompare_old expects 3 arguments. I'd assume that ideally in the places where to function is called I should add a fourth argument? Or change the function names to *_old
— Reply to this email directly, view it on GitHub https://github.com/EddyRivasLab/hmmer/issues/262#issuecomment-1057238524, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDJBZAKR4S236RY7YZR73LU56WOPANCNFSM5HRS4QDQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID: @.***>
Thanks, worked. somehow overlooked that. make
and make check
worked now and passed all the tests. so all good :)
Not sure what the status of the h3-arm branch is as the last commit was about 4 months ago.
Following the note to use Rosetta 2 to install HMMER from the command line, I came up with the following workflow:
Opening Terminal.app, then type:
softwareupdate --install-rosetta
You may be prompted to enter your username and password.
Close the Terminal.app
Find the in Terminal.app the Finder.
Right-click on the Terminal.app to open a context menu and pick the Get Info option.
Under General, click on the Open using Rosetta check-box.
Close the Get Info overview.
Open the Terminal.app
Type:
arch
If arch responds with i386, then the terminal was set up correctly. If the terminal responds with arm64, please double-check the Get Info step was completed successfully
Launch the Terminal.app running under Rosetta 2
Install XCode CLI Tools
xcode-select --install
Next, we’ll add a package manager called brew to handle native CLI applications:
Copy and paste into Terminal.app running under Rosetta 2
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Then, type:
brew install hmmer
If the above doesn't work, feel free to use the following Colab notebook as a way of doing proof of concept work.
https://colab.research.google.com/drive/1Lfugd684QDqJmraCB6HIH6AdJC_QDkzu?usp=sharing
For anyone following this thread, ARM/NEON support has been moved into the develop branch, so please use that instead of the h3-neon or h3-arm branches.
I've just tested develop
branch on Linux ARM64 and all looks good to me!
Any news on when it will be released to the main branch?
Friendly bump. Are there plans to have a stable release with Apple M-series chip support ? Thanks for all the hard work!
We (mostly Sean) are working on getting a new release of HMMER out, which will include M1 support. We don't have an exact date for this other than "soon". One holdup is that we've been running some new memory and thread checkers (the address and thread sanitizers that are built into GCC and Clang), and those have found a number of issues that our previous tools did not.
HMMER 3.4 was just released. It includes support for ARM processors. See hmmer.org for links to the code tarball and documentation.
Dear hmmer team,
Any possibility to support macOS m1 chip (ARM)?
Thanks,
Jianshu