zeeev / wham

Structural variant detection and association testing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Question] Is Linux ARM64 supported ?

gancho-ivanov opened this issue · comments

Hi,

Is ARM64 architecture supported ? Linux and/or MacOS ?

I am trying to build the project on Ubuntu 20.04 ARM64 but it fails with:

mkdir bin
g++ -fstack-protector-all -Wall -DVERSION=\"v1.7.0-311-g4e8c-dirty\" -std=c++0x -Wno-sign-compare -O3 -Isrc/lib -Isrc/bamtools/include -Isrc/bamtools/src -Isrc/ -Isrc/fastahack -Isrc/Complete-Striped-Smith-Waterman-Library/src/ -fopenmp -lz -lm -c -o src/obj/entropy.o src/lib/entropy.cpp
g++ -fstack-protector-all -Wall -DVERSION=\"v1.7.0-311-g4e8c-dirty\" -std=c++0x -Wno-sign-compare -O3 -Isrc/lib -Isrc/bamtools/include -Isrc/bamtools/src -Isrc/ -Isrc/fastahack -Isrc/Complete-Striped-Smith-Waterman-Library/src/ -fopenmp -lz -lm -c -o src/obj/flag.o src/lib/flag.cpp
g++ -fstack-protector-all -Wall -DVERSION=\"v1.7.0-311-g4e8c-dirty\" -std=c++0x -Wno-sign-compare -O3 -Isrc/lib -Isrc/bamtools/include -Isrc/bamtools/src -Isrc/ -Isrc/fastahack -Isrc/Complete-Striped-Smith-Waterman-Library/src/ -fopenmp -lz -lm -c -o src/obj/read_pileup.o src/lib/read_pileup.cpp
g++ -fstack-protector-all -Wall -DVERSION=\"v1.7.0-311-g4e8c-dirty\" -std=c++0x -Wno-sign-compare -O3 -Isrc/lib -Isrc/bamtools/include -Isrc/bamtools/src -Isrc/ -Isrc/fastahack -Isrc/Complete-Striped-Smith-Waterman-Library/src/ -fopenmp -lz -lm -c -o src/obj/readPileUp.o src/lib/readPileUp.cpp
g++ -fstack-protector-all -Wall -DVERSION=\"v1.7.0-311-g4e8c-dirty\" -std=c++0x -Wno-sign-compare -O3 -Isrc/lib -Isrc/bamtools/include -Isrc/bamtools/src -Isrc/ -Isrc/fastahack -Isrc/Complete-Striped-Smith-Waterman-Library/src/ -fopenmp -lz -lm -c -o src/obj/split.o src/lib/split.cpp
cd src/Complete-Striped-Smith-Waterman-Library/src && make
make[1]: Entering directory '/home/gancho/git/wham/src/Complete-Striped-Smith-Waterman-Library/src'
gcc -c -o ssw.o ssw.c -Wall -O3 -pipe 
ssw.c:38:10: fatal error: emmintrin.h: No such file or directory
 #include <emmintrin.h>
          ^~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:47: ssw.o] Error 1
make[1]: Leaving directory '/home/gancho/git/wham/src/Complete-Striped-Smith-Waterman-Library/src'
make: *** [Makefile:29: src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.o] Error 2

emmintrin.h could be used only on x86_64 when SSE is available.

Hm!
mengyao/Complete-Striped-Smith-Waterman-Library@e2c7ccc#diff-ccfb8f3b7607fe494fe5c37a7db56e59cbcef2e76182dc9f8e3e4522e3984c4e added support for SSE2/NEON, but git submodule update checks out commit 8c9933a1685e0ab50c7d8b7926c9068bc0c9d7d2 from https://github.com/mengyao/Complete-Striped-Smith-Waterman-Library which is 7 years old ...

I don't see/understand why it checks out this particular version.

wham/.gitmodules

Lines 7 to 9 in 4e8c9be

[submodule "src/Complete-Striped-Smith-Waterman-Library"]
path = src/Complete-Striped-Smith-Waterman-Library
url = https://github.com/mengyao/Complete-Striped-Smith-Waterman-Library.git
does not specify any revision.

I've updated manually the submodule (cd src/Complete-Striped-Smith-Waterman-Library; git pull --rebase origin master) and now the new problem is:

src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.h:156:8: note:   candidate expects 6 arguments, 5 provided
src/bin/wham.cpp:2201:89: error: no matching function for call to ‘StripedSmithWaterman::Aligner::Align(const char*, const char*, std::__cxx11::basic_string<char>::size_type, StripedSmithWaterman::Filter&, StripedSmithWaterman::Alignment*)’
   aligner.Align(altSeq.c_str(), endChunk.c_str(), endChunk.size(), filter, &alignmentEnd);
                                                                                         ^
In file included from src/bin/wham.cpp:11:0:
src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.h:139:8: note: candidate: bool StripedSmithWaterman::Aligner::Align(const char*, const StripedSmithWaterman::Filter&, StripedSmithWaterman::Alignment*, int32_t) const
   bool Align(const char* query, const Filter& filter, Alignment* alignment, const int32_t maskLen) const;
        ^~~~~
src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.h:139:8: note:   candidate expects 4 arguments, 5 provided
src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.h:156:8: note: candidate: bool StripedSmithWaterman::Aligner::Align(const char*, const char*, const int&, const StripedSmithWaterman::Filter&, StripedSmithWaterman::Alignment*, int32_t) const
   bool Align(const char* query, const char* ref, const int& ref_len,
        ^~~~~
src/Complete-Striped-Smith-Waterman-Library/src/ssw_cpp.h:156:8: note:   candidate expects 6 arguments, 5 provided

Any help is welcome!

I could try to add support for Neon (ARM64) if there is interest in the community!
But the project seems abandoned since 2017 and I am not sure whether such contribution would ever be merged and released.

Hi @julien-faye not completely abandoned; just busy doing other things. AFAIK Whamg is still being used in best-in-class ensemble pipelines.