Hi @Yann.Sagon, I get the error
version `GLIBCXX_3.4.26’ not found
which is apparently required by GCC-11.3.0.
Doing
strings /lib64/libstdc++.so.6 | grep LIBCXX
yields
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH
GA+GLIBCXX_ASSERTIONS
Would it be possible to also install GLIBCXX_3.4.26
? 
Cheers,
Imahn
I actually need to correct myself, it seems I need multiple new versions of GLIBCXX_3.4.x
?
Failed to execute gpdc: gpdc:
/opt/ebsofts/MATLAB/2021a/sys/os/glnxa64/libstdc++.so.6: version
GLIBCXX_3.4.26
not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Core.so.5)
gpdc: /opt/ebsofts/MATLAB/2021a/sys/os/glnxa64/libstdc++.so.6: version
GLIBCXX_3.4.29
not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Core.so.5)
gpdc: /opt/ebsofts/MATLAB/2021a/sys/os/glnxa64/libstdc++.so.6: version
GLIBCXX_3.4.28
not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Core.so.5)
@Yann.Sagon How can it be that I need multiple versions?
Dear Imahn,
please explain what you try to do?
You probably remember that you recently installed gpdc
? Now I try to run gpdc
from within Matlab, for which I load the following modules:
module load MATLAB/2021a
module load GCC/11.3.0
module load OpenMPI/4.1.4
module load geopsy/3.4.2
Then in Matlab, I do
gpdc_exec = 'gpdc';
Out of gpdc_exec
, I build myself an exec_line
and finally I do system(exec_line)
.
In the Matlab script, a parpool
object is created (for parallelization).
The above error I posted then happens inside a parfor
loop.
Does this help? Should I share the path to the matlab script?
– Imahn
No I don’t remember and I don’t find anything related to gpdc
in our issue tracking. Who installed that for you please?`
Ah! gpdc
is related to geopsy
? In this case yes I remember.
The issue is: Matlab is a commercial software that we can’t “compile”, we can just install it and it is packed with its own GLIBC library. When you load GCC module after MATLAB module, you override the Matlab GLIBC and it can’t work anymore. Can you try with module MATLAB/2022a?
I’m afraid it won’t be easy to launch MATLAB and geopsy
together. Is this a hard requisite or is there other way to proceed?
Ah! gpdc
is related to geopsy
? In this case yes I remember.
Yep!
I think using 2022a
is a good idea, since now I get less complaints:
The following have been reloaded with a version change:
1) MATLAB/2021a => MATLAB/2022a
Error using inversion_main
Failed to execute gpdc: gpdc:
/opt/ebsofts/MATLAB/2022a/sys/os/glnxa64/libstdc++.so.6: version
`GLIBCXX_3.4.29' not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Core.so.5)
gpdc: /opt/ebsofts/MATLAB/2022a/sys/os/glnxa64/libstdc++.so.6: version
`CXXABI_1.3.13' not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Core.so.5)
gpdc: /opt/ebsofts/MATLAB/2022a/sys/os/glnxa64/libstdc++.so.6: version
`GLIBCXX_3.4.29' not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Qml.so.5)
gpdc: /opt/ebsofts/MATLAB/2022a/sys/os/glnxa64/libstdc++.so.6: version
`GLIBCXX_3.4.29' not found (required by
/opt/ebsofts/Qt5/5.15.5-GCC-11.3.0/lib/libQt5Network.so.5)
So it’s just a single GLIBCXX_3.4.29
version that is required now (the complaints about CXXABI
had also accored before).
What I found online is that people created symbolic links (cf. here e.g.), do you think I should give it a try?
Another thing I was wondering about is whether it makes a difference whether I’d first load GCC
, OpenMPI
, geopsy
and then Matlab
? Do you think that could help?
I’m afraid it won’t be easy to launch MATLAB and geopsy
together. Is this a hard requisite or is there other way to proceed?
I’m afraid so, yes…
– Imahn
Pleas try the following:
(baobab)-[sagon@login2 ~]$ ml MATLAB/2022a GCC/11.3.0 OpenMPI/4.1.4 geopsy/3.4.2
(baobab)-[sagon@login2 ~]$ LD_PRELOAD="$EBROOTGCCCORE/lib64/libstdc++.so" matlab
Thanks for the answer. Unfortunately, it’s not the solution yet… I use a submit-file, so after all the module loading I put in the LD_PRELOAD
, but it doesn’t seem to change anything…
– Imahn
Hello Imahn,
you must specify the full path to the executable that matlab will launch via the UNIX command line interface, which is /opt/ebsofts/geopsy/3.4.2-foss-2022a/bin/gpdc
exec_gpdc = '/opt/ebsofts/geopsy/3.4.2-foss-2022a/bin/gpdc'
(base) (yggdrasil)-[savardg@login1 stationXML]$ which gpdc
/opt/ebsofts/geopsy/3.4.2-foss-2022a/bin/gpdc
(base) (yggdrasil)-[savardg@login1 stationXML]$ /opt/ebsofts/geopsy/3.4.2-foss-2022a/bin/gpdc -h
Usage: gpdc [OPTIONS] [FILES]
Compute dispersion curves for layered models given through stdin or FILES.
Format for layered models:
Line 1 <number of layers including half-space for first model>
Line 2 <thickness (m)> <Vp (m/s)> <Vs (m/s)> <Density (kg/m3)>[ <Qp> <Qs>]
....
Line n 0 <Vp (m/s)> <Vs (m/s)> <Density (kg/m3)>[ <Qp> <Qs>]
Line n+1 <number of layers including half-space for second model>
....
Quality factors are not mandatory. If not specified, pure elastic computation is performed. Any number of models can be given as input.
Gpdc options: [level=0]
-step <s> Step between frequencies (default=1.025 for log scale)
-n <count> Number of samples (default=use step to get number of samples)
-L <n modes> Number of Love modes (default=0)
-R <n modes> Number of Rayleigh modes (default=1)
-one-mode Instead of outputting all modes (see options '-R' and '-L'), output only the highest one.
-f Does not return immediately if dispersion curve cannot be calculated.
-grid <L | R> Ouput a grid of the wave solutions (not set by default). The letter L or R stands for Love or Rayleigh.
-group Switches to group slowness (default=phase)
-s <sampling> Defines the sampling type:
period regular sampling in period
frequency regular sampling in frequency
log regular sampling in log(frequency) (default)
-min <min> Minimum of range for dispersion curve (default=0.2)
-max <max> Maximum of range for dispersion curve (default=20)
-vn <count> Number of velocity samples (only for -grid, default=100)
-vmin <min> Minimum of range for velocity (only for -grid, default=100)
-vmax <max> Maximum of range for velocity (only for -grid, default=3000)
-delta-k Computes wavenumber gaps between modes. Number of modes must be at least 2.
-half-space <index> Take Vp and Vs from layer index and compute the Rayleigh phase slowness for a half-space with these Vp and Vs.
More options are available. Use '-h all' to display all of them.
Examples:
gpdc < test.model
Calculate fundamental Rayleigh dispersion curve from 0.2 Hz to 20 Hz for model 'test.model'.
gpdc -L 1 -R 2 < test.model
Calculate fundamental Love mode and fundamental and first higher mode for Rayleigh.
gpdc < test.model | figue -c
Calculate the same dispersion curve and plot it.
gpdc < test.model | figue -c -m dc.mkup
Show the same dispersion curve on a log-log plot. 'dc.mkup' is a tar.gz file containing an xml description of the graphic format, it can be generated from figue's interface.
See also:
gpell, gpprofile
More information at http://www.geopsy.org
Authors:
Marc Wathelet
Marc Wathelet (LGIT, Grenoble, France)
As it turned out, I only got the same output after doing
module purge
Thanks @Yann.Sagon and @Genevieve.Savard!
Unfortunately, I was too soon pleased… When doing module purge
and then loading all the other modules in bash (from the terminal),
/opt/ebsofts/geopsy/3.4.2-foss-2022a/bin/gpdc -h
works. However, in my submit file from which I launch Matlab (and from one matlab script, I launch gpdc), the above command doesn’t work and I get the same missing modules error as before.
Here’s the path to my submit file on baobab
/home/users/s/shekhza2/ant-migrate/submit_files/run_step_riehen_aargau.sh
@Yann.Sagon Could you please help me investigate? I’m a bit clueless at the moment…
I report that @Yann.Sagon’s solution works. Thank you!
Yes, with an export
before LD_PRELOAD=[...]
it’s working 
LD_PRELOAD="$EBROOTGCCCORE/lib64/libstdc++.so" matlab
or
export LD_PRELOAD="$EBROOTGCCCORE/lib64/libstdc++.so"
matlab
should work.
2 Likes