refresh-bio / FAMSA

Algorithm for ultra-scale multiple sequence alignments (3M protein sequences in 5 minutes and 24 GB of RAM)
GNU General Public License v3.0
150 stars 25 forks source link

AVX2 required? #3

Closed jeremylp2 closed 5 years ago

jeremylp2 commented 7 years ago

Hi,

Can FAMSA be used on a machine without the AVX2 instruction set? If I attempt to compile on a machine that doesn't have it (using g++ 5.4), I see errors like this:

g++ -Wall -O3 -m64 -std=c++11 -pthread -I libs -I libs-linux -mavx2 -fabi-version=0 -mpopcnt -funroll-loops -c core/lcsbp_avx2.cpp -o core/lcsbp_avx2.o In file included from core/../core/../libs/vectorclass.h:35:0, from core/../core/lcsbp_avx2.h:14, from core/lcsbp_avx2.cpp:11: core/../core/../libs/instrset.h:85:17: note: #pragma message: It is recommended to specify also option -mfma when using -mavx2 or higher

pragma message "It is recommended to specify also option -mfma when using -mavx2 or higher"

             ^

ccVAG2BB.s: Assembler messages: ccVAG2BB.s:98: Error: suffix or operands invalid for vpxor' ccVAG2BB.s:103: Error: no such instruction:vinserti128 $0x1,%xmm1,%ymm3,%ymm4' ccVAG2BB.s:104: Error: suffix or operands invalid for vpand' ccVAG2BB.s:105: Error: suffix or operands invalid forvpaddq' ccVAG2BB.s:106: Error: suffix or operands invalid for vpsubq' ccVAG2BB.s:107: Error: suffix or operands invalid forvpxor' ccVAG2BB.s:108: Error: suffix or operands invalid for vpor' ccVAG2BB.s:109: Error: suffix or operands invalid forvpcmpgtq' ccVAG2BB.s:124: Error: suffix or operands invalid for `vpxor'

agudys commented 7 years ago

Hello,

FAMSA was designed to work properly on different architectures - supported CPU extensions are determined at runtime and appropriate code is executed. It should not matter if machine on which binary is built supports AVX or not, but apparently there is some problem with that. We will take a look on that. Could you give us some details about hardware configuration and OS you were using?

jeremylp2 commented 7 years ago

Sorry I missed your response earlier. I have tried compiling on a MacBook pro (OS 10.11) with an Intel Core i7 processor, and an Intel Xeon E5-1620 machine running Debian Linux. Same result either way.

agudys commented 7 years ago

Forgive me the delay in response - I have forgotten to assign myself to the issue. I will take a look on the problem.

doomedramen commented 6 years ago

Same issue

agudys commented 6 years ago

Dear Jeremy and Martin, Sorry it took me so long. While pre-built binary is multiplatform and detetermines supported instructions at runtime, you may indeed encounter a problem when building FAMSA on non-AVX machine. At the top of the makefile I added NO_AVX and NO_AVX2 switches that should solve the problem. Please let me know. Adam