ekg / seqwish

alignment to variation graph inducer
MIT License
143 stars 18 forks source link

Still generic on aarch64 #104

Closed AndreaGuarracino closed 1 year ago

AndreaGuarracino commented 1 year ago

@julien-faye, @martin-g, could you please check if you are able to build such a branch with your Linux ARM64 systems?

martin-g commented 1 year ago

I guess it won't work but I will be able to say for sure at Wednesday. The current CI check on aarch64 passes because it uses Release mode.

AndreaGuarracino commented 1 year ago

Thank you for your reply, @martin-g. I would like to know what it happens with both

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build -- -j 3

and

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Generic && cmake --build build -- -j 3

On my system (Ubuntu 22.04, AMD Ryzen5), I need this branch (still_generic) to be able to compile seqwish in Generic mode. This also allows pggb to pass CI here https://github.com/pangenome/pggb/pull/240.

julien-faye commented 1 year ago

Hi @AndreaGuarracino !

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build -- -j 3

still passes!

but

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Generic && cmake --build build -- -j 3

fails with:

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Generic && cmake --build build -- -j 3
-- CMAKE_BUILD_TYPE: Generic
-- CMAKE_SYSTEM_NAME: Linux
-- Found OpenMP_C: -fopenmp  
-- Found OpenMP_CXX: -fopenmp  
-- Found OpenMP: TRUE   
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/tmp/seqwish/build
[  7%] Built target sdsl-lite
[ 21%] Built target paryfor
[ 21%] Built target tayweeargs
[ 28%] Built target gzipreader
[ 39%] Built target mmmulti
[ 42%] Built target atomicqueue
[ 49%] Built target iitii
[ 55%] Built target atomicbitvector
[ 62%] Built target bbhash
[ 69%] Built target ips4o
[ 76%] Built target ska
[ 82%] Built target mio
[ 83%] Building CXX object CMakeFiles/seqwish.dir/src/utils.cpp.o
[ 84%] Building CXX object CMakeFiles/seqwish.dir/src/tempfile.cpp.o
[ 84%] Building CXX object CMakeFiles/seqwish.dir/src/main.cpp.o
cc1plus: error: unknown value ‘haswell’ for ‘-march’
cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a native
cc1plus: error: unknown value ‘haswell’ for ‘-march’
cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a native
make[2]: *** [CMakeFiles/seqwish.dir/build.make:63: CMakeFiles/seqwish.dir/src/utils.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1plus: error: unknown value ‘haswell’ for ‘-march’
cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a native
make[2]: *** [CMakeFiles/seqwish.dir/build.make:76: CMakeFiles/seqwish.dir/src/tempfile.cpp.o] Error 1
make[2]: *** [CMakeFiles/seqwish.dir/build.make:89: CMakeFiles/seqwish.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:435: CMakeFiles/seqwish.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

As @martin-g guessed the build fails when the build type is anything different than Release on Linux ARM64 (Ubuntu 20.04.5)

AndreaGuarracino commented 1 year ago

-march=haswell allows us to compile seqwish in Generic mode (that is, without -march=native, which is too bounded to the system where the tool is compiled) when building the Docker image of pggb (https://github.com/pangenome/pggb/blob/master/Dockerfile#L60). I wonder if such pggb's Docker images would run on your systems.

For now, we go this way, hoping for more general solutions in the future. Thank you very much for your feedback!

martin-g commented 1 year ago

@AndreaGuarracino I will propose a PR where haswell will be set as a default but the user could override it with cmake -D.... Coming in few minutes!