Fails using PaStiX with eigen
Summary
Failing to compile e.g. the sparse benchmark with support for PaStiX because of at least two problems:
- cmake disables PaStiX backend (pastix_nompi.h).
But even after manipulating to find it:
- the calls to s_pastix, c_pastix, d_pastix, in PastixSupport.h ... are not supported by PaStiX.
Environment
- Operating System : Linux
- Architecture : x64
- Eigen Version : 3.3.9
- Compiler Version : GCC 9.3.0
Minimal Example
- Build and install PaStiX from https://gitlab.inria.fr/solverstack/pastix (tried with head and 6.2.0)
- In eigen-3.3.9: mkdir build; cd build; cmake ..
cmake says "A version of Pastix has been found but pastix_nompi.h does not exist in the include directory. Because Eigen tests require a version without MPI, we disable the Pastix backend."
pastix_nompi.h has existed in very early versions. Avoiding the check in CMakeLists.txt and some other workarounds trick cmake into configuring it as a usable backend.
But then the calls to s_pastix()
, d_pastix()
, z_pastix()
, c_pastix()
from PaStiXSupport.h cannot be compiled (PaStiX only defines pastix()
, which itself is kept around for compatibility).
Steps to reproduce
Try this Dockerfile with the two shell scripts:
FROM ubuntu:21.04
WORKDIR /src
RUN apt-get -y update && apt-get install tzdata && apt-get install -y software-properties-common \
curl make cmake time clang build-essential gfortran python3-pip vim \
libboost-all-dev pkg-config libcurl4-openssl-dev wget git \
cmake lcov \
libhwloc-dev libptscotch-dev libopenblas-base libopenblas-dev liblapack-dev liblapacke liblapacke-dev \
libsuperlu-dev metis libmetis-dev scotch libscotch-dev
COPY install_pastix.sh install_eigen.sh /src
RUN cd /src && chmod a+x *.sh && ./install_pastix.sh && ./install_eigen.sh
# install_pastix.sh:
#!/bin/bash
# git clone --recursive https://gitlab.inria.fr/solverstack/pastix.git
# cd pastix && mkdir build && cd build
# cmake -DPASTIX_INT64=OFF -DPASTIX_WITH_MPI=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON ..
# make all -j4 && make install
# cd /src
# install_eigen.sh:
#!/bin/bash
# wget https://gitlab.com/libeigen/eigen/-/archive/3.3.9/eigen-3.3.9.tar.gz
# tar xvzf eigen-3.3.9.tar.gz
# cd eigen-3.3.9
# mkdir build
# cd build
# cmake ..
Edited by Gerriet Backer