Skip to content

SSE Check Failing on android/aarch64  #629

Description

@danieldjewell

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.

dmlc-core/CMakeLists.txt

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.

dmlc-core/Makefile

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions