Hello,
I am trying to compile a library on Baobab and for which I have multiple dependencies which are loaded using module
module add GCCcore/9.3.0
module add Python/3.8.2
module add CMake/3.16.4
module add GCC/9.3.0
module add GSL/2.6
module add CUDA/11.0.2
module add OpenMPI/4.0.3
module add FFTW/3.3.8
module add Bison/3.5.3
module add flex/2.6.4
module add pybind11/2.4.3-Python-3.8.2
module add CFITSIO/3.48
If I run the compilation now, I get an error that Pybind11 is not available.
On running the following command, I don’t see any paths.
echo $(echo $PATH | tr ':' '\n' | grep pybind11)
On second try, I loaded newer versions of the library for testing, (cannot be used as CFITSIO/3.49 is not available, and CFITSIO/3.48 needs GCCcore/9.3.0)
module add GCCcore/10.2.0
module add Python/3.8.6
module add CMake/3.18.4
module add GCC/10.2.0
module add GSL/2.6
module add CUDA/11.1.1
module add OpenMPI/4.0.5
module add FFTW/3.3.8
module add Bison/3.7.1
module add flex/2.6.4
module add pybind11/2.6.0
Here on running the same command, I can see that Pybind11 has been properly added to the path.
$ echo $(echo $PATH | tr ':' '\n' | grep pybind11)
/opt/ebsofts/pybind11/2.6.0-GCCcore-10.2.0/bin
On further digging around, I found that there is no bin
folder in pybind11/2.4.3-Python-3.8.2 folder.
$ ls /opt/ebsofts/pybind11/2.4.3-GCCcore-9.3.0-Python-3.8.2/
easybuild include share
Any help on this would be appreciated.
Thanks in advance,
Vaibhav
Hi there,
vaibhav.gupta:
I am trying to compile a library on Baobab and for which I have multiple dependencies which are loaded using module
module add GCCcore/9.3.0
module add Python/3.8.2
module add CMake/3.16.4
module add GCC/9.3.0
module add GSL/2.6
module add CUDA/11.0.2
module add OpenMPI/4.0.3
module add FFTW/3.3.8
module add Bison/3.5.3
module add flex/2.6.4
module add pybind11/2.4.3-Python-3.8.2
module add CFITSIO/3.48
If I run the compilation now, I get an error that Pybind11 is not available.
Can you please provide the full commands you launched to get the error?
pybind11
is a pybind11 is a lightweight header-only library that exposes C++ types in Python and vice versa, mainly to create Python bindings of existing C++ code
(cf. pybind11 documentation and https://github.com/pybind/pybind11/blob/8de7772cc72daca8e947b79b83fea46214931604/README.rst ), thus you can not use it as a standalone executable, but you need to compile C++ code against it.
On running the following command, I don’t see any paths.
echo $(echo $PATH | tr ':' '\n' | grep pybind11)
On second try, I loaded newer versions of the library for testing, (cannot be used as CFITSIO/3.49 is not available, and CFITSIO/3.48 needs GCCcore/9.3.0)
module add GCCcore/10.2.0
module add Python/3.8.6
module add CMake/3.18.4
module add GCC/10.2.0
module add GSL/2.6
module add CUDA/11.1.1
module add OpenMPI/4.0.5
module add FFTW/3.3.8
module add Bison/3.7.1
module add flex/2.6.4
module add pybind11/2.6.0
Here on running the same command, I can see that Pybind11 has been properly added to the path.
$ echo $(echo $PATH | tr ':' '\n' | grep pybind11)
/opt/ebsofts/pybind11/2.6.0-GCCcore-10.2.0/bin
On further digging around, I found that there is no bin
folder in pybind11/2.4.3-Python-3.8.2 folder.
$ ls /opt/ebsofts/pybind11/2.4.3-GCCcore-9.3.0-Python-3.8.2/
easybuild include share
As I have explained above, that is perfectly fine, since the include
folder contains the C++ header files while the share
one the cmake
files.
NB , version 2.6.0
does not provide any “runtime” binary, but a new tool to avoid typing python -m pybind11
(cf. Release Version 2.6.0 · pybind/pybind11 · GitHub ):
capello@login2:~$ ls -l /opt/ebsofts/pybind11/2.6.0-GCCcore-10.2.0/bin/
total 4
-rwxr-xr-x 1 root root 251 Mar 19 17:57 pybind11-config
capello@login2:~$
I thus guess the library you are trying to compile supports only pybind11
version 2.6.0
or later.
Thx, bye,
Luca