Linux building issue

Hi,

I was trying to install from sources NGSolve into my ubuntu 16.04. Unfortunately it failed:

[code][ 3%] Creating directories for ‘netgen_project’
[ 7%] Creating directories for ‘suitesparse’
[ 11%] Performing download step (git clone) for ‘suitesparse’
[ 15%] No download step for ‘netgen_project’
[ 19%] No patch step for ‘netgen_project’
– suitesparse download command succeeded. See also /home/user/ngsuite/ngsolve-build/umfpack/src/suitesparse-stamp/suitesparse-download-*.log
[ 23%] No update step for ‘netgen_project’
[ 26%] No update step for ‘suitesparse’
[ 34%] No configure step for ‘netgen_project’
[ 34%] No patch step for ‘suitesparse’
[ 42%] Performing configure step for ‘suitesparse’
[ 42%] Performing build step for ‘netgen_project’
[ 10%] Performing check_submodules1 step for ‘netgen’
[ 42%] Built target check_submodules_start
– Could NOT find LAPACK (missing: LAPACK_DIR)
CMake Warning (dev) at CMakeLists.txt:210 (SET):
implicitly converting ‘FILE’ to ‘STRING’ type.
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:211 (SET):
implicitly converting ‘FILE’ to ‘STRING’ type.
This warning is for project developers. Use -Wno-dev to suppress it.

[ 20%] Performing build step for ‘netgen’
[ 0%] Building CXX object libsrc/core/CMakeFiles/ngcore.dir/localheap.cpp.o
[ 0%] Building CXX object libsrc/core/CMakeFiles/ngcore.dir/taskmanager.cpp.o
[ 2%] Built target togl
[ 3%] Building CXX object libsrc/core/CMakeFiles/ngcore.dir/utils.cpp.o
– Configuring done
– Generating done
– Build files have been written to: /home/user/ngsuite/ngsolve-build/umfpack/src/suitesparse-build
[ 46%] Performing build step for ‘suitesparse’
In file included from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp:16:0,
from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:11:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp: In function ‘void ngcore::QuickSort(ngcore::FlatArray, TLESS)’:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1290:5: error: ‘ptrdiff_t’ was not declared in this scope
ptrdiff_t i = 0;
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1290:5: note: suggested alternatives:
In file included from /usr/include/c++/5/exception:37:0,
from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:7:
/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:197:28: note: ‘std::ptrdiff_t’
typedef PTRDIFF_TYPE ptrdiff_t;
^
/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:197:28: note: ‘std::ptrdiff_t’
In file included from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp:16:0,
from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:11:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1291:15: error: expected ‘;’ before ‘j’
ptrdiff_t j = data.Size()-1;
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1293:23: error: ‘i’ was not declared in this scope
T midval = data[ (i+j)/2 ];
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1293:25: error: ‘j’ was not declared in this scope
T midval = data[ (i+j)/2 ];
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp: In function ‘void ngcore::QuickSortI(ngcore::FlatArray, ngcore::FlatArray, TLESS)’:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1343:5: error: ‘ptrdiff_t’ was not declared in this scope
ptrdiff_t i = 0;
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1343:5: note: suggested alternatives:
In file included from /usr/include/c++/5/exception:37:0,
from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:7:
/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:197:28: note: ‘std::ptrdiff_t’
typedef PTRDIFF_TYPE ptrdiff_t;
^
/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:197:28: note: ‘std::ptrdiff_t’
In file included from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp:16:0,
from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:11:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1344:15: error: expected ‘;’ before ‘j’
ptrdiff_t j = index.Size()-1;
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1346:26: error: ‘i’ was not declared in this scope
int midval = index[ (i+j)/2 ];
^
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/array.hpp:1346:28: error: ‘j’ was not declared in this scope
int midval = index[ (i+j)/2 ];
^
In file included from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/localheap.cpp:11:0:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp: At global scope:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp:395:24: warning: requested alignment 4096 is larger than 256 [-Wattributes]
class alignas(4096) AtomicRange : public AlignedAlloc
^
In file included from /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.cpp:16:0:
/home/user/ngsuite/ngsolve-src/external_dependencies/netgen/libsrc/core/taskmanager.hpp:395:24: warning: requested alignment 4096 is larger than 256 [-Wattributes]
class alignas(4096) AtomicRange : public AlignedAlloc
^
libsrc/core/CMakeFiles/ngcore.dir/build.make:75: recipe for target ‘libsrc/core/CMakeFiles/ngcore.dir/localheap.cpp.o’ failed
make[8]: *** [libsrc/core/CMakeFiles/ngcore.dir/localheap.cpp.o] Error 1
make[8]: *** Waiting for unfinished jobs…
– suitesparse build command succeeded. See also /home/user/ngsuite/ngsolve-build/umfpack/src/suitesparse-stamp/suitesparse-build-.log
[ 50%] Performing install step for ‘suitesparse’
– suitesparse install command succeeded. See also /home/user/ngsuite/ngsolve-build/umfpack/src/suitesparse-stamp/suitesparse-install-
.log
[ 53%] Completed ‘suitesparse’
[ 53%] Built target suitesparse
CMakeFiles/Makefile2:1058: recipe for target ‘libsrc/core/CMakeFiles/ngcore.dir/all’ failed
make[7]: *** [libsrc/core/CMakeFiles/ngcore.dir/all] Error 2
Makefile:162: recipe for target ‘all’ failed
make[6]: *** [all] Error 2
CMakeFiles/netgen.dir/build.make:115: recipe for target ‘dependencies/src/netgen-stamp/netgen-build’ failed
make[5]: *** [dependencies/src/netgen-stamp/netgen-build] Error 2
CMakeFiles/Makefile2:77: recipe for target ‘CMakeFiles/netgen.dir/all’ failed
make[4]: *** [CMakeFiles/netgen.dir/all] Error 2
Makefile:129: recipe for target ‘all’ failed
make[3]: *** [all] Error 2
CMakeFiles/netgen_project.dir/build.make:111: recipe for target ‘dependencies/Stamp/netgen_project/netgen_project-build’ failed
make[2]: *** [dependencies/Stamp/netgen_project/netgen_project-build] Error 2
CMakeFiles/Makefile2:113: recipe for target ‘CMakeFiles/netgen_project.dir/all’ failed
make[1]: *** [CMakeFiles/netgen_project.dir/all] Error 2
Makefile:151: recipe for target ‘all’ failed
make: *** [all] Error 2[/code]

Hi Presley,

it looks to me like you are using gcc 5. NGSolve needs a compiler with c++17 support, so gcc7.3 or clang 7 or higher (see Build problem new version - Kunena ).

Best wishes,
Henry

Hi Henry! Thanks a lot! After I updated the gcc to 7 it worked through the making and installing step. But when I tried to run an example it failed…

➜ intro netgen navierstokes.py NETGEN-6.2-dev Developed by Joachim Schoeberl at 2010-xxxx Vienna University of Technology 2006-2010 RWTH Aachen University 1996-2006 Johannes Kepler University Linz optfile ./ng.opt does not exist - using default values togl-version : 2 loading ngsolve library NGSolve-6.2.1905-166-g03a9230 Using Lapack Including sparse direct solver UMFPACK Running parallel using 8 thread(s) Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'ngsolve' (should) load python file 'navierstokes.py' Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'ngsolve' Traceback (most recent call last): Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1, in <module> ImportError: No module named 'ngsolve' Finished executing navierstokes.py ImportError: No module named 'netgen' Thank you for using NGSolve

What did I do wrong? May I also ask how to turn the cmake options ON? I need PARDISO to run a code but by default it’s turned off.

Thanks in advance!

Regards,
Rob

Hi Rob,

with respect to PARDISO: As far as I’m aware, the best way is to have PARDISO available is to build NGSolve with Intel MKL Accelerate Fast Math with Intel® oneAPI Math Kernel Library. You then need to add the following cmake flags when building NGSolve

-DMKL_ROOT=${MKLROOT} -DUSE_MKL=ON

c.f. Build with PARDISO - Kunena

Your error looks to me like ngsolve is not in your PYTHONPATH path variable. Maybe check if all you path/pythonpath variables are set correctly: You should have a directory similar to

NGSolve/inst/lib64/python3.6/site-packages

(depending on you python3 version and where you installed NGSolve) which contains a folder “ngsolve” within which there are then a load of python files. Make sure that the “site_packages” directory is in you pythonpath.

Best wishes,
Henry

Hi Henry,

Thanks a lot! It worked after I set up the PYTHONPATH variable properly!

Regarding to PARDISO, I downloaded it from what you pointed me to and installed it. Here is the error msg from cmake:

[code]➜ ngsolve-build cmake -DCMAKE_INSTALL_PREFIX={BASEDIR}/ngsolve-install -DMKL_ROOT={MKLROOT} -DUSE_MKL=ON ${BASEDIR}/ngsolve-src
– Build Netgen from git submodule

Configure Netgen from submodule…
Checking for write permissions in install directory…
Checking for write permissions in install directory…
– Found Pybind11: /home/user/ngsuite/ngsolve-src/external_dependencies/netgen/external_dependencies/pybind11/include
– Configuring done
– Generating done
– Build files have been written to: /home/user/ngsuite/ngsolve-build/netgen
CMake Warning (dev) at cmake/SuperBuild.cmake:129 (find_package):
Policy CMP0074 is not set: find_package uses _ROOT variables.
Run “cmake --help-policy CMP0074” for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

CMake variable MKL_ROOT is set to:

/home/user/intel

For compatibility, CMake is ignoring the variable.
Call Stack (most recent call first):
CMakeLists.txt:61 (include)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at /usr/local/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find MKL (missing: MKL_INCLUDE_DIR MKL_LIBRARY
MKL_MINIMAL_LIBRARY)
Call Stack (most recent call first):
/usr/local/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
cmake/cmake_modules/FindMKL.cmake:151 (find_package_handle_standard_args)
cmake/SuperBuild.cmake:129 (find_package)
CMakeLists.txt:61 (include)

– Configuring incomplete, errors occurred!
See also “/home/user/ngsuite/ngsolve-build/CMakeFiles/CMakeOutput.log”.
See also “/home/user/ngsuite/ngsolve-build/CMakeFiles/CMakeError.log”.[/code]

It seems adding that flag is not enough and there is need to set up some other environment variables for Cmake to find MKL?

Best regards,
Rob

Hi Rob,
Usually the mkl root is intel/mkl and not intel. Can you check setting mkl root to /home/user/intel/mkl?
Best
Christopher

YES it worked! Thanks a lot, Christopher!

Best regards,
Rob

Thanks a lot Henry! You’ve been very helpful guiding me!

Best regards,
Rob