[Users] libopenPMD missing, OpenPMD question

Bill Gabella bill.gabella at gmail.com
Fri Jan 31 16:28:47 CST 2025


Roland,

   Thanks for the quick response.

On 1/31/25 4:53 PM, Roland Haas wrote:
> Hello Bill,
>
>> [lots of stuff]
>> /scratch/gabella/simulations/helloworld/SIMFACTORY/exe/cactus_sim: error while loading shared libraries: libopenPMD.so: cannot open shared object file: No such file or directory
> Hmm, ExternalLibraries/openPMD which provides this (most likely, unless
> you are on a rare cluster that has it pre-installed) should set up an
> --rpath so that libopenPMD is found at runtime. Though admittedly it
> would also usually try to build a static library.
>
> The library would be in configs/sim/scratch/external/ eg:
>
> ET_trunk/configs/sim/scratch/external/openPMD/lib/libopenPMD.a

Nope, I see in the Cactus/configs/sim/scratch/external

archimedes/gabe :<scratch/external 338 >ls
./  ../  ADIOS2/  AMReX/  LORENE/  NSIMD/  SGRID/  Silo/

>
> in my case (note that this is the statically linked one).
>
> You you provide the file
>
> configs/sim/bindings/Configuration/Capabilities/make.OPENPMD_API.defn
>
> and you option list, please?

Attached make.OPENPMD_API.defn, oddly it has a line
HAVE_CAPABILITY_openPMD_api = 1

Oh, I do seem to have it installed, in /usr/local/lib64, I think from a 
previous ET effort, dated 4 Sep 2024.  But I do not ever sudo installs 
with ET.  Odd.  Must have been hacking away trying to fix this problem 
then:)  But likely this is the problem.

Also attaching the OptionList in Cactus/configs/sim.

Was running helloworld with the create-submit in the Jupyter notebook,
./simfactory/bin/sim create-run helloworld \
     --parfile arrangements/CactusExamples/HelloWorld/par/HelloWorld.par

>
>> ./simfactory/bin/sim create-run helloworld \
>>      --parfile arrangements/CactusExamples/HelloWorld/par/HelloWorld.parI see that that carpetX seems to have OpenPMD readers, etc.  I also found the github, if it is the right OpenPMD at
>>
>> https://urldefense.com/v3/__https://github.com/openPMD/openPMD-api__;!!DZ3f
>> jg!6chXrSK2Aob-tgiRz5UdTmcqIHLoXkWcH-hNaZhQhXY6V12RaAdQm2bSWB98IEudpHvF1rm5
>> dBJcWQ5-QLCMww$ but expected ET to handle this or to see some text about installing OpenPMD as a pre-req.
>>
>> Any suggestions?  I never saw a file format that I did not like, or at
>>   least install, so should I install this, or should ET?
> If you are not using CarpetX, then you can comment out the
> ExternalLibraries/OpenPMD line (and all CarpetX lines if you like) and
> thing will be fine.

If I become motivated, I may want to play with CarpetX.

Thanks, bill e.g.


>
> Yours,
> Roland
>
-------------- next part --------------
include /scratch/gabella/Code/etoolkit/Cactus/configs/sim/bindings/Configuration/Capabilities/make.ADIOS2.defn
include /scratch/gabella/Code/etoolkit/Cactus/configs/sim/bindings/Configuration/Capabilities/make.HDF5.defn
include /scratch/gabella/Code/etoolkit/Cactus/configs/sim/bindings/Configuration/Capabilities/make.MPI.defn
INC_DIRS +=  $(OPENPMD_INC_DIRS)
INC_DIRS_F +=  $(OPENPMD_INC_DIRS)
OPENPMD_BUILD          = 
OPENPMD_ENABLE_FORTRAN = OFF
OPENPMD_INSTALL_DIR    = 
OPENPMD_DIR            = /usr/local
OPENPMD_ENABLE_FORTRAN = OFF
OPENPMD_INC_DIRS       = /usr/local/lib64  
OPENPMD_LIB_DIRS       =  
OPENPMD_LIBS           = openPMD
HAVE_CAPABILITY_openPMD_api = 1
-------------- next part --------------
# generic

# This option list is used internally by simfactory as a template during the
# sim setup and sim setup-silent commands
# Edit at your own risk

# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = 2018-12-13

CPP = cpp
CC  = gcc
CXX = g++
CUCC = nvcc

FPP = cpp
F90 = gfortran

# for CarpetX GPU support
# subset CUCCFLAGS without "-x cu" (must no be used here) and options used only to compile code
# -fno-lto can avoid errors connected to fat binaries
# LD = nvcc --compiler-bindir g++ -g -fno-lto --forward-unknown-to-host-compiler --relocatable-device-code=true --objdir-as-tempdir
# LIBS = gfortran curand

# enable for CarpetX GPU suport
# CPPFLAGS = -DSIMD_CPU
FPPFLAGS = -traditional
# use gnu99 and not c99 since FFTW3 relies on gcc's "asm" function
CFLAGS   = -g -std=gnu99
# if compiler is old and you do not need AMReX, can change to c++11
# leave as c++17 for easier CUDA support
CXXFLAGS = -g -std=c++17 -D_GNU_SOURCE
CUCCFLAGS = --compiler-bindir g++ -x cu -g -std=c++17 -D_GNU_SOURCE --expt-relaxed-constexpr --extended-lambda --forward-unknown-to-host-compiler --Werror cross-execution-space-call --Werror ext-lambda-captures-this --relocatable-device-code=true --objdir-as-tempdir

F90FLAGS = -g -fcray-pointer -ffixed-line-length-none

LDFLAGS = -rdynamic

# for CUDA support
# LIBS = gfortran nvToolsExt curand

DEBUG = no
CPP_DEBUG_FLAGS =
C_DEBUG_FLAGS   =
CXX_DEBUG_FLAGS =
CUCC_DEBUG_FLAGS=

OPTIMISE = yes
CPP_OPTIMISE_FLAGS =
C_OPTIMISE_FLAGS   = -O2
CXX_OPTIMISE_FLAGS = -O2
CUCC_OPTIMISE_FLAGS= -O2
F90_OPTIMISE_FLAGS = -O2

PROFILE = no
CPP_PROFILE_FLAGS =
C_PROFILE_FLAGS   = -pg
CXX_PROFILE_FLAGS = -pg
CUCC_PROFILE_FLAGS= -pg
F90_PROFILE_FLAGS = -pg

WARN           = yes
CPP_WARN_FLAGS = -Wall
C_WARN_FLAGS   = -Wall
CXX_WARN_FLAGS = -Wall
CUCC_WARN_FLAGS= -Wall
F90_WARN_FLAGS = -Wall

OPENMP           = yes
CPP_OPENMP_FLAGS = -fopenmp
FPP_OPENMP_FLAGS = -D_OPENMP
C_OPENMP_FLAGS   = -fopenmp
CXX_OPENMP_FLAGS = -fopenmp
CUCC_OPENMP_FLAGS= -fopenmp
F90_OPENMP_FLAGS = -fopenmp
LD_OPENMP_FLAGS = -fopenmp

# for CUDA support
DISABLE_INT16=yes
DISABLE_REAL16=yes

VECTORISE                = yes
VECTORISE_ALIGNED_ARRAYS = no
VECTORISE_INLINE         = yes

AMREX_ENABLE_CUDA = no

PTHREADS_DIR = NO_BUILD


More information about the Users mailing list