-
Notifications
You must be signed in to change notification settings - Fork 60
Description
Hi,
I would like to know if BEAGLE currently supports AVX.
It appears to be supported in the CMakeLists file:
if (BEAGLE_OPTIMIZE_FOR_NATIVE_ARCH)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
else()
CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED)
if(COMPILER_OPT_ARCH_AVX_SUPPORTED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
endif()
endif()
endif()
My CPU supports AVX. However, when I set BEAGLE_OPTIMIZE_FOR_NATIVE_ARCH to true and compile the code, the generated libraries are libhmsbeagle-cpu.so and libhmsbeagle-cpu.40.so. I was expecting libhmsbeagle-cpu-avx.so and libhmsbeagle-cpu-avx.40.so to be created.
This is because libhmsbeagle-cpu.so and libhmsbeagle-cpu.40.so correspond to BeagleCPU4StateImpl.hpp, not BeagleCPU4StateAVXImpl.hpp. I've noticed that BeagleCPU4StateImpl.hpp does not seem to contain AVX optimizations like those found in BeagleCPU4StateAVXImpl.hpp.
Furthermore, it appears that some methods in BeagleCPU4StateAVXImpl.hpp, such as calcStatesStates, do not support partitions, which would imply they only function correctly with a single partition.
Therefore, my understanding is that BEAGLE does not currently provide full AVX support because the implementation is still under development. Is this correct?
Thank you.
Best,
Minghao