dmlc-core icon indicating copy to clipboard operation
dmlc-core copied to clipboard

SSE Check Failing on android/aarch64

Open danieldjewell opened this issue 4 years ago • 1 comments

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.

https://github.com/dmlc/dmlc-core/blob/ebcaa42d0b7271265e6a02ff468c6753a8fbecdb/CMakeLists.txt#L187-L190

Likewise, the Makefile makes an implicit assumption that one is running on Intel.

https://github.com/dmlc/dmlc-core/blob/ebcaa42d0b7271265e6a02ff468c6753a8fbecdb/Makefile#L20-L27

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

danieldjewell avatar Jul 15 '20 21:07 danieldjewell

Are you cross-compiling to aarch64? The check_cxx_compiler_flag() macro attempts to compile with -msse2. If the host supports -msse2 but the target does not, we'd have an issue.

hcho3 avatar Jul 15 '20 22:07 hcho3