Yesterday I created an apptainer container based on the official hpc-toolkit docker files. This makes everything more portable and repeatable. I used the makefiles for calculix and arpack which I found in the temporary directory of your build-script. The compilation in this container is successful but when I run an analysis using more than one cpu, the run hangs (or crashes):
************************************************************
CalculiX Version 2.21 i8, Copyright(C) 1998-2023 Guido Dhondt
CalculiX comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under
certain conditions, see gpl.htm
************************************************************
You are using an executable made on Wed May 1 19:03:38 UTC 2024
The numbers below are estimated upper bounds
number of:
nodes: 2638
elements: 2005
one-dimensional elements: 0
two-dimensional elements: 0
integration points per element: 4
degrees of freedom per node: 3
layers per element: 1
distributed facial loads: 0
distributed volumetric loads: 0
concentrated loads: 1
single point constraints: 926
multiple point constraints: 4
terms in all multiple point constraints: 1114
tie constraints: 0
dependent nodes tied by cyclic constraints: 0
dependent nodes in pre-tension constraints: 0
sets: 23
terms in all sets: 4357
materials: 1
constants per material and temperature: 2
temperature points per material: 1
plastic data points per material: 0
orientations: 0
amplitudes: 6
data points in all amplitudes: 6
print requests: 0
transformations: 0
property cards: 0
STEP 1
Static analysis was selected
Decascading the MPC's
Determining the structure of the matrix:
Using up to 8 cpu(s) for setting up the structure of the matrix.
Segmentation fault (core dumped)
Here is my Makefile for ccx:
CFLAGS = -w -D_POSIX_C_SOURCE=199309L -O2 -std=c90 -fiopenmp -DARCH="Linux" -DINTSIZE64 -DMKL_ILP64 -DPARDISO -DLONGLONG -DARPACK -DMATRIXSTORAGE -DUSE_MT=1
FFLAGS = -w -O2 -fiopenmp -i8
CC=icx
FC=ifort
.c.o :
$(CC) $(CFLAGS) -c $<
.f.o :
$(FC) $(FFLAGS) -c $<
include Makefile.inc
SCCXMAIN = ccx_2.21.c
OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)
LIBS = \
/src/arpack-v9.6/libarpack_INTEL.a \
-lpthread -lm
ccx_2.21_MT: $(OCCXMAIN) ccx_2.21_MT.a $(LIBS)
./date.pl; $(CC) $(CFLAGS) -c ccx_2.21.c; $(FC) -qopenmp -nofor-main -o $@ $(OCCXMAIN) ccx_2.21_MT.a $(LIBS) -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread
ccx_2.21_MT.a: $(OCCXF) $(OCCXC)
ar vr $@ $?
and my ARmake.inc for ARpack:
###########################################################################
#
# Program: ARPACK
#
# Module: ARmake.inc
#
# Purpose: Top-level Definitions
#
# Creation date: February 22, 1996
#
# Modified:
#
# Send bug reports, comments or suggestions to arpack@caam.rice.edu
#
############################################################################
#
# %---------------------------------%
# | SECTION 1: PATHS AND LIBRARIES |
# %---------------------------------%
#
#
# %--------------------------------------%
# | You should change the definition of |
# | home if ARPACK is built some place |
# | other than your home directory. |
# %--------------------------------------%
#
home = /src/arpack-v9.6
#
# %--------------------------------------%
# | The platform identifier to suffix to |
# | the end of library names |
# %--------------------------------------%
#
PLAT = INTEL
#
# %------------------------------------------------------%
# | The directories to find the various pieces of ARPACK |
# %------------------------------------------------------%
#
BLASdir = $(home)/BLAS
LAPACKdir = $(home)/LAPACK
UTILdir = $(home)/UTIL
SRCdir = $(home)/SRC
#
DIRS = $(BLASdir) $(LAPACKdir) $(UTILdir) $(SRCdir)
#
# %-------------------------------------------------------------------%
# | Comment out the previous line and uncomment the following |
# | if you already have the BLAS and LAPACK installed on your system. |
# | NOTE: ARPACK assumes the use of LAPACK version 2 codes. |
# %-------------------------------------------------------------------%
#
#DIRS = $(UTILdir) $(SRCdir)
#
# %---------------------------------------------------%
# | The name of the libraries to be created/linked to |
# %---------------------------------------------------%
#
ARPACKLIB = $(home)/libarpack_$(PLAT).a
LAPACKLIB =
BLASLIB =
#
ALIBS = $(ARPACKLIB) $(LAPACKLIB) $(BLASLIB)
#
#
# %---------------------------------------------------------%
# | SECTION 2: COMPILERS |
# | |
# | The following macros specify compilers, linker/loaders, |
# | the archiver, and their options. You need to make sure |
# | these are correct for your system. |
# %---------------------------------------------------------%
#
#
# %------------------------------%
# | Make our own suffixes' list. |
# %------------------------------%
#
.SUFFIXES:
.SUFFIXES: .f .o
#
# %------------------%
# | Default command. |
# %------------------%
#
.DEFAULT:
@$(ECHO) "Unknown target $@, try: make help"
#
# %-------------------------------------------%
# | Command to build .o files from .f files. |
# %-------------------------------------------%
#
.f.o:
@$(ECHO) Making $@ from $<
@$(FC) -c $(FFLAGS) $<
#
# %-----------------------------------------%
# | Various compilation programs and flags. |
# | You need to make sure these are correct |
# | for your system. |
# %-----------------------------------------%
#
FC = ifort
FFLAGS = -O -i8
LDFLAGS =
CD = cd
ECHO = echo
LN = ln
LNFLAGS = -s
MAKE = /usr/bin/make
RM = rm
RMFLAGS = -f
SHELL = /bin/sh
#
# %----------------------------------------------------------------%
# | The archiver and the flag(s) to use when building an archive |
# | (library). Also the ranlib routine. If your system has no |
# | ranlib, set RANLIB = touch. |
# %----------------------------------------------------------------%
#
AR = ar
ARFLAGS = rv
#RANLIB = touch
RANLIB = ranlib
#
# %----------------------------------%
# | This is the general help target. |
# %----------------------------------%
#
help:
@$(ECHO) "usage: make ?"
and the changed second.f file in the UTIL directory of ARpack:
SUBROUTINE SECOND( T )
*
REAL T
*
* -- LAPACK auxiliary routine (preliminary version) --
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
* Courant Institute, Argonne National Lab, and Rice University
* July 26, 1991
*
* Purpose
* =======
*
* SECOND returns the user time for a process in seconds.
* This version gets the time from the system function ETIME.
*
* .. Local Scalars ..
REAL T1
* ..
* .. Local Arrays ..
REAL TARRAY( 2 )
* ..
* .. External Functions ..
REAL ETIME
* EXTERNAL ETIME
* ..
* .. Executable Statements ..
*
T1 = ETIME( TARRAY )
T = TARRAY( 1 )
RETURN
*
* End of SECOND
*
END
By the way, the executable which I created with your build-script inside my Ubuntu VM shows exactly the same problem. @feacluster do you have the same issue?