Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure to handle SSE definition on some architectures, and synthetictest needs SSE headers #226

Open
pgrt opened this issue Dec 16, 2024 · 0 comments

Comments

@pgrt
Copy link

pgrt commented Dec 16, 2024

Hello,

I am working on upgrading beagle-lib in Debian. It turns out version 4.0.1 cannot build on some architectures like Arm Eabi, Arm hard Float, MIPS, IBM Power, s390x because the emmintrin.h header is unavailable there. Could the mmintrin.h header possibly provide symbols for the source file libhmsbeagle/CPU/SSEDefinitions.h?

Also when I build the software with BUILD_SSE=OFF, all is good on amd64 but on e.g. Arm Eabi I get the error message

/usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_store_notify_all(unsigned int, std::memory_order)': /usr/include/c++/14/bits/atomic_futex.h:278:(.text+0x1620): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
/usr/bin/ld: /usr/include/c++/14/bits/atomic_futex.h:278:(.text+0x3940): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)' /usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_load_and_test_until(unsigned int, unsigned int, bool, std::memory_order, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)':
/usr/include/c++/14/bits/atomic_futex.h:109:(.text+0xae64): undefined reference to std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)' /usr/bin/ld: CMakeFiles/synthetictest.dir/synthetictest/synthetictest.cpp.o: in function std::__atomic_futex_unsigned<2147483648u>::_M_store_notify_all(unsigned int, std::memory_order)':
/usr/include/c++/14/bits/atomic_futex.h:278:(.text._ZNSt13__future_base13_State_baseV216_M_break_promiseESt10unique_ptrINS_12_Result_baseENS2_8_DeleterEE[_ZNSt13__future_base13_State_baseV216_M_break_promiseESt10unique_ptrINS_12_Result_baseENS2_8_DeleterEE]+0x25c): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
collect2: error: ld returned 1 exit status

which suggests synthetictest.cpp might require some SSE symbols on some architectures even if BUILD_SSE is specified.

For the moment in Debian, I have disabled BUILD_SSE and skipped synthetictest, but if you could come up with / have suggestions about solutions to the above problems this would be useful!

Thanks for the develoment of beagle-lib,

Pierre

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant