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.

1 Like