ExaScience / smurff

Bayesian Factorization with Side Information in C++ with Python wrapper
MIT License
70 stars 14 forks source link

Support for arm64 #156

Open azimgivron opened 3 days ago

azimgivron commented 3 days ago

Hello,

Currently smurff only support amd64 arch, I would like to extend it to arm64. I have started to make a Dockerfile. I can install all dependencies by upgrading high-five to 2.3 but the compilation of smurff failed.

Here is the Dockerfile:

FROM --platform=linux/arm64 debian:bookworm

# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive
ENV PATH="/home/$USERNAME/venv/bin:$PATH"

# Update and install necessary packages in one step
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    python3 python3-pip zsh git wget unzip sudo cmake g++ \
    libblas-dev liblapack-dev liblapacke-dev libopenmpi-dev openmpi-bin \
    libeigen3-dev libboost-all-dev ca-certificates libhdf5-dev gdb vim \
    python3-pybind11 python3-setuptools python3-h5py python3-parameterized \
    build-essential && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# Clone, build, and install HighFive and Smurff in one step
RUN mkdir -p /tmp/build && cd /tmp/build && \
    git clone --branch v2.3 https://github.com/BlueBrain/HighFive.git && \
    cd HighFive && mkdir build && cd build && \
    cmake .. -DHIGHFIVE_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local && \
    make install && \
    cd /tmp/build && \
    git clone --branch v0.17.0 https://github.com/ExaScience/smurff.git && \
    cd smurff && \
    python3 setup.py install --install-binaries && \
    rm -rf /tmp/build

# Default shell and command
SHELL ["/bin/bash", "-c"]
CMD ["bash"]

The error occurs at the command: python3 setup.py install --install-binaries

the trace is:

Initializing cmake ...
74.47 Fetching os and compiler ...
74.47 -- OS: Unix system
74.47 -- Compiler is a gcc variant
74.47 Initializing versioning...
74.48 -- GIT commit count 3811
74.49 -- GIT commit SHA e7b82d56be937ec4088133de9848dad2df0de964
74.49 -- GIT branch tags/v0.17.0^0
74.49 -- GIT describe v0.17.0
74.49 -- Cleaned version: v0.17.0
74.49 Analyzing build type...
74.49 Checking build dependencies...
74.49 -- Release build.
74.49 -- Initializing logging options...
74.49 -- Using 'double' as main computing type
74.49 Dependency check for eigen...
74.49 -- EIGEN3:/usr/include/eigen3
74.49 Dependency check for HighFive...
74.49 -- HIGHFIVE 2.3: (Re)Detecting Highfive dependencies (HIGHFIVE_USE_INSTALL_DEPS=NO)
74.60 -- Found HDF5: /usr/lib/aarch64-linux-gnu/hdf5/serial/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libpthread.a;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so (found version "1.10.8")  
74.60 Dependency check for boost...
74.61 -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found version "1.74.0") found components: system program_options filesystem 
74.61 -- Found Boost_VERSION: 1.74.0
74.61 -- Found Boost_INCLUDE_DIRS: /usr/include
74.61 -- Found Boost_LIBRARY_DIRS: /usr/lib/aarch64-linux-gnu
74.61 -- Found Boost_LIBRARIES: Boost::system;Boost::program_options;Boost::filesystem
74.61 Dependency check for OpenMP
74.75 -- Found OpenMP_C: -fopenmp (found version "4.5") 
74.80 -- Found OpenMP_CXX: -fopenmp (found version "4.5") 
74.80 -- Found OpenMP: TRUE (found version "4.5")  
74.80 -- OpenMP found
74.80 -- OpenMP_CXX_LIB_NAMES gomp;pthread
74.80 -- OpenMP_CXX_LIBRARY 
74.80 -- OpenMP_CXX_LIBRARIES /usr/lib/gcc/aarch64-linux-gnu/12/libgomp.so;/usr/lib/aarch64-linux-gnu/libpthread.a
74.80 -- OpenMP_CXX_INCLUDE_DIRS 
74.80 -- OpenMP_CXX_FLAGS -fopenmp
74.80 Dependency check for lapack...
74.80 -- Looking for sgemm_
74.84 -- Looking for sgemm_ - not found
74.84 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
74.88 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
74.88 -- Found Threads: TRUE  
74.89 -- Looking for sgemm_
74.93 -- Looking for sgemm_ - found
74.93 -- Found BLAS: /usr/lib/aarch64-linux-gnu/libblas.so  
74.93 -- Looking for cheev_
74.97 -- Looking for cheev_ - not found
74.98 -- Looking for cheev_
75.02 -- Looking for cheev_ - found
75.02 -- Found LAPACK: /usr/lib/aarch64-linux-gnu/liblapack.so;/usr/lib/aarch64-linux-gnu/libblas.so  
75.02 -- A cache variable, namely LAPACKE_DIR, has been set to specify the install directory of LAPACKE
75.02 -- Looking for LAPACKE_dgeqrf
75.06 -- Looking for LAPACKE_dgeqrf - not found
75.06 -- Looking for lapacke : test with lapack fails
75.06 -- Looking for LAPACKE_dgeqrf
75.11 -- Looking for LAPACKE_dgeqrf - found
75.11 -- Found LAPACKE: /usr/lib/aarch64-linux-gnu/liblapacke.so  
75.11 -- LAPACK:/usr/lib/aarch64-linux-gnu/liblapack.so/usr/lib/aarch64-linux-gnu/libblas.so
75.11 -- Algebra lib name:  LAPACK
75.11 -- Algebra libs: /usr/lib/aarch64-linux-gnu/liblapacke.so;/usr/lib/aarch64-linux-gnu/liblapack.so;/usr/lib/aarch64-linux-gnu/libblas.so
75.11 -- Creating folder structure...
75.12 -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.11.2", minimum required is "3.6") 
75.13 -- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.11.so
75.13 -- Performing Test HAS_FLTO
75.22 -- Performing Test HAS_FLTO - Success
75.22 -- Found pybind11: /usr/include (found version "2.10.3")
75.22 -- Configuring done
75.24 -- Generating done
75.24 -- Build files have been written to: /tmp/build/smurff/build/temp.linux-aarch64-cpython-311
75.27 [  3%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Model.cpp.o
75.27 [  3%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/StatusItem.cpp.o
75.27 [  4%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/HDF5Group.cpp.o
75.27 [  6%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/Distribution.cpp.o
75.27 [  7%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/result.cpp.o
75.27 [  9%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/MatrixUtils.cpp.o
75.28 [ 10%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/InvNormCdf.cpp.o
75.28 [ 12%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/StateFile.cpp.o
75.28 [ 13%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/SaveState.cpp.o
75.29 [ 15%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/StringUtils.cpp.o
75.30 [ 16%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/TruncNorm.cpp.o
75.30 [ 18%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/counters.cpp.o
75.30 [ 19%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/omp_util.cpp.o
75.30 [ 21%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Configs/DataConfig.cpp.o
75.30 [ 22%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Utils/Tensor.cpp.o
75.31 [ 24%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Configs/NoiseConfig.cpp.o
75.31 [ 25%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Configs/Config.cpp.o
75.32 [ 27%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Configs/SideInfoConfig.cpp.o
75.33 [ 28%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/FixedGaussianNoise.cpp.o
75.34 [ 30%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/AdaptiveGaussianNoise.cpp.o
75.35 [ 31%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/GaussianNoise.cpp.o
75.36 [ 33%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/ProbitNoise.cpp.o
75.38 [ 34%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/INoiseModel.cpp.o
75.38 [ 36%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/NoiseFactory.cpp.o
75.39 [ 37%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/SampledGaussianNoise.cpp.o
75.40 [ 39%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Noises/UnusedNoise.cpp.o
75.41 [ 40%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/MacauOnePrior.cpp.o
75.41 [ 42%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/ILatentPrior.cpp.o
75.42 [ 43%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/SpikeAndSlabPrior.cpp.o
75.42 [ 45%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/NormalPrior.cpp.o
75.43 [ 46%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/MacauPrior.cpp.o
75.45 [ 48%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/PriorFactory.cpp.o
75.46 [ 50%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Priors/NormalOnePrior.cpp.o
75.49 [ 51%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/DenseMatrixData.cpp.o
75.51 [ 53%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/MatrixData.cpp.o
75.51 [ 54%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/Data.cpp.o
75.51 [ 56%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/MatricesData.cpp.o
75.53 [ 57%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/SparseMatrixData.cpp.o
75.53 [ 59%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataMatrices/ScarceMatrixData.cpp.o
75.59 [ 60%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataTensors/TensorData.cpp.o
75.59 [ 62%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/DataTensors/SparseMode.cpp.o
75.61 [ 63%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Sessions/ISession.cpp.o
75.61 [ 65%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Sessions/CmdSession.cpp.o
75.62 [ 66%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Sessions/PythonSession.cpp.o
75.64 [ 68%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Sessions/TrainSession.cpp.o
75.68 [ 69%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/SideInfo/SparseSideInfo.cpp.o
75.69 [ 71%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/SideInfo/DenseSideInfo.cpp.o
75.72 [ 72%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/SideInfo/linop.cpp.o
75.72 [ 74%] Building CXX object cpp/SmurffCpp/CMakeFiles/smurff-cpp.dir/Predict/PredictSession.cpp.o
142.4 [ 75%] Linking CXX static library libsmurff-cpp.a
142.5 [ 75%] Built target smurff-cpp
142.5 [ 78%] Building CXX object cpp/Smurff/CMakeFiles/smurff.dir/smurff.cpp.o
142.5 [ 80%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsPredict.cpp.o
142.5 [ 80%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsLinop.cpp.o
142.5 [ 81%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsInputData.cpp.o
142.5 [ 83%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsPVec.cpp.o
142.5 [ 84%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsSparseSideInfo.cpp.o
142.5 [ 86%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsDistribution.cpp.o
142.5 [ 87%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsRandom.cpp.o
142.5 [ 89%] Building CXX object python/CMakeFiles/wrapper.dir/smurff/wrapper.cpp.o
142.5 [ 90%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsMatrixVsTensor.cpp.o
142.5 [ 92%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/tests.cpp.o
142.5 [ 93%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsTensorData.cpp.o
142.5 [ 95%] Building CXX object cpp/Tests/CMakeFiles/tests.dir/TestsSmurff.cpp.o
144.8 In file included from /usr/include/signal.h:328,
144.8                  from /tmp/build/smurff/cpp/Tests/catch.hpp:7864,
144.8                  from /tmp/build/smurff/cpp/Tests/tests.cpp:2:
144.8 /tmp/build/smurff/cpp/Tests/catch.hpp:10717:58: error: call to non-‘constexpr’ function ‘long int sysconf(int)’
144.8 10717 |     static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
144.8       |                                                          ^~~~~~~~~~~
144.8 In file included from /usr/include/aarch64-linux-gnu/bits/sigstksz.h:24:
144.8 /usr/include/unistd.h:640:17: note: ‘long int sysconf(int)’ declared here
144.8   640 | extern long int sysconf (int __name) __THROW;
144.8       |                 ^~~~~~~
144.8 /tmp/build/smurff/cpp/Tests/catch.hpp:10776:45: error: size of array ‘altStackMem’ is not an integral constant-expression
144.8 10776 |     char FatalConditionHandler::altStackMem[sigStackSize] = {};
144.8       |                                             ^~~~~~~~~~~~
149.1 [ 96%] Linking CXX executable ../../bin/smurff
149.6 [ 96%] Built target smurff
152.4 gmake[2]: *** [cpp/Tests/CMakeFiles/tests.dir/build.make:216: cpp/Tests/CMakeFiles/tests.dir/tests.cpp.o] Error 1
152.4 gmake[2]: *** Waiting for unfinished jobs....
154.0 [ 98%] Linking CXX shared module /tmp/build/smurff/build/lib.linux-aarch64-cpython-311/smurff/wrapper.cpython-311-aarch64-linux-gnu.so
154.2 gmake[1]: *** [CMakeFiles/Makefile2:204: cpp/Tests/CMakeFiles/tests.dir/all] Error 2
154.2 gmake[1]: *** Waiting for unfinished jobs....
154.3 lto-wrapper: warning: using serial compilation of 5 LTRANS jobs
154.3 lto-wrapper: note: see the ‘-flto’ option documentation for more information
157.7 [ 98%] Built target wrapper
157.7 gmake: *** [Makefile:146: all] Error 2
157.7 Traceback (most recent call last):
157.7   File "/tmp/build/smurff/setup.py", line 105, in <module>
157.7     setup(
157.7   File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 108, in setup
157.7     return distutils.core.setup(**attrs)
157.7            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 185, in setup
157.7     return run_commands(dist)
157.7            ^^^^^^^^^^^^^^^^^^
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 201, in run_commands
157.7     dist.run_commands()
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands
157.7     self.run_command(cmd)
157.7   File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
157.7     super().run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
157.7     cmd_obj.run()
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 74, in run
157.7     self.do_egg_install()
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 123, in do_egg_install
157.7     self.run_command('bdist_egg')
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
157.7     self.distribution.run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
157.7     super().run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
157.7     cmd_obj.run()
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 165, in run
157.7     cmd = self.call_command('install_lib', warn_dir=0)
157.7           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 151, in call_command
157.7     self.run_command(cmdname)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
157.7     self.distribution.run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
157.7     super().run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
157.7     cmd_obj.run()
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/install_lib.py", line 23, in run
157.7     self.build()
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install_lib.py", line 112, in build
157.7     self.run_command('build_ext')
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
157.7     self.distribution.run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
157.7     super().run_command(command)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
157.7     cmd_obj.run()
157.7   File "/usr/lib/python3/dist-packages/setuptools/command/build_ext.py", line 84, in run
157.7     _build_ext.run(self)
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build_ext.py", line 346, in run
157.7     self.build_extensions()
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build_ext.py", line 468, in build_extensions
157.7     self._build_extensions_serial()
157.7   File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build_ext.py", line 494, in _build_extensions_serial
157.7     self.build_extension(ext)
157.7   File "/tmp/build/smurff/setup.py", line 62, in build_extension
157.7     subprocess.check_call(['cmake', '--build', '.' ] + build_args, cwd=self.build_temp)
157.7   File "/usr/lib/python3.11/subprocess.py", line 413, in check_call
157.7     raise CalledProcessError(retcode, cmd)
157.7 subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--config', 'Release', '--parallel', '--']' returned non-zero exit status 2.
------
Dockerfile:18
--------------------
  17 |     # Clone, build, and install HighFive and Smurff in one step
  18 | >>> RUN mkdir -p /tmp/build && cd /tmp/build && \
  19 | >>>     git clone --branch v2.3 https://github.com/BlueBrain/HighFive.git && \
  20 | >>>     cd HighFive && mkdir build && cd build && \
  21 | >>>     cmake .. -DHIGHFIVE_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local && \
  22 | >>>     make install && \
  23 | >>>     cd /tmp/build && \
  24 | >>>     git clone --branch v0.17.0 https://github.com/ExaScience/smurff.git && \
  25 | >>>     cd smurff && \
  26 | >>>     python3 setup.py install --install-binaries && \
  27 | >>>     rm -rf /tmp/build
  28 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c mkdir -p /tmp/build && cd /tmp/build &&     git clone --branch v2.3 https://github.com/BlueBrain/HighFive.git &&     cd HighFive && mkdir build && cd build &&     cmake .. -DHIGHFIVE_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local &&     make install &&     cd /tmp/build &&     git clone --branch v0.17.0 https://github.com/ExaScience/smurff.git &&     cd smurff &&     python3 setup.py install --install-binaries &&     rm -rf /tmp/build" did not complete successfully: exit code: 1

Basically, the error occurs at

144.8 /tmp/build/smurff/cpp/Tests/catch.hpp:10717:58: error: call to non-‘constexpr’ function ‘long int sysconf(int)’

Any clue why it happens specifically on arm64 ?

tvandera commented 1 day ago

Seems like catch.hpp is too old, or the compiler too new. I'll have a look

tvandera commented 1 day ago

Can you try the master branch version: https://github.com/ExaScience/smurff/tree/master/ci/docker If you want debian, you can probably use Dockerfile.ubuntu as a template

tvandera commented 1 day ago

master branch seems to work

root@f436914b9660:/build# ./cpp/Smurff/smurff --bist
Randomness seeded to: 428978522
===============================================================================
All tests passed (3063 assertions in 96 test cases)

root@f436914b9660:/build# uname -a
Linux f436914b9660 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 aarch64 GNU/Linux