intro story D-Flow FM

 

D-Flow Flexible Mesh

D-Flow Flexible Mesh (D-Flow FM) is the new software engine for hydrodynamical simulations on unstructured grids in 1D-2D-3D. Together with the familiar curvilinear meshes from Delft3D 4, the unstructured grid can consist of triangles, pentagons (etc.) and 1D channel networks, all in one single mesh. It combines proven technology from the hydrodynamic engines of Delft3D 4 and SOBEK 2 and adds flexible administration, resulting in:

  • Easier 1D-2D-3D model coupling, intuitive setup of boundary conditions and meteorological forcings (amongst others).
  • More flexible 2D gridding in delta regions, river junctions, harbours, intertidal flats and more.
  • High performance by smart use of multicore architectures, and grid computing clusters.
An overview of the current developments can be found here.
 
The D-Flow FM - team would be delighted if you would participate in discussions on the generation of meshes, the specification of boundary conditions, the running of computations, and all kinds of other relevant topics. Feel free to share your smart questions and/or brilliant solutions! 

 

=======================================================
We have launched a new website (still under construction so expect continuous improvements) and a new forum dedicated to Delft3D Flexible Mesh.

Please follow this link to the new forum: 
/web/delft3dfm/forum

Post your questions, issues, suggestions, difficulties related to our Delft3D Flexible Mesh Suite on the new forum.

=======================================================

** PLEASE TAG YOUR POST! **

 

 

Sub groups
D-Flow Flexible Mesh
DELWAQ
Cohesive sediments & muddy systems

 


Message Boards

Compiling build 2916 on Cray XE6

SA
Steven Ayres, modified 7 Years ago.

Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
I'm trying to build version 2916 for MPI on a Cray XE6 computer. When I run autogen, the following error is generated: configure.ac:104: error: AC_LANG_FUNC_LINK_TRY: unknown language: Fortran. Both autoreconf and aclocal are generating this error. See attached autogen log file for details. Any ideas on how to get past this error?

Thanks,
Steve

Attachments:

Adri Mourits, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Yoda Posts: 1221 Join Date: 1/3/11 Recent Posts
Hi Steven,

The first things to check are the versions of the used tools, especially autoconf, automake and libtool. See prerequisites or the log files in directory ".../src/logs". The ones you use should be equally or higher.

Regards,

Adri
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
I updated the gnu tool environment to the latest versions of autoconf, automake, and libtool; and was able to create the Makefile.in files.

However, configure is generating multiple compiler errors, log file attached. Prior to running configure, I am using the following export commands to set the programming environment to the pgi compilers:

export CC=cc
export CXX=CC
export F77=ftn
export FC=ftn
export MPICC=cc
export MPICXX=CC
export MPIF77=ftn
export MPIFC=ftn

I also loaded the mpich2 module prior to running configure.

I was wondering if anyone has been able to compile Delft3D using the Portland Group (pgi) suite of compilers? Is there something else I need to do prior to running configure?

Thanks,
Steve
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
Delft3D appears to be very sensitive to the compiler environment, especially the Fortran code. I was able to simulate an Intel compiler environment and get a build to complete. However, I noticed toward the end of the build process that there were a few errors related to the availability of the Ruby compiler, which I have not installed. Is it necessary to have Ruby installed if I am only interested in running MPI applications on a remote system?

Thanks,
Steve
Adri Mourits, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6 (Answer)

Yoda Posts: 1221 Join Date: 1/3/11 Recent Posts
Hi Steven,

If all used tools are installed on their default location, and if concurrent versions are removed, the sensitivity should be much less.

Ruby is only used to copy needed so's to the install directory. A Ruby interpreter is more or less standard available on LInux. Replacing the Ruby script by a shell script is on our To Do list.

If you are going to run on a remote system, it is very important that all needed so's (excluding the so's related to the operating system) are copied together with the executable. That is exactly what that Ruby script is doing. If you don't want to use that, you will have to collect all so's yourself with help of the command "ldd libflow2d3d.so".

Regards,

Adri
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
Hi Adri,

I went ahead and installed ruby to get a clean build. However, when testing the examples, I get an immediate segmentation fault error on example 1 (the d_hydro.exe test) both in serial and parallel modes. According to the debugger, the segmentation fault occurs before the MPI environment is even initiated. The wave example (example 7) successfully executes which leads me to suspect there is an issue with MPI for d_hydro.exe.

Could there be a large static array that uses more memory than is available for the static part of the program?

Do you have any suggestions on how to debug this problem?

Thanks,
Steve
Adri Mourits, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Yoda Posts: 1221 Join Date: 1/3/11 Recent Posts
Hi Steven,

Did you compile the source code on the same machine as where you try to run it?

If the serial mode also crashes, I don't expect that the problem is related to MPI.

Example 1 is very small. I don't expect memory problems there.

Do you use a recent tagged version from https://svn.oss.deltares.nl/repos/delft3d/tags (revision 2367 or higher)?

Debugging on Linux is not my favourite thing. If you don't have a decent debugger (e.g. TotalView), you will have to do it the good old way: add write statements to find out where and what went wrong.

Can you post your screen output? May be I can give hints where to search for.

Please check with the Linux command "ldd" what so-files are being used. The best way to do this is to copy the "ldd-lines" from "run_flow2d3d_parallel.sh" to "run_flow2d3d.sh", just before the line that starts the execution of d_hydro ($exedir/d_hydro.exe $argfile). If you're stuck you can post that output too.

I'm really interested why it does not run. Please report all your findings here.

Thanks.

Regards,

Adri
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
Hi Adri,

I'm using Tag 2869 and it was compiled on the same computer where I am trying to run the problems.

I was able to run a Totalview session and push the interactive window to my pc using an X11 window, the screen capture is attached. It seems to be throwing an exception at line 118 in the d_hydro.cpp code. Something about a bad address for the DH variable? Totalview also gave a warning about a bad magic number in the xml config file at the beginning of the Totalview session. Is there a problem with the format of the xml config file?

Thanks,
Steve
xml
Adri Mourits, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Yoda Posts: 1221 Join Date: 1/3/11 Recent Posts
Hi Steven,

It seems that inside Totalview, the xml file is specified as being a core file instead of the command line argument. Also check that the directory containing "d_hydro.exe" and the so-files is added to the environment parameter LD_LIBRARY_PATH inside Totalview (see the run script in exampls\01_standard).

If this does not help: Just to be sure: execute "dos2unix config_d_hydro.xml".

If this does not help: add "ldd d_hydro.exe" to your script. Is it referring to the expected "libflow2d3d.so"?

About your Totalview screenshot: It seems that something goes wrong inside d_hydro.exe before jumping to libflow2d3d.so. Totalview hangs on calling the constructor method of a C++ class that is defined inside d_hydro.exe. Does your run without Totalview hang on exactly the same point or does that run produce more output?

Did you use a C++ compiler and a Fortran compiler from the same vendor (both Intel or Gnu)? Problems may occur when using for example the Gnu C compiler in combination with the Intel Fortran compiler.

Regards,

Adri
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
Hi Adri,

In answer to your questions:

The LD_LIBRARY_PATH is in the bash run script, otherwise it would return a library not found error.

I tried the dos2unix command and it did not make a difference.

The ldd d_hydro.exe command generates the message "not a dynamic executable"

It seems to hang at the same place when running TotalView or using the bash run script.

As far as I know the compilers are both Cray compilers for parallel applications. However, I am simulating an Intel programming environment with the command "module swap PrgEnv-pgi PrgEnv-intel". The default Portland Group programming environment does not successfully build the executables.

The command "d_hydro.exe -v" does return copyright Stichting Deltares info, so the d_hydro.exe file does not appear to be corrupt.

From what I can guess, the problem is with the interpretation of the xml config file since it seems to crash as soon as it tries to read commands from this file. I'm not sure if this is a problem with the command shell as I have read that xml files should not be parsed with bash shells. What also leads me to suspect xml incompatibilities is that the wave executable runs fine and does not use an xml config file. Also, TotalView warned that it was not interpreting the xml file correctly.

Do you have any other ideas on how to resolve this?

Thanks,
Steve
Adri Mourits, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Yoda Posts: 1221 Join Date: 1/3/11 Recent Posts
Hi Steven,

The xml file is read using the external library named expat. You can check what version (Cray?) is used by looking for "expat" in your make.log file.

The xml file is read, starting in "d_hydro.cpp" line 245: this->config = new XmlTree (conf);
May be you can debug inside this call in Totalview.

A very dirty workaround is to remove the xml related part from the code and replace it by some ASCII file reading (or hard coded input). Let me know if you want to do this, then I can guide you through the changes needed.

Regards,

Adri
SA
Steven Ayres, modified 7 Years ago.

RE: Compiling build 2916 on Cray XE6

Padawan Posts: 33 Join Date: 4/21/11 Recent Posts
Adri,

FYI, We believe the problem is actually related to the Cray's handling of dynamic libraries, a new thread was opened for this problem (message 349016).

Thanks,
Steve