-
Notifications
You must be signed in to change notification settings - Fork 525
Description
Hello!
The check for sse2 (lines below) is failing on android/aarch64 (specifically Termux on Android). It incorrectly detects that SSE2 is available (which is most certainly is not). I suspect the problem lies in using clang-9 vs gcc-9...
I tested on an RPi running linux (aarch64) with GCC-9 and it seemed to detect properly.
Lines 187 to 190 in ebcaa42
else() | |
set(CMAKE_POSITION_INDEPENDENT_CODE ON) | |
check_cxx_compiler_flag("-msse2" SUPPORT_MSSE2) | |
if(SUPPORT_MSSE2) |
Likewise, the Makefile makes an implicit assumption that one is running on Intel.
Lines 20 to 27 in ebcaa42
ifndef USE_SSE | |
USE_SSE = 1 | |
endif | |
ifeq ($(USE_SSE), 1) | |
CFLAGS += -msse2 | |
endif |
This is in stark contrast to rabit where at least in the Makefile it detects architectures (although, I would argue that the detection logic should really be the other way around: if the detected ARCH is Intel, then + -msse2; else: -march=native)
https://github.com/dmlc/rabit/blob/74bf00a5ab4594f1695a8ea960394ce89f4a44d0/Makefile#L20-L25