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

FDS 6.5.3 Upgrade Issue #4904

Closed
tgob opened this issue Apr 1, 2017 · 112 comments
Closed

FDS 6.5.3 Upgrade Issue #4904

tgob opened this issue Apr 1, 2017 · 112 comments
Assignees

Comments

@tgob
Copy link

tgob commented Apr 1, 2017

I have FDS 6.5.2 with OpenMPI 1.8.4 running stably on a Linux Ubuntu 16.04 LTS cluster with Mellanox Infiniband. The installation was completed using the NISTpre-compiled FDS binaries. I recently attempted to upgrade to FDS 6.5.3 using the NIST precompiled binaries but there is a problem with the new installation:

Installing 64 bit Linux FDS 6.5.3 and Smokeview 6.4.4

Options:

  1. Press to begin installation
  2. Type "extract" to copy the installation files to FDS_6.5.3-SMV_6.4.4_linux64.tar.gz
[Enter]

FDS install options
Press 1 to install in /home/ob1/FDS/FDS6 [default]
Press 2 to install in /opt/FDS/FDS6
Press 3 to install in /usr/local/bin/FDS/FDS6
Enter a directory path to install elsewhere

[1][Enter]

OpenMPI options
Press 1 to install OpenMPI manually [default]
See /home/ob1/FDS/FDS6/bin/README.html for details
Press 2 to use /shared/openmpi_64ib

[2][Enter]

Installation directory: /home/ob1/FDS/FDS6
OpenMPI directory: /shared/openmpi_64ib

Installation beginning
The directory, /home/ob1/FDS/FDS6, already exists.
The installation directory, /home/ob1/FDS/FDS6, has been created.
Creating directory /home/ob1/FDS/FDS6/Uninstall
The installation directory, /home/ob1/FDS/FDS6/Uninstall, has been created.

Copying FDS installation files to /home/ob1/FDS/FDS6
Copy complete.

Backing up /home/ob1/.bashrc_fds to /home/ob1/.bashrc_fds_20170401_102309
Updating .bashrc_fds

Backing up /home/ob1/.bashrc to /home/ob1/.bashrc_20170401_102309
Updating .bashrc

*** Log out and log back in so changes will take effect.

Installation complete.

No issues were reported during the install but when I execute fds from a terminal command prompt on the Master node I get the following output:


Sorry! You were supposed to get help about:
ini file:file not found
But I couldn't open the help file:
/shared/openmpi_64/share/openmpi/help-mpi-btl-openib.txt: No such file or directory. Sorry!

libibverbs: Warning: couldn't load driver '/usr/lib/libibverbs/libmlx5': /usr/lib/libibverbs/libmlx5-rdmav2.so: symbol ibv_cmd_destroy_flow, version IBVERBS_1.0 not defined in file libibverbs.so.1 with link time reference

libibverbs: Warning: couldn't load driver '/usr/lib/libibverbs/libmlx4': /usr/lib/libibverbs/libmlx4-rdmav2.so: symbol ibv_cmd_destroy_flow, version IBVERBS_1.0 not defined in file libibverbs.so.1 with link time reference

libibverbs: Warning: no userspace device-specific driver found for /sys/class/infiniband_verbs/uverbs0

Sorry! You were supposed to get help about:

btl:no-nics

But I couldn't open the help file:

/shared/openmpi_64/share/openmpi/help-mpi-btl-base.txt: No such file or directory.  Sorry!

Fire Dynamics Simulator

Current Date : April 1, 2017 10:32:42

Version : FDS 6.5.3

Revision : FDS6.5.3-598-geb56ed1

Revision Date : Thu Jan 19 16:12:59 2017 -0500

Compilation Date : Jan 22, 2017 18:04:30

MPI Enabled; Number of MPI Processes: 1

OpenMP Enabled; Number of OpenMP Threads: 4

MPI version: 3.0

MPI library version: Open MPI v1.8.4, package: Open MPI gforney@burn Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014

Consult FDS Users Guide Chapter, Running FDS, for further instructions.

Hit Enter to Escape...

For some reason FDS appears to be trying to access a non-infinband openmpi installation and associated help files at:

/shared/openmpi_64/share/openmpi

However openmpi resides in the default Infiniband installation directory (as for FDS 6.5.2):

/shared/openmpi_64ib/share/openmpi

.bashrc and .bashrc_fds are setting the environment variables appropriately, and in particular PATH, LD_LIBRARY_PATH and FDSNETWORK as follows:

PATH:

/shared/openmpi_64ib/bin:/home/ob1/FDS/FDS6/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

LD_LIBRARY_PATH

/shared/openmpi_64ib/lib:/home/ob1/FDS/FDS6/bin/LIB64:/home/ob1/FDS/FDS6/bin/INTELLIBS16

FDSNETWORK

Infiniband

Past upgrades (for example from 6.5.0 to 6.5.2) have been completed successfully by simply downloading the FDS and SmokeView precompiled Linux bundle and running the script (.sh) file.

Infiniband is still working, openmpi is still working (via Infiniband) and SSH is still working (password-less access) between all nodes.

A Windows 7 upgrade to 6.5.3 worked just fine (albeit without openmpi and Infinband on my Windows workstation).

I also tried a Linux Ubuntu 16.04 LTS install without openmpi or Infiniband. This also worked fine.

Any suggestions on how I might complete the upgrade to FDS 6.5.3?

@gforney
Copy link
Contributor

gforney commented Apr 1, 2017 via email

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Can you try the following:
1.) Reinstall FDS 6.5.3 , choose
FDS install options
Press 1 to install in /home/ob1/FDS/FDS6 [default]
1
OpenMPI options
Press 1 to install OpenMPI manually [default]
1
Continue yes, yes, since you're overwritten the previous installation.

  1. cd to FDS/FDS6/bin and then type:
 gunzip openmpi_1.8.4_linux_64.tar.gz
 tar -xvf openmpi_1.8.4_linux_64.tar

Open your .bashrc
Make sure these two lines are found:

export MPIDIST_FDS=/home/ob1/FDS/FDS6/bin/openmpi_64
source ~/.bashrc_fds $MPIDIST_FDS

Now, test if mpirun works or not with any simple example case.

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Can you run these commands

[salah@jbk27s092]$ echo $MPIDIST_FDS
/home/salah/FDS/FDS6/bin/openmpi_64
[salah@jbk27s092]$  echo $MPIDIST_ETH
/shared/openmpi_64
[salah@jbk27s092]$ echo $MPIDIST_IB

[salah@jbk27s092]$ echo $MPIDIST
/shared/openmpi_64

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Tim,
As far as I know it didn't change. The colleagues at NIST are using the Latest version as well and it's working.
Wait for Kevin or gforney to detail on this matter.

Regards,
Salah

@gforney
Copy link
Contributor

gforney commented Apr 1, 2017 via email

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Tim,
Could you please share the fds environment in your .bashrc file.
FDS 6.5.3 changes your .bashrc after installing it,
Check if this library path is set for fds_bashrc
source ~/.bashrc_fds $MPIDIST_IB

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Tim,
There is no attached file.
You mentioned earlier about the installation document, you didn't attach it.
Attach it as .txt file or zip it. Some formats are not supported.

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@tgob
Copy link
Author

tgob commented Apr 1, 2017 via email

@sbenkorichi
Copy link
Collaborator

Tim
I still don't see any file. First click on view in github and reply from there than just replying back to emails. The just drag and drop it.

@tgob
Copy link
Author

tgob commented Apr 1, 2017

Try this..,
Install.zip

@sbenkorichi
Copy link
Collaborator

I've checked your .bashrc file, the parameters are set in accordance. This version was compiled with intel 16, while your Openmpi was done previously with GNU on 6.5.0.
Can you try to test this plz :
modify your .bashrc file by adding IFORT as this line below :
source ~/.bashrc_fds $MPIDIST_IB $IFORT_COMPILER_LIB
on your terminal update your .bashrc:
source ~/.bashrc
Then check if fds now is working. Otherwise, I would recommend you use the latest version of
OpenMPI https://www.open-mpi.org/software/ompi/v2.1/
, and if you can get intel 17 compiler it would be better as well. https://software.intel.com/en-us/intel-parallel-studio-xe
They provide a free version for students, that you can use on 3 different machines.
And, maybe @gforney, might have other suggestions that might fix it within these setup.

Regards,
Salah

@tgob
Copy link
Author

tgob commented Apr 2, 2017 via email

@gforney
Copy link
Contributor

gforney commented Apr 2, 2017 via email

@tgob
Copy link
Author

tgob commented Apr 2, 2017 via email

@gforney
Copy link
Contributor

gforney commented Apr 2, 2017 via email

@sbenkorichi
Copy link
Collaborator

Yes, that's what he has in his bashrc,
bashrc.txt

#FDS -----------------------------------
export MPIDIST_FDS=/home/ob1/FDS/FDS6/bin/openmpi_64
export MPIDIST_ETH=
export MPIDIST_IB=/shared/openmpi_64ib
INTEL_SHARED_LIB=$IFORT_COMPILER_LIB/intel64
source ~/.bashrc_fds $MPIDIST_IB
#FDS -----------------------------------

@sbenkorichi
Copy link
Collaborator

As he said, once he tries to execute it in the terminal, it throws a warnings as he shared above, this might be an issue of libraries.
No issues were reported during the install but when I execute fds from a terminal command prompt on the Master node I get the following output:

Sorry! You were supposed to get help about:
ini file:file not found
But I couldn't open the help file:
/shared/openmpi_64/share/openmpi/help-mpi-btl-openib.txt: No such file or directory. Sorry!

libibverbs: Warning: couldn't load driver '/usr/lib/libibverbs/libmlx5': /usr/lib/libibverbs/libmlx5-rdmav2.so: symbol ibv_cmd_destroy_flow, version IBVERBS_1.0 not defined in file libibverbs.so.1 with link time reference

libibverbs: Warning: couldn't load driver '/usr/lib/libibverbs/libmlx4': /usr/lib/libibverbs/libmlx4-rdmav2.so: symbol ibv_cmd_destroy_flow, version IBVERBS_1.0 not defined in file libibverbs.so.1 with link time reference

libibverbs: Warning: no userspace device-specific driver found for /sys/class/infiniband_verbs/uverbs0

Sorry! You were supposed to get help about:

btl:no-nics
But I couldn't open the help file:

/shared/openmpi_64/share/openmpi/help-mpi-btl-base.txt: No such file or directory. Sorry!
Fire Dynamics Simulator

Current Date : April 1, 2017 10:32:42

Version : FDS 6.5.3

Revision : FDS6.5.3-598-geb56ed1

Revision Date : Thu Jan 19 16:12:59 2017 -0500

Compilation Date : Jan 22, 2017 18:04:30

MPI Enabled; Number of MPI Processes: 1

OpenMP Enabled; Number of OpenMP Threads: 4

MPI version: 3.0

MPI library version: Open MPI v1.8.4, package: Open MPI gforney@burn Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014

Consult FDS Users Guide Chapter, Running FDS, for further instructions.

Hit Enter to Escape...

@tgob
Copy link
Author

tgob commented Apr 2, 2017 via email

@gforney
Copy link
Contributor

gforney commented Apr 2, 2017 via email

@gforney
Copy link
Contributor

gforney commented Apr 3, 2017

what version of openmpi do you have?

here are a couple of experiments to try

The following link contains an openmpi 1.8.4 infiniband distribution and an fds linux executable built against this openmpi library. The source for this fds is identical to the source used to build the latest "official" fds, ie githash eb56ed1 .
https://drive.google.com/drive/folders/0B-W-dkXwdHWNSVJhWXJBMXlSMDQ?usp=sharing

Experiment 1

  1. create a directory named ~/test
  2. cd ~/test
  3. assuming you downloaded the openmpi...tar.gz file to your home directory, type:
    tar xvf ~/openmpi_1.8.4_linux_64ib.tar.gz
  4. edit your .bashrc file replacing the source ~/.bashrc_fds xxx to the following
    source ~/test/openmpi_64ib
  5. log out and log back in then type fds
    what does it say?

Experiment 2

  1. do steps 1 -> 4 in experiment 1
  2. assuming you downloaded fds_mpi_intel_linux_64ib from the above google drive link to the current directory, type
    ./fds_mpi_intel_linux_64ib
    what does it say?

Experiment 3
reinstall the "official" FDS but select the openmpi library we distribute

with all these experiments, after any edits to .bashrc you have to log out and log back in. (in theory you can just source .bashrc - but logging out and logging back in is "safer" )

Note all previous fds' that we have distributed were built against an ethernet (not infiniband) version of Openmpi.

[20:54:34 gforney@blaze:~ ] $ ls /shared/openmpi_64ib
bin etc include lib share

You need to invoke .bashrc_fds using
source ~/.bashrc_fds /shared/openmpi_64ib

@tgob
Copy link
Author

tgob commented Apr 3, 2017 via email

@sbenkorichi
Copy link
Collaborator

Tim,
Try what gforney has suggested.
As for the type of the error your receiving might be due to something broken in your ompi. There is miscommunication and setup between the libraries. It's sort of generic issue. I've seen other people receiving it after they non properly install and set ompi with whatever they want to run it with.
Let us know how it went.

@tgob
Copy link
Author

tgob commented Apr 3, 2017 via email

@sbenkorichi
Copy link
Collaborator

Okay, now I think I got the issue solved (hopefully it's the last trial LOL)

Go to the makefile in /build directory, scroll down to line 601.

mpi_gnu_linux_64 : FFLAGS = -O3 $(GITINFOGNU)
mpi_gnu_linux_64 : FCOMPL = mpifort
mpi_gnu_linux_64 : FOPENMPFLAGS =  -fopenmp
mpi_gnu_linux_64 : obj = fds_mpi_gnu_linux_64
mpi_gnu_linux_64 : setup $(obj_mpi)
	$(FCOMPL) $(FFLAGS) $(FOPENMPFLAGS) -o $(obj) $(obj_mpi

Then changed -03 to -02 in the first line.
compile it and test it now.

salah@salah ~/Desktop/fds_examples/test4 $ /home/salah/openmpi/bin/mpirun -np 4 ./fds_mpi_gnu_linux_64 test.fds 
 Mesh      1 is assigned to MPI Process      0
 Mesh      2 is assigned to MPI Process      1
 Mesh      3 is assigned to MPI Process      2
 Mesh      4 is assigned to MPI Process      3
 OpenMP thread   1 of   3 assigned to MPI process      1 of      3
 OpenMP thread   2 of   3 assigned to MPI process      1 of      3
 OpenMP thread   3 of   3 assigned to MPI process      1 of      3
 OpenMP thread   1 of   3 assigned to MPI process      2 of      3
 OpenMP thread   2 of   3 assigned to MPI process      2 of      3
 OpenMP thread   0 of   3 assigned to MPI process      2 of      3
 OpenMP thread   1 of   3 assigned to MPI process      3 of      3
 OpenMP thread   3 of   3 assigned to MPI process      3 of      3
 OpenMP thread   2 of   3 assigned to MPI process      3 of      3
 OpenMP thread   0 of   3 assigned to MPI process      0 of      3
 OpenMP thread   3 of   3 assigned to MPI process      0 of      3
 OpenMP thread   2 of   3 assigned to MPI process      0 of      3
 OpenMP thread   1 of   3 assigned to MPI process      0 of      3
 OpenMP thread   3 of   3 assigned to MPI process      2 of      3
 OpenMP thread   0 of   3 assigned to MPI process      3 of      3
 OpenMP thread   0 of   3 assigned to MPI process      1 of      3
 Completed Initialization Step  1
 Completed Initialization Step  2
 Completed Initialization Step  3
 Completed Initialization Step  4

 Fire Dynamics Simulator

 Current Date     : April 23, 2017  01:40:37
 Version          : FDS 6.5.3
 Revision         : FDS6.5.3-1503-g1746db1-dirty
 Revision Date    : Thu Apr 20 10:25:17 2017 -0400
 Compilation Date : Apr 23, 2017  01:32:57

 MPI Enabled; Number of MPI Processes:          4
 OpenMP Enabled; Number of OpenMP Threads:   4

 MPI version: 3.1
 MPI library version: Open MPI v2.1.0, package: Open MPI salah@salah Distribution, ident: 2.1.0, repo rev: v2.0.1-696-g1cd1edf, Mar 20, 2017

 Job TITLE        : 
 Job ID string    : test

 Time Step:      1, Simulation Time:      0.20 s
 Time Step:      2, Simulation Time:      0.40 s
 Time Step:      3, Simulation Time:      0.59 s
 Time Step:      4, Simulation Time:      0.79 s

Let us know if it solves it for you.
Time for bed now lol

@tgob
Copy link
Author

tgob commented Apr 23, 2017 via email

@sbenkorichi
Copy link
Collaborator

Actually, the error persist time to time.
In the beginning it works, and then once you retry it multiple times, it stop working..
I'm trying to test a simple example of CPU_TIME to see if it's from it or not.

@sbenkorichi
Copy link
Collaborator

Tested this example, the cpu time is working.
try to test it for yours.
compile it with

gfortran -c test.f90
gfortran test.o -o test

run it
./test
You will receive an output in your terminal similar to this :
http://people.sc.fsu.edu/~jburkardt/f_src/timer/timer_cpu_time_output.txt

test.f90.txt

@sbenkorichi
Copy link
Collaborator

sbenkorichi commented Apr 23, 2017

From the tests that I've run,
mpi_gnu_linux_64 : FFLAGS = -O0 $(GITINFOGNU)
Only -O0 and -O1 had worked over and over with no errors.
Whereas : -O2 works sometimes and others throw error.
-O3 : it throws an error directly.

PS: when you try to recompile it again, make sure to remove all the files except the make_fds.sh before you compile it.

@tgob
Copy link
Author

tgob commented Apr 23, 2017 via email

@sbenkorichi
Copy link
Collaborator

Interesting,
The tests that I've done were around 6-7 each, it took around 5 minutes to get it initialised.
I will try it now under my other machine to see what it gives.
I'm not sure if it has to do with the CPU itself as you saw it sometimes works 8 times in a row.
Well, if you can get touch with someone why not, that would be helpful.
I will test it also under intel's compiled one.

@sbenkorichi
Copy link
Collaborator

sbenkorichi commented Apr 23, 2017

fyi, I've tested commenting the CPU_TIME for the sake of testing it.
I've recompiled it twice, and it still does result in error. This would suggest it's not coming from it.
I've just tested it with the flag : -g
It works with no error. for the 4 trials worked with no error.
So,-O3& -O2 doesn't seems to be working under them.
I've noticed that under gnu it's very slow compared with intel (this for mpi_gnu_linux_64),
32 version doesn't have openMP flag, while running it with mpirun, it runs almost as quick as intel.

@tgob
Copy link
Author

tgob commented Apr 24, 2017 via email

@sbenkorichi
Copy link
Collaborator

the warning
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL

Yes, there still that warning after the completion of each process. However if you notice if you run it without mpirun, you won't receive it.
I tried it with 32 version didn't receive it.
Similarly with Intel's one. It's coming from mpi_gnu_linux_64.

I will play around it a bit .

@tgob
Copy link
Author

tgob commented Apr 24, 2017 via email

@sbenkorichi
Copy link
Collaborator

sbenkorichi commented Apr 24, 2017

I've tested now under Centos 7 couple times, it's working with -O3, and no errors of memory or about the floating points .
I think this issue is in the compiler itself. Which version are you using?

[salah@jbk27s092 test10]$ /home/salah/openmpi4/bin/mpirun -np 4 ./fds_mpi_gnu_linux_64 M20-4.fds 
 Mesh      1 is assigned to MPI Process      0
 Mesh      2 is assigned to MPI Process      1
 Mesh      3 is assigned to MPI Process      2
 Mesh      4 is assigned to MPI Process      3
 OpenMP thread   0 of   3 assigned to MPI process      1 of      3
 OpenMP thread   0 of   3 assigned to MPI process      3 of      3
 OpenMP thread   1 of   3 assigned to MPI process      3 of      3
 OpenMP thread   0 of   3 assigned to MPI process      0 of      3
 OpenMP thread   2 of   3 assigned to MPI process      3 of      3
 OpenMP thread   3 of   3 assigned to MPI process      2 of      3
 OpenMP thread   1 of   3 assigned to MPI process      2 of      3
 OpenMP thread   3 of   3 assigned to MPI process      1 of      3
 OpenMP thread   2 of   3 assigned to MPI process      1 of      3
 OpenMP thread   1 of   3 assigned to MPI process      1 of      3
 OpenMP thread   2 of   3 assigned to MPI process      2 of      3
 OpenMP thread   3 of   3 assigned to MPI process      3 of      3
 OpenMP thread   0 of   3 assigned to MPI process      2 of      3
 OpenMP thread   2 of   3 assigned to MPI process      0 of      3
 OpenMP thread   1 of   3 assigned to MPI process      0 of      3
 OpenMP thread   3 of   3 assigned to MPI process      0 of      3
 Completed Initialization Step  1
 Completed Initialization Step  2
 Completed Initialization Step  3
 Completed Initialization Step  4

 Fire Dynamics Simulator

 Current Date     : April 24, 2017  08:54:06
 Version          : FDS 6.5.3
 Revision         : FDS6.5.3-1503-g1746db1-dirty
 Revision Date    : Thu Apr 20 10:25:17 2017 -0400
 Compilation Date : Apr 24, 2017  08:50:43

 MPI Enabled; Number of MPI Processes:          4
 OpenMP Enabled; Number of OpenMP Threads:   4

 MPI version: 3.1
 MPI library version: Open MPI v2.1.0, package: Open MPI salah@jbk27s092.dhcp.ulster.ac.uk Distribution, ident: 2.1.0, repo rev: v2.0.1-696-g1cd1edf, Mar 20, 2017

 Job TITLE        : 
 Job ID string    : M20-4

 Time Step:      1, Simulation Time:      0.20 s
 Time Step:      2, Simulation Time:      0.40 s
 Time Step:      3, Simulation Time:      0.59 s
 Time Step:      4, Simulation Time:      0.79 s
 Time Step:      5, Simulation Time:      0.99 s
 Time Step:      6, Simulation Time:      1.19 s
 Time Step:      7, Simulation Time:      1.38 s
 Time Step:      8, Simulation Time:      1.58 s
 Time Step:      9, Simulation Time:      1.78 s
 Time Step:     10, Simulation Time:      1.98 s
 Time Step:     20, Simulation Time:      3.95 s
 Time Step:     30, Simulation Time:      5.93 s
 Time Step:     40, Simulation Time:      7.91 s
 Time Step:     50, Simulation Time:      9.88 s
 Time Step:     60, Simulation Time:     11.86 s
 Time Step:     70, Simulation Time:     13.34 s
 Time Step:     80, Simulation Time:     14.56 s
 Time Step:     90, Simulation Time:     15.83 s
 Time Step:    100, Simulation Time:     16.98 s
 Time Step:    125, Simulation Time:     20.00 s
MPI process      2 has completed
MPI process      1 has completed
MPI process      0 has completed
MPI process      3 has completed

STOP: FDS completed successfully (CHID: M20-4)
[salah@jbk27s092 test10]$ gfortran --version
GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING

[salah@jbk27s092 test10]$ 

This under ubuntu that throws that warning at the end eventhough it's up to date.

sudo apt-get install gfortran
[sudo] password for salah: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
gfortran is already the newest version (4:5.3.1-1ubuntu1).
0 to upgrade, 0 to newly install, 0 to remove and 2 not to upgrade.

@tgob
Copy link
Author

tgob commented Apr 24, 2017 via email

@sbenkorichi
Copy link
Collaborator

Yes you are right about the version.
I'm actually installing it now. It's taking quite sometime for the make process.
I will report later if the upgrade fixes it.

@sbenkorichi
Copy link
Collaborator

sbenkorichi commented Apr 25, 2017

Alright, here is an update on what I've done
I installed gcc 6.3.0 (latest version), however it didn't seem to be working as it's throwing the same error.
What I did next is to remove gfortran or any other version you have.

sudo apt-get remove gfortran

Then
I had to install this specific version :
sudo apt-get install gfortran-4.8

Create a link to gfortran
sudo ln -s /usr/bin/gfortran-4.8 /usr/bin/gfortran
Check now if gfortran appears or no.
gfortran --version
it should gives you 4.8.5 , if not try it with
sudo ln -sfn /usr/bin/gfortran-4.8 /usr/bin/gfortran
Normally this would solve it.
Now with openmpi compilation
created a directory in my homepage (say openmpi3)
Download the latest openmpi (2.1.0) and extract it.
cd openmpi-2.1.0
now with configuration :
./configure CC=icc CC=gcc --enable-mpi-fortran --enable-static --disable-shared -disable-dlopen --prefix=/home/salah/openmpi3
(notice here I had to disable dlopen since I had some issues with it during the fds compilation, if you don't experience it, then no need to disable it. ( it wont hurt performance also in case you disable it).

make
sudo make install

Now open .bashrc file
Make sure to export these paths :

export MPIDIST_FDS=/home/salah/openmpi3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openmpi3/lib
source ~/.bashrc_fds $MPIDIST_FDS

save it and close it,
source ~/.bashrc (or better to log off and log in as Glenn suggested, because sometimes, it wont be updated).

Test it the path of of mpirun

which mpirun
/home/salah/openmpi3/bin/mpirun

If it matches the path you set, then you're ready for compilation.
Leave the setting of the makefile as it is (i.e. especially the -O3)
cd to mpi_gnu_linux_64
./make_fds.sh
The compilation should terminate with no error (note in case you receive an error of dlopen, then go back to the openmpi compilation again and disable it in the configuration process).

Now test it :

salah@salah ~/Desktop/fds_examples/-O3/test9 $ mpirun -np 4 ./fds_mpi_gnu_linux_64 M20-4.fds 
 Mesh      1 is assigned to MPI Process      0
 Mesh      2 is assigned to MPI Process      1
 Mesh      3 is assigned to MPI Process      2
 Mesh      4 is assigned to MPI Process      3
 OpenMP thread   3 of   3 assigned to MPI process      1 of      3
 OpenMP thread   0 of   3 assigned to MPI process      1 of      3
 OpenMP thread   2 of   3 assigned to MPI process      1 of      3
 OpenMP thread   1 of   3 assigned to MPI process      1 of      3
 OpenMP thread   2 of   3 assigned to MPI process      2 of      3
 OpenMP thread   3 of   3 assigned to MPI process      2 of      3
 OpenMP thread   1 of   3 assigned to MPI process      2 of      3
 OpenMP thread   3 of   3 assigned to MPI process      3 of      3
 OpenMP thread   2 of   3 assigned to MPI process      3 of      3
 OpenMP thread   1 of   3 assigned to MPI process      3 of      3
 OpenMP thread   0 of   3 assigned to MPI process      3 of      3
 OpenMP thread   1 of   3 assigned to MPI process      0 of      3
 OpenMP thread   3 of   3 assigned to MPI process      0 of      3
 OpenMP thread   2 of   3 assigned to MPI process      0 of      3
 OpenMP thread   0 of   3 assigned to MPI process      0 of      3
 OpenMP thread   0 of   3 assigned to MPI process      2 of      3
 Completed Initialization Step  1
 Completed Initialization Step  2
 Completed Initialization Step  3
 Completed Initialization Step  4

 Fire Dynamics Simulator

 Current Date     : April 25, 2017  09:12:40
 Version          : FDS 6.5.3
 Revision         : FDS6.5.3-1503-g1746db1
 Revision Date    : Thu Apr 20 10:25:17 2017 -0400
 Compilation Date : Apr 25, 2017  08:58:39

 MPI Enabled; Number of MPI Processes:          4
 OpenMP Enabled; Number of OpenMP Threads:   4

 MPI version: 3.1
 MPI library version: Open MPI v2.1.0, package: Open MPI salah@salah Distribution, ident: 2.1.0, repo rev: v2.0.1-696-g1cd1edf, Mar 20, 2017

 Job TITLE        : 
 Job ID string    : M20-4

 Time Step:      1, Simulation Time:      0.20 s
 Time Step:      2, Simulation Time:      0.40 s
 Time Step:      3, Simulation Time:      0.59 s
 Time Step:      4, Simulation Time:      0.79 s
 Time Step:      5, Simulation Time:      0.99 s
 Time Step:      6, Simulation Time:      1.19 s
 Time Step:      7, Simulation Time:      1.38 s
 Time Step:      8, Simulation Time:      1.58 s
 Time Step:      9, Simulation Time:      1.78 s
 Time Step:     10, Simulation Time:      1.98 s
 Time Step:     20, Simulation Time:      3.95 s
 Time Step:     30, Simulation Time:      5.93 s
 Time Step:     40, Simulation Time:      7.91 s
 Time Step:     50, Simulation Time:      9.88 s
 Time Step:     60, Simulation Time:     11.86 s
 Time Step:     70, Simulation Time:     13.34 s
 Time Step:     80, Simulation Time:     14.56 s
 Time Step:     90, Simulation Time:     15.83 s
 Time Step:    100, Simulation Time:     16.98 s
 Time Step:    125, Simulation Time:     20.00 s
MPI process      3 has completed
MPI process      1 has completed
MPI process      2 has completed
MPI process      0 has completed

STOP: FDS completed successfully (CHID: M20-4)
salah@salah ~/Desktop/fds_examples/-O3/test9 $ 

Now it works with no error whether memory or floating points. ( I've tested once with this file, and then had to reduce the number of cells and time to 5 sec since my laptop has only 4 cores, just to gain some time during testing)
I found out other people faced similar issues with other programs also during compilation with gfortran, while other compilers work fine. It turns out that certain versions of gfortran throw these issues.
With gfortran-4.8 you would fix the issue.
I will play with gfortran-6 once I get some time.

Try to follow these steps, and let us know if it works now for you.

Cheers,
Salah

@tgob
Copy link
Author

tgob commented Apr 25, 2017 via email

@sbenkorichi
Copy link
Collaborator

Lol I faced a bit of hassle to get it installed even the instructions from stackoverflow didn't help.
I will share with you later how I got it installed when i have my laptop in front of me.
Go ahead with gfortran-4.8 it will fix this issue.

@sbenkorichi
Copy link
Collaborator

sbenkorichi commented Apr 25, 2017

GCC-6.3.0 installation,
I presume you already downloaded the latest version.
create a directory (say gcc-build)
mkdir gcc-build
copy the tar file and extract it in that directory
inside gcc-build create another directory (say build)
mkdir build
cd build

../configure                                         \
    --prefix=/usr                                    \
    --disable-multilib                               \
    --with-system-zlib                               \
    --enable-languages=c,c++,fortran,go,objc,obj-c++

then with make
make
sudo make install

You can check it,
gcc --version
it should show 6.3.0
For more details check
http://www.linuxfromscratch.org/blfs/view/cvs/general/gcc.html
This also could help if the above doesn't work
Build from source section:
https://gcc.gnu.org/wiki/GFortranBinaries

@sbenkorichi
Copy link
Collaborator

gfortran 4.9 , gfortran 5 and gfortran 6 all failed.
However, I tried to downgrade to gfortran-4.7 and it worked perfectly fine as gfortran-4.8.

@tgob
Copy link
Author

tgob commented Apr 26, 2017 via email

@sbenkorichi
Copy link
Collaborator

Yes Tim, you would receive an error, because first you need to create a symbolik link
try this:
Create a link to gfortran
sudo ln -s /usr/bin/gfortran-4.8 /usr/bin/gfortran
Check now if gfortran appears or no.
gfortran --version
it should gives you 4.8.5 , if not try it with
sudo ln -sfn /usr/bin/gfortran-4.8 /usr/bin/gfortran
Normally this would solve it.
I've edited my previous comment just after I posted because I found I forget to share this step.
So, it's better to check the steps from the github repo instead of the mail itself.
Try it now and let me know.
Don't change any alias.
Cheers,
Salah

@tgob
Copy link
Author

tgob commented Apr 26, 2017 via email

@sbenkorichi
Copy link
Collaborator

Glad we could be of help.
Please don't hesitate to report the typos and if you have other recommendations as well.
Yes I have a laptop with 4 cores only I've seen your installation user to use the infinband during configuration of openmpi.
Well happy days then !

Regards
Salah

@tgob
Copy link
Author

tgob commented Apr 26, 2017 via email

@gforney
Copy link
Contributor

gforney commented Apr 26, 2017 via email

@tgob
Copy link
Author

tgob commented Apr 27, 2017

The new installation has been verified (FDS Technical Reference Manual, Volume 2, Appendix B) today without issue. It also verifies with FDS 6.5.3 compiled using -O3 -ffast-math compiler options. These, combined with OpenMPI 2.1.0, provide a typical decrease of 10% in overall processing time over the previous installation (subject of course to the model and process allocations).

@tgob tgob closed this as completed Apr 27, 2017
@rmcdermo
Copy link
Contributor

FYI. We got away from using -O3 because we showed it gave in some cases significantly different numerical results from -O2. Ultimately, we lost trust in it. But my memory is fuzzy on this. We are going back a few years to when Kris Overholt was here.

@tgob
Copy link
Author

tgob commented Apr 27, 2017

Thanks Randy. -O3 and -O3 -ffast-math under gfortran 4.8 are performing very well with FDS 6.5.3 against the verification suite criteria (the margins are actually better than some of my earlier installations). I've also run some FireNZE in-house models with several million cells over 16 meshes across IB for extended periods (~ 6 hours). These tests are on a contrived compartment model with outputs typical of those used in a fire report. The outputs are essentially identical to previous FDS installations. I have almost finished writing up the Verification report for this upgrade. Please do let me know if you'd like this, or the verification spread sheets (MS Excel).

Next to validation and verification, processing speed is important in a commercial setting (noting that model appropriateness is another issue). Often times I'll have scores of fire model scenarios to run and analyse (including sensitivity studies) in developing a fire design solution, perhaps in as little as four weeks. While I do put some effort in to optimizing models occasionally run times can exceed a week.

Any significant changes to my FDS cluster are tested. I have previously posted a discussion document on Verification which you may not have seen. You can read it at: http://fire.aquacoustics.biz/html/publications.html Click on the 'Verification of Fire Dynamics Simulator' download link.

@mcgratta
Copy link
Contributor

The problem with -O3 is that it has in the past generated seg faults and other problems that -O2 did not. It is faster, in general, but we have to make sure our released executable runs well on all platforms. I think that -O3 is a good option for those compiling themselves, where they can tune the compilation to their exact hardware.

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

5 participants