-
Notifications
You must be signed in to change notification settings - Fork 555
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Does not compile for ARM #300
Comments
bwa requires SSE2 instruction set. emmintrin.h is header file for SSE2 intrinsics. |
Exactly - and considering that the following are true:
It makes good sense then for a high-value, (hopefully) low-effort update to be made to this project to support ARM. Maybe there's more work involved here than a simple compiler & flag switch, but if another existing aligner adds ARM support while BWA has no announced plans to support this, concerns around cost performance as well as future-looking hardware support will cause it to start looking less attractive as a real-world use-case tool. |
Where does the 40% number come from? Even if that is true for a particular benchmark, it is probably not generalizable. You are underestimating how high-performance tools are developed these days. At times it is more complicated than changing flags. In case of bwa-mem, you need to emulate SSE2 with simde or sse2neon. This is not a one-to-one translation and will cost performance. It is even trickier with bwa-mem2 as most ARM CPUs don't support 256-bit SIMD, let alone 512-bit. Also, the cache performance/bandwidth, branch predictions etc are different between CPUs. You need architecture specific optimization. I doubt simple port can match the performance on x86 CPUs. The ARM ecosystem is tiny right now. I will see how it evolves in particular with the availability of ARM Mac, but for now, no plan for ARM support. |
Good news is that binaries compiled for Intel Macs run on M1 Macs, confirmed as I recently upgraded my 2018 Intel MacBook Pro to a new M1 MacBook Pro. Emulated bwa on my M1 laptop is about 25% faster than native bwa on the Intel laptop which was a pleasant surprise. |
Hey Hi , can you please tell me how can I achieve the same? I have intelbased Macbook while my sister has M1. How can I copy the bwa from my machine to her system? |
Yes, all you need to do is copy over the bwa executable file from the Intel machine to the M1 machine. Nothing else needs to be done. |
Thank you very much @barkoneus , this worked :) |
This can help to compile for ARM |
sounds easy but HOW to do it? (1) where is the executable (2) where (which directory) to copy from intel into the new M1 ? :( |
I'd love to see this implemented. There are two separate PRs open right now to fix this: #283 and #344. SIMDE is probably a more robust solution long-term, but the sse2neon.h solution is a smaller changeset. Right now, there's multiple outside groups patching bwa to run it on ARM CPUs, everything from distro maintainers like debian, to AWS telling their customers how to build bwa on ARM. It'd be great to get first party ARM support. |
It would be awesome if the support for ARM64 is added! |
BTW, the issue seems same for PPC64, S390X and RISC-V architectures. |
How can we help to get the support for ARM64 ? |
See also PR #359. |
Attempting to run
make
on an ARM system yields the following error:The text was updated successfully, but these errors were encountered: