Hi Guillermo,

Good to hear that you’re now able to build Nektar++ successfully. The messages you’re seeing in the CMake output are just information messages that result from the logic that the CMake configuration is using to search for MPI and BLAS/LAPACK.

If the required libraries are ultimately not found, the CMake configuration process will fail and you will not be able to build the code.

If you take a look at the CMake MPI discovery code at https://gitlab.nektar.info/nektar/nektar/-/blob/master/cmake/ThirdPartyMPI.cmake#L20, you’ll see that the first thing it tries to do is to see whether the compiler being used has MPI functionality built in - it does this by looking for mpi.h in the default include path and seeing if the MPI_Send function is available. This fails and I also see the output:

-- Looking for include file mpi.h
-- Looking for include file mpi.h - not found
-- Looking for MPI_Send
-- Looking for MPI_Send - not found

Subsequently, the configuration then uses CMake’s standard FIND_PACKAGE functionality to search for a separate MPI installation on the system. I then see:

-- Found MPI_C: /usr/lib64/openmpi/lib/libmpi.so (found version "3.1") 
-- Found MPI_CXX: /usr/lib64/openmpi/lib/libmpi_cxx.so (found version "3.1") 
-- Found MPI_Fortran: /usr/lib64/openmpi/lib/libmpi_usempif08.so (found version "3.1") 
-- Found MPI: TRUE (found version "3.1")  
-- Found MPI: /usr/lib64/openmpi/lib/libmpi_cxx.so;/usr/lib64/openmpi/lib/libmpi.so

Something very similar is happening with BLAS/LAPACK. If you look at https://gitlab.nektar.info/nektar/nektar/-/blob/master/cmake/ThirdPartyBlasLapack.cmake#L12, you’ll see that CMake is first checking whether the compiler provides built in BLAS functionality. It does this by checking for the _dgemm function. When this is not found, you see:

-- Looking for dgemm_
-- Looking for dgemm_ - not found

CMake then searches for the availability of various different BLAS/LAPACK libraries and, assuming something is found, it then prints a message to confirm this - after some further messages about Fortran functions not being found, I then see:

-- Found BLAS and LAPACK: /usr/lib64/liblapack.so;/usr/lib64/libblas.so

So, the messages saying that various functions are not found are not significant in this context, assuming that ultimately the required libraries are found.

I hope this helps to explain some of the output you’re seeing.

Kind regards,
Jeremy


On 2 Apr 2023, at 09:10, Guillermo Suarez <guillermo180395@gmail.com> wrote:

Hi Jeremy,

Following your steps I am indeed able to install nektar++.
Nevertheless, I am still getting the same errors in the CMake log:
"dgemm_" and "mpi.h" not found. Now I can also install 5.0.3 (also with
the same errors).

I have installed nektar master and 5.0.3 in two other workstations:
Fedora 34 and slurm. In both of them I can install both nektar versions
successfully though still getting the same errors.

Thank you for the assistance.
Guillermo

On Thu, 2023-03-30 at 20:47 +0100, Jeremy Cohen wrote:
Hi Guillermo,

I’ve had a go at building the Nektar++ master branch on Fedora 35 and
it builds successfully without any problems. I’m using the same
versions of mpi, cmake and gcc that you’ve listed below, in addition
to the same blas and lapack packages.

There is, however, a problem building 5.0.3 with my configuration. I
think the problem I’m seeing is because I’m using a version of boost
that is not compatible with 5.0.3. I’m using the version installed
from packages on Fedora 35 which is 1.76.0-5-fc35.

Just for your information, I built successfully by starting a fresh
Fedora 35 container, run “yum update” and then install the following
packages:

blas-devel boost-devel cmake gcc-c++ gcc-gfortran git lapack-devel
libXmu-devel make scotch-devel tinyxml-devel zlib-devel openmpi-devel
ptscotch-openmpi-devel

I then cloned Nektar++ from gitlab.nektar.info/nektar/nektar.git (in
order to use the latest master branch rather than using an older
source release), made a build directory and changed into it. Before
running CMake, because Fedora 35 seems to put MPI in a non-standard
location, you need to set some environment variables for CMake to
find MPI:

export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:${LD_LIBRARY_PATH}
export LIBRARY_PATH=/usr/lib64/openmpi/lib:${LIBRARY_PATH}
export PATH=/usr/lib64/openmpi/bin:${PATH}
export
PKG_CONFIG_PATH=/usr/lib64/openmpi/lib/pkgconfig:${PKG_CONFIG_PATH}

I was then able to configure successfully using CMake. I’m using the
default settings but turning on MPI support.

cmake -DNEKTAR_USE_MPI=ON ..

I then ran make and the build completed successfully.

I suspect you may need to clear your build directory and rerun CMake
if you’ve previously built v5.0.3 and are finding that the build is
not working.

If you’re still having issues, can you send us the full CMake
configuration that you’re using as well as confirming the version of
Boost you have installed.

Thanks,

Jeremy

On 29 Mar 2023, at 22:52, Guillermo Suarez <
guillermo180395@gmail.com> wrote:

Hi Jeremy,

Thank you for your reply.

To answer your questions:
- I get the exact same error for the master version.
- Before installing the dev version of Lapack etc, I was able to
install all nektar++ versions v5.X.X successfully.
- Regarding the mpi.h, I didn't do anything. Configured the project
with 'ccmake' and then just ran 'make'. It is strange that mpi.h
was
not found even though cmake detected it. You can also see in the
CMake
error file that there is an undefined reference to 'dgemm_', even
though I have Lapack/Blas installed and it was detected by cmake.

Please let me know if you require any additional file.

Kind regards,
Guillermo

On Wed, 2023-03-29 at 21:55 +0100, Jeremy Cohen wrote:
Hi Guillermo,

I haven’t had a chance to investigate this in any detail yet but
I
note that you seem to be using Fedora 35 and a fairly out of date
source release of Nektar++ 5.0.3?

I seem to recall that there were some challenges building on
Fedora
35 a little while ago which should be fixed in a more recent
release.
Have you updated your system version in recent months or you have
previously built v5.0.3 on Fedora 35 successfully?

The error looks to be something related to a null pointer in one
of
the unit test source files so I suspect this is not directly
related
to Blas/Lapack - I could be wrong and would need to check in more
detail.

Just looking now in the CMake error file, I also note that it
looks
like it can’t find mpi.h, although actually I would have though
that
you couldn’t start building if that wasn’t resolved, so maybe you
resolved this before starting the build?

Best wishes,
Jeremy

On 29 Mar 2023, at 09:30, Guillermo Suárez <
guillermo180395@gmail.com> wrote:

This email from guillermo180395@gmail.com originates from
outside
Imperial. Do not click on links and attachments unless you
recognise the sender. If you trust the sender, add them to your
safe senders list to disable email stamping for this address.

Hi,

I have recently installed the development versions of Lapack
and
Blas (along with some other libraries) on my local machine. I
have
tried to rebuild nektar, without any modification to the make
file,
and it failed because of different errors. I have also tried to
with a clean installation of the latest version, also without
success - same error. I could not manage to find the issue. I
am
attaching the CMake log files as well as part of the screen
output.

Some useful information:
mpirun (Open MPI) 4.1.1
cmake version 3.24.2
g++ (GCC) 11.3.1 20220421
Package lapack-devel-3.10.1-1.fc35.x86_64 is already installed.
Package lapack-3.10.1-1.fc35.x86_64 is already installed.
Package blas-devel-3.10.1-1.fc35.x86_64 is already installed.
Package blas-3.10.1-1.fc35.x86_64 is already installed.

Any help will be appreciated.

Thank you
Guillermo

<output.out><CMakeOutput.log><CMakeError.log>__________________
____
_________________________
Nektar-users mailing list
Nektar-users@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/nektar-users