Thanks for sharing your findings!
I was able to build CalculiX with PaStiX (without CUDA) on macOS with minor modifications.
In case someone ends up here with the same intentions:
- Use Kabbone’s version of PaStiX4CalculiX: GitHub - Kabbone/PaStiX4CalculiX
- Install scotch, hwloc, openblas, lapack using hombrew
- Make sure you have a python2 installation somewhere (I got mine using pyenv)
#!/bin/bash
if ! [[ -d build ]]; then
mkdir build
fi
cd build
INSTALLPATH="./"
SCOTCHDIR="/opt/homebrew/Cellar/scotch/7.0.7"
HWLOCDIR="/opt/homebrew/Cellar/hwloc/2.12.0"
BLASDIR="/opt/homebrew/Cellar/openblas/0.3.29"
LAPACKDIR="/opt/homebrew/Cellar/lapack/3.12.1"
cmake \
-DCMAKE_INSTALL_PREFIX=${INSTALLPATH} \
-DCMAKE_BUILD_TYPE=Release \
-DPASTIX_WITH_PARSEC=OFF \
-DSCOTCH_DIR=${SCOTCHDIR} \
-DHWLOC_DIR=${HWLOCDIR} \
-DLAPACK_DIR=${LAPACKDIR} \
-DBLAS_DIR=${BLASDIR} \
-DPASTIX_ORDERING_SCOTCH=ON \
-DCMAKE_C_COMPILER=gcc-14 \
-DCMAKE_CXX_COMPILER=g++-14 \
-DCMAKE_Fortran_COMPILER=gfortran-14 \
-DCMAKE_C_FLAGS="-framework accelerate -fopenmp -Wno-error=implicit-function-declaration" \
-DPASTIX_INT64=OFF \
-DPYTHON_EXECUTABLE=python2.7 \
..
make -j4
make install
I additionally had to change the version number to 3.5 in some cmake files, since I was using a more recent cmake version:
cmake_minimum_required (VERSION 3.5)
(cmake will complain and show you the affected files)
And finally, here is my CalculiX Makefile:
PASTIX_DIR=../../PaStiX4CalculiX/build
SCOTCH_DIR=/opt/homebrew/Cellar/scotch/7.0.7
HWLOC_DIR=/opt/homebrew/Cellar/hwloc/2.12.0
BLAS_DIR=/opt/homebrew/Cellar/openblas/0.3.29
LAPACK_DIR=/opt/homebrew/Cellar/lapack/3.12.1
INCLUDES= \
$(PASTIX_DIR)/include \
LIBS = \
../../arpack/libarpack_arm.a \
$(PASTIX_DIR)/lib/libpastix.a \
$(PASTIX_DIR)/lib/libpastix_kernels.a \
$(PASTIX_DIR)/lib/libspm.a \
$(SCOTCH_DIR)/lib/libscotch.dylib \
$(SCOTCH_DIR)/lib/libscotcherrexit.dylib \
$(HWLOC_DIR)/lib/libhwloc.dylib \
$(LAPACK_DIR)/lib/liblapacke.dylib \
-lpthread -lm -lc -L/opt/homebrew/opt/libomp/lib -lomp \
-lstdc++ \
-framework Accelerate
CFLAGS = -Wall -O3 -I $(INCLUDES) -DARCH="Linux" -DPASTIX -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -Wno-error=implicit-function-declaration -Wno-error=int-conversion \
-I$(PASTIX_DIR)/include \
-I$(SCOTCH_DIR)/include \
-I$(HWLOC_DIR)/include \
-I$(BLAS_DIR)/include
FFLAGS = -Wall -O3 -fopenmp -cpp
CC=gcc-14
FC=gfortran-14
.c.o :
$(CC) $(CFLAGS) -c $<
.f.o :
$(FC) $(FFLAGS) -c $<
include Makefile.inc
SCCXMAIN = CalculiX.c
OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)
CalculiX_PaStiX_i4: $(OCCXMAIN) libCalculiX.a
$(CC) $(CFLAGS) -c CalculiX.c; $(FC) -o $@ $(OCCXMAIN) libCalculiX.a $(LIBS) -fopenmp
libCalculiX.a: $(OCCXF) $(OCCXC)
ar vr $@ $?