Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with building LBPM #65

Open
haghanire opened this issue Mar 28, 2022 · 7 comments
Open

Problem with building LBPM #65

haghanire opened this issue Mar 28, 2022 · 7 comments

Comments

@haghanire
Copy link

Dear James,

I faced the following problem while installing LBPM. The configure file is :

cmake
-D CMAKE_BUILD_TYPE:STRING=Release
-D CMAKE_C_COMPILER:PATH=$MPI_DIR/bin/mpicc
-D CMAKE_CXX_COMPILER:PATH=$MPI_DIR/bin/mpicxx
-D CMAKE_C_FLAGS="-O3 -fPIC"
-D CMAKE_CXX_FLAGS="-fPIC -O3 -std=c++14"
-D CMAKE_CXX_STANDARD=14
-D MPIEXEC=$MPI_DIR/bin/mpirun
-D CUDA_FLAGS="-arch sm_35"
-D CUDA_HOST_COMPILER="/usr/bin/gcc"
-D HDF5_DIRECTORY=$LBPM_HDF5_DIR
-D HDF5_LIB=$LBPM_HDF5_DIR/lib/libhdf5.a
-D USE_SILO=1
-D SILO_LIB=$LBPM_SILO_DIR/lib/libsiloh5.a
-D SILO_DIRECTORY=$LBPM_SILO_DIR
-D USE_MPI=1
-D USE_NETCDF=0
-D NETCDF_DIRECTORY="/opt/netcdf/4.6.1"
-D USE_CUDA=0
-D USE_TIMER=0
$LBPM_SOURCE

and I get the following errors while compiling the source code:

[ 0%] Built target copy-LBPM--home-rezaha-lbpm-LBPM-include
[ 0%] Built target copy-LBPM-include
Scanning dependencies of target lbpm-wia-library
[ 0%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Array.cpp.o
[ 1%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Communication.cpp.o
[ 1%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Database.cpp.o
[ 2%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Domain.cpp.o
[ 3%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/FunctionTable.cpp.o
[ 3%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/MPI.cpp.o
/home/rezaha/lbpm/LBPM/common/MPI.cpp: In function ‘constexpr long unsigned int Utilities::offset_long()’:
/home/rezaha/lbpm/LBPM/common/MPI.cpp:156:73: warning: integer overflow in expression of type ‘long int’ results in ‘-9223372036854775808’ [-Woverflow]
156 | return ~static_cast(std::numeric_limits::min()) + 1;
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/home/rezaha/lbpm/LBPM/common/MPI.cpp: In function ‘constexpr long long unsigned int Utilities::offset_long_long()’:
/home/rezaha/lbpm/LBPM/common/MPI.cpp:160:59: warning: integer overflow in expression of type ‘long long int’ results in ‘-9223372036854775808’ [-Woverflow]
159 | return ~static_cast(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160 | std::numeric_limits::min()) +
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
161 | 1;
| ~
[ 4%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/ReadMicroCT.cpp.o
[ 4%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/ScaLBL.cpp.o
[ 5%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/SpherePack.cpp.o
[ 5%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/UnitTest.cpp.o
[ 6%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Units.cpp.o
[ 6%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/Utilities.cpp.o
[ 7%] Building CXX object CMakeFiles/lbpm-wia-library.dir/common/WideHalo.cpp.o
[ 7%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/ElectroChemistry.cpp.o
[ 8%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/FlowAdaptor.cpp.o
[ 9%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/FreeEnergy.cpp.o
[ 9%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/GreyPhase.cpp.o
[ 10%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/Minkowski.cpp.o
[ 10%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/SubPhase.cpp.o
[ 11%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/TwoPhase.cpp.o
[ 11%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/analysis.cpp.o
[ 12%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/dcel.cpp.o
[ 12%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/distance.cpp.o
[ 13%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/filters.cpp.o
[ 14%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/morphology.cpp.o
[ 14%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/runAnalysis.cpp.o
[ 15%] Building CXX object CMakeFiles/lbpm-wia-library.dir/analysis/uCT.cpp.o
[ 15%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/HDF5Writer.cpp.o
[ 16%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/HDF5_IO.cpp.o
[ 16%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/Mesh.cpp.o
[ 17%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/MeshDatabase.cpp.o
[ 17%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/PIO.cpp.o
[ 18%] Building CXX object CMakeFiles/lbpm-wia-library.dir/IO/PackData.cpp.o
In file included from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:12:1: error: ‘size_t’ does not name a type
12 | size_t packsize( const TYPE &rhs );
| ^~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:8:1: note: ‘size_t’ is defined in header ‘’; did you forget to ‘#include ’?
7 | #include
+++ |+#include
8 |
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:25:1: error: ‘size_t’ does not name a type
25 | size_t packsize( const std::vector &rhs );
| ^~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:25:1: note: ‘size_t’ is defined in header ‘’; did you forget to ‘#include ’?
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:38:1: error: ‘size_t’ does not name a type
38 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs );
| ^~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:38:1: note: ‘size_t’ is defined in header ‘’; did you forget to ‘#include ’?
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:51:1: error: ‘size_t’ does not name a type
51 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs );
| ^~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:51:1: note: ‘size_t’ is defined in header ‘’; did you forget to ‘#include ’?
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:64:1: error: ‘size_t’ does not name a type
64 | size_t packsize( const std::set &rhs );
| ^~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:64:1: note: ‘size_t’ is defined in header ‘’; did you forget to ‘#include ’?
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:11:8: error: template-id ‘packsize’ for ‘size_t packsize(const unsigned char&)’ does not match any template declaration
11 | size_t packsize( const unsigned char &rhs )
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:27:8: error: template-id ‘packsize’ for ‘size_t packsize(const char&)’ does not match any template declaration
27 | size_t packsize( const char &rhs )
| ^~~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:43:8: error: template-id ‘packsize’ for ‘size_t packsize(const int&)’ does not match any template declaration
43 | size_t packsize( const int &rhs )
| ^~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:59:8: error: template-id ‘packsize’ for ‘size_t packsize(const unsigned int&)’ does not match any template declaration
59 | size_t packsize( const unsigned int &rhs )
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:75:8: error: template-id ‘packsize<size_t>’ for ‘size_t packsize(const size_t&)’ does not match any template declaration
75 | size_t packsize<size_t>( const size_t &rhs )
| ^~~~~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM/IO/PackData.cpp:91:8: error: template-id ‘packsizestd::string’ for ‘size_t packsize(const string&)’ does not match any template declaration
91 | size_t packsizestd::string( const std::string &rhs )
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.h:75,
from /home/rezaha/lbpm/LBPM/IO/PackData.cpp:1:
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:122:8: note: candidates are: ‘template size_t packsize(const std::set&)’
122 | size_t packsize( const std::set &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:76:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::map<TYPE1, TYPE2>&)’
76 | size_t packsize( const std::map<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:54:8: note: ‘template<class TYPE1, class TYPE2> size_t packsize(const std::pair<_T1, _T2>&)’
54 | size_t packsize( const std::pair<TYPE1, TYPE2> &rhs )
| ^~~~~~~~
/home/rezaha/lbpm/LBPM_BUILD/include/IO/PackData.hpp:17:8: note: ‘template size_t packsize(const std::vector&)’
17 | size_t packsize( const std::vector &rhs )
| ^~~~~~~~
make[2]: *** [CMakeFiles/lbpm-wia-library.dir/build.make:498: CMakeFiles/lbpm-wia-library.dir/IO/PackData.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:336: CMakeFiles/lbpm-wia-library.dir/all] Error 2
make: *** [Makefile:160: all] Error 2

Could you please let me know what is wrong? I use the same configure and install LBPM successfully on another pc, however, it does not work on this one.

Thank you so much.

@JamesEMcClure
Copy link
Collaborator

Check to make sure that the gcc compiler passed to CUDA is the same one that MPI is using. First use

mpicc --show

This should tell you how mpi is calling the compiler. Then get the full path to gcc,

which gcc

Then provide this path to CUDA_HOST_COMPILER

I can't guarantee this will fix it, but this is my initial hunch. Let me know if it doesn't succeed.

@haghanire
Copy link
Author

haghanire commented Mar 28, 2022

Hi, I got the following:

$ mpicc -show
x86_64-conda_cos6-linux-gnu-cc -I/home/rezaha/anaconda3/include -I/home/rezaha/anaconda3/include -L/home/rezaha/anaconda3/lib -Wl,-rpath,/home/rezaha/anaconda3/lib -I/home/rezaha/anaconda3/include -L/home/rezaha/anaconda3/lib -lmpi
$ which gcc
/usr/bin/gcc

I do not know what to do about the first command, however, the CUDA_HOST_COMPILER path is already the same as gcc path. Could you elaborate on the first comment?. Thank you so much for your time.

@JamesEMcClure
Copy link
Collaborator

I would check gcc --version and make sure that it is compatible with the version of cuda that you are using.

I think the anaconda compiler is probably not the best choice for MPI compiler. It may work fine for c/c++ code but I'm not sure how nicely it will play with the gpu code. If you are using ubuntu on a local workstation the compiler installed with sudo apt install build-essential should work with cuda. If you not on a shared system let me know and I can share more info.

@haghanire
Copy link
Author

A new Ubuntu was installed and I followed the steps and installed build-essential. Unfortunately, it didn't work, so I installed anaconda compiler as well and it didn't either. It a local workstation with Intel Core i7 vPRO.

@JamesEMcClure
Copy link
Collaborator

I suspect you will need to rebuild the dependencies, if you have not done so already, since these may contain symbols that depend on the previous version of the OS.

@JamesEMcClure
Copy link
Collaborator

Can you try adding the header file below to the file IO/PackData.h and see if it fixes the issue on your build?

#include <cstddef>

@haghanire
Copy link
Author

Hi,
By downgrading Ubuntu from 21.10 to 20.04.4 LTS, the problem was solved. I think the problem that I faced was a matter of code compatibility with new Ubuntu version.
Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants