[Users] SummationByParts c_file_processor issues

Samuel Tootle tootle at itp.uni-frankfurt.de
Fri Feb 17 16:05:21 CST 2023


For the compiling gurus:

I've been working towards finalizing the FUKA importer build system for 
inclusion into the ETK and I've recently added additional thorns to the 
build list to run the test par. For completeness, I'm compiling in the 
following way:

    yes | make test-config THORNLIST=thornlist/test.th options=test.cfg;
    make test:

Currently, all thorns compile successfully except for SummationByParts 
which gives the following error:

    /home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src/get_offset.c:49:17:
    error: redefinition of ‘get_shiftout’
        49 | void CCTK_FCALL CCTK_FNAME(get_shiftout)( const
    CCTK_POINTER_TO_CONST cctkGH_,
           |                 ^~~~~~~~~~~~
    /home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src/get_offset.c:11:6:
    note: previous definition of ‘get_shiftout’ with type ‘void(const
    void * const,  CCTK_INT4 *)’ {aka ‘void(const void * const,  int *)’}
        11 | void get_shiftout ( const CCTK_POINTER_TO_CONST cctkGH_,

What appears to be happening is that the c_file_processor.pl is not 
handling the generation of creating a fortran function in place of 
CCTK_FNAME so far as I understand it.  For instance, if I check the 
`Cactus/configs/test/build/SummationByParts/get_offset.c` file, the 
CCTK_FNAME statement is still there.  Conversely, if I check 
`Cactus/configs/test/build/Boundary/FlatBoundary.c` which also uses 
CCTK_FNAME, these statements have been correctly removed by the 
pre-processor.

Oddly enough, if I run `make test --just-print` I obtain the following 
which suggests that it is at least executing the processor correctly.

    Checking status of thorn SummationByParts
    if [ ! -d ./ ] ; then mkdir -p ./ ; fi
    cd ./ ;
    make CCTK_TARGET=make.checked
    TOP=/home/user/lib/ETKREL/Cactus/configs/test
    CONFIG=/home/user/lib/ETKREL/Cactus/configs/test/config-data
    SRCDIR=/home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src
    THORN=SummationByParts USESTHORNS="" -f
    /home/user/lib/ETKREL/Cactus/lib/make/make.subdir{if test yes =
    'yes'; then echo '#line 1
    "'/home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src/get_offset.c'"';
    fi;
         cat
    /home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src/get_offset.c;
    } | perl -s
    /home/user/lib/ETKREL/Cactus/lib/sbin/c_file_processor.pl
    -line_directives=yes
    -source_file_name=/home/user/lib/ETKREL/Cactus/arrangements/CactusNumerical/SummationByParts/src/get_offset.c
    /home/user/lib/ETKREL/Cactus/configs/test/config-data > get_offset.c
    echo COMPILING CactusNumerical/SummationByParts/src/get_offset.c

I have compared the above to the compilation of 
Boundary/src/FlatBoundary.c which compiles successfully and also 
includes the generation of a number of Fortran functions using 
CCTK_FNAME.  So far, no discrepancies have been found that would 
highlight why summationbyparts is failing.

I will continue to try and resolve this, but I hope someone with more 
experience with the pre-processors will be able to shed some light on 
the issue.

Cheers,

Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.einsteintoolkit.org/pipermail/users/attachments/20230217/352281ee/attachment.html 
-------------- next part --------------
# Component list for the Einstein Toolkit <http://einsteintoolkit.org/>
# $Revision$
# $Date$
# $HeadURL$

!CRL_VERSION = 1.0

!DEFINE ROOT = Cactus
!DEFINE ARR  = $ROOT/arrangements
!DEFINE COMPONENTLIST_TARGET = $ROOT/thornlists/


# A note on CUDA and OpenCL:

# The thorns supporting and using CUDA and OpenCL are working and are
# part of the Einstein Toolkit. However, these thorns are currently
# commented out in this thorn list because most machines do not have
# CUDA or OpenCL libraries installed, and there are no good, free CUDA
# or OpenCL implementations yet which could be shipped with Cactus.

# If you want to experiment with CUDA or OpenCL and use these thorns
# (or look at their documentation), then uncomment these thorns in
# this thorn list, and use GetComponents to download these thorns.

# You have to uncomment these thorns (not here, but further below):
#   - CactusExamples/HelloWorldCUDA
#   - CactusExamples/HelloWorldOpenCL
#   - CactusExamples/WaveToyOpenCL
#   - CactusUtils/OpenCLRunTime
#   - CactusUtils/Accelerator
#   - ExternalLibraries/OpenCL
#   - McLachlan/ML_WaveToy_CL

# To download these thorns via GetComponents, use then the following
# command (on the same system where you originally used
# GetComponents):

#   cd Cactus (or whatever your source tree is called)
#   bin/GetComponents --update --root=. manifest/einsteintoolkit.th



# Cactus Flesh
!TARGET   = $ROOT
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactus.git
!NAME     = flesh
!CHECKOUT = .clang-format CONTRIBUTORS COPYRIGHT doc lib Makefile README.md src

# CactusBase thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusbase.git
!REPO_PATH= $2
!CHECKOUT =
CactusBase/Boundary
CactusBase/CartGrid3D
CactusBase/CoordBase
CactusBase/Fortran
CactusBase/InitBase
CactusBase/IOASCII
CactusBase/IOBasic
CactusBase/IOUtil
CactusBase/SymBase
CactusBase/Time

# CactusNumerical thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusnumerical.git
!REPO_PATH= $2
!CHECKOUT =
CactusNumerical/Cartoon2D
CactusNumerical/Dissipation
CactusNumerical/InterpToArray
CactusNumerical/LocalInterp
CactusNumerical/LocalInterp2
CactusNumerical/LocalReduce
CactusNumerical/MoL
CactusNumerical/Noise
CactusNumerical/Norms
CactusNumerical/Periodic
CactusNumerical/ReflectionSymmetry
CactusNumerical/RotatingSymmetry180
CactusNumerical/RotatingSymmetry90
CactusNumerical/Slab
CactusNumerical/SlabTest
CactusNumerical/SpaceMask
CactusNumerical/SphericalSurface
CactusNumerical/SummationByParts
CactusNumerical/TensorTypes
CactusNumerical/TestLocalInterp2
CactusNumerical/TestLocalReduce

# CactusUtils thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusutils.git
!REPO_PATH= $2
!CHECKOUT = CactusUtils/Accelerator CactusUtils/OpenCLRunTime
#DISABLED CactusUtils/Accelerator
#DISABLED CactusUtils/Formaline
CactusUtils/MemSpeed
CactusUtils/NaNCatcher
CactusUtils/NaNChecker
CactusUtils/Nice
CactusUtils/NoMPI
#DISABLED CactusUtils/OpenCLRunTime
CactusUtils/SystemStatistics
CactusUtils/SystemTopology
CactusUtils/TerminationTrigger
CactusUtils/TimerReport
CactusUtils/Trigger
CactusUtils/Vectors
CactusUtils/WatchDog

# Carpet, the AMR driver
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/eschnett/carpet.git
!REPO_PATH= $2
!CHECKOUT = Carpet/doc
Carpet/Carpet
Carpet/CarpetEvolutionMask
Carpet/CarpetIOASCII
Carpet/CarpetIOBasic
Carpet/CarpetIOHDF5
Carpet/CarpetIOScalar
Carpet/CarpetIntegrateTest
Carpet/CarpetInterp
Carpet/CarpetInterp2
Carpet/CarpetLib
Carpet/CarpetMask
Carpet/CarpetProlongateTest
Carpet/CarpetReduce
Carpet/CarpetRegrid
Carpet/CarpetRegrid2
Carpet/CarpetRegridTest
Carpet/CarpetSlab
Carpet/CarpetTracker
Carpet/CycleClock
Carpet/HighOrderWaveTest
Carpet/LoopControl
Carpet/PeriodicCarpet
#Carpet/ReductionTest
#Carpet/ReductionTest2
#Carpet/ReductionTest3
Carpet/RegridSyncTest
#Carpet/TestCarpetGridInfo
#Carpet/TestLoopControl
Carpet/Timers



# EinsteinBase
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/einsteintoolkit/einsteinbase.git
!REPO_PATH= $2
!CHECKOUT =
EinsteinBase/ADMBase
EinsteinBase/ADMCoupling        # deprecated
EinsteinBase/ADMMacros          # deprecated
EinsteinBase/Constants
EinsteinBase/CoordGauge
EinsteinBase/EOS_Base
EinsteinBase/HydroBase
EinsteinBase/StaticConformal
EinsteinBase/TmunuBase

# EinsteinAnalysis
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/einsteintoolkit/einsteinanalysis.git
!REPO_PATH= $2
!CHECKOUT =
#EinsteinAnalysis/ADMAnalysis
#EinsteinAnalysis/ADMMass
#EinsteinAnalysis/AHFinder
EinsteinAnalysis/AHFinderDirect
#EinsteinAnalysis/CalcK
#EinsteinAnalysis/EHFinder
#EinsteinAnalysis/Extract
#EinsteinAnalysis/Hydro_Analysis
#EinsteinAnalysis/Multipole
#EinsteinAnalysis/Outflow
#EinsteinAnalysis/PunctureTracker
#EinsteinAnalysis/QuasiLocalMeasures
#EinsteinAnalysis/WeylScal4



# Additional Cactus thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://github.com/EinsteinToolkit/$1-$2
!REPO_PATH = ../$1-$2
!CHECKOUT = ExternalLibraries/OpenBLAS ExternalLibraries/OpenCL ExternalLibraries/pciutils ExternalLibraries/PETSc
ExternalLibraries/BLAS
ExternalLibraries/FFTW3
ExternalLibraries/GSL
ExternalLibraries/HDF5
ExternalLibraries/hwloc
ExternalLibraries/LAPACK
ExternalLibraries/libjpeg
#ExternalLibraries/LORENE
ExternalLibraries/MPI
#DISABLED ExternalLibraries/OpenBLAS
#DISABLED ExternalLibraries/OpenCL
ExternalLibraries/OpenSSL
#DISABLED ExternalLibraries/PAPI
#DISABLED ExternalLibraries/pciutils
#DISABLED ExternalLibraries/PETSc
ExternalLibraries/pthreads
ExternalLibraries/zlib

# Numerical
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/numerical.git
!REPO_PATH= $2
!CHECKOUT =
Numerical/AEILocalInterp


# fuka thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/fukaws/$2
!REPO_PATH=../$2
!REPO_BRANCH = dev # FIXME
!CHECKOUT = 
Fuka/KadathImporter
#disabled fuka/kadathpizza
Fuka/KadathThorn


# Private thorns
!TARGET   = $ARR
!TYPE     = ignore
!CHECKOUT =
-------------- next part --------------
# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = fuka_testing

CPP = cpp
FPP = cpp
CC  = mpicc
CXX = mpicxx
F90 = mpif90
F77 = mpif77

#CPPFLAGS = -DMPICH_IGNORE_CXX_SEEK  -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED
FPPFLAGS = -traditional
#CFLAGS   = -std=c99 -gcc-sys -march=core-avx2 -fma -ftz -fomit-frame-pointer -U__STRICT_ANSI__
#CXXFLAGS = -std=c++14 -gcc-sys -march=core-avx2 -fma -ftz -fomit-frame-pointer -traceback -D_intel_fast_memcpy=memcpy -D_intel_fast_memset=memset
#F77FLAGS = -safe_cray_ptr -traceback -assume underscore -march=core-avx2 -align array64byte -fma -ftz -fomit-frame-pointer
#F90FLAGS = -safe_cray_ptr -traceback -assume underscore -nogen-interfaces -march=core-avx2 -align array64byte -fma -ftz -fomit-frame-pointer

CPPFLAGS = -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED
#FPPFLAGS = 
CFLAGS   = -std=c99 -U__STRICT_ANSI__
CXXFLAGS = -std=c++17 -fomit-frame-pointer
F77FLAGS =  -fcray-pointer -fno-underscoring -ffixed-line-length-none -fno-range-check 
F90FLAGS =  -fcray-pointer -fno-underscoring -ffixed-line-length-none -fno-range-check 
#LDFLAGS = -ludev

DISABLE_REAL16 = yes

C_LINE_DIRECTIVES = yes
F_LINE_DIRECTIVES = yes

VECTORISE                = yes
VECTORISE_ALIGNED_ARRAYS = no
VECTORISE_INLINE         = no

DEBUG = no
CPP_DEBUG_FLAGS = -DCARPET_DEBUG
FPP_DEBUG_FLAGS = -DCARPET_DEBUG
C_DEBUG_FLAGS   = -O0 -Wp64 -debug all
CXX_DEBUG_FLAGS = -O0 -Wp64 -debug all
F77_DEBUG_FLAGS = -O0 -check bounds -check format -check uninit -debug all
F90_DEBUG_FLAGS = -O0 -check bounds -check format -check uninit -debug all

OPTIMISE = yes
CPP_OPTIMISE_FLAGS = # -DCARPET_OPTIMISE -DNDEBUG
FPP_OPTIMISE_FLAGS = # -DCARPET_OPTIMISE -DNDEBUG
C_OPTIMISE_FLAGS   = -O3 -funroll-loops
CXX_OPTIMISE_FLAGS = -O3 -funroll-loops
F77_OPTIMISE_FLAGS = -O3 -funroll-loops
F90_OPTIMISE_FLAGS = -O3 -funroll-loops

PROFILE = no
CPP_PROFILE_FLAGS =
FPP_PROFILE_FLAGS =
C_PROFILE_FLAGS   = -p
CXX_PROFILE_FLAGS = -p
F77_PROFILE_FLAGS = -p
F90_PROFILE_FLAGS = -p

OPENMP           = yes
CPP_OPENMP_FLAGS = 
FPP_OPENMP_FLAGS = 
C_OPENMP_FLAGS   = -fopenmp
CXX_OPENMP_FLAGS = -fopenmp
F77_OPENMP_FLAGS = -fopenmp
F90_OPENMP_FLAGS = -fopenmp

WARN           = no
CPP_WARN_FLAGS =
FPP_WARN_FLAGS =
C_WARN_FLAGS   =
CXX_WARN_FLAGS =
F77_WARN_FLAGS =
F90_WARN_FLAGS =


LAPACK_DIR = BUILD

BLAS_DIR = BUILD

#FFTW3_DIR = BUILD
#FFTW3_LIBS = fftw3f fftw3 fftw3l m

ZLIB_DIR = BUILD
HWLOC_DIR = BUILD

HDF5_DIR  = BUILD

#MPI_DIR=/opt/hpe/hpc/mpt/mpt-2.23
#MPI_LIBS=mpi

#PAPI_DIR = NO_BUILD

#KADATH_DIR = /zhome/academic/HLRS/xfp/xfpstoot/lib/kadath/


More information about the Users mailing list