ROMS with gfortran 5.2?

Discussion on computers, ROMS installation and compiling

Moderators: arango, robertson

Post Reply
Message
Author
JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

ROMS with gfortran 5.2?

#1 Unread post by JDTilley »

Hi. I am brand new to ROMS and compiled the source code for the first time yesterday. I use macports so my dependencies were installed using the gcc5, netcdf +netcdf4 +dap +gcc5, and netcdf-fortran +gcc5 ports. The compilation seemed to work, but I am having a problem running the Upwelling test case as another user was here...

https://myroms.org/forum/viewtopic.php?f=31&t=3862

I tried setting USE_DEBUG to on, but the problem persists. I get the same segmentation fault as the above user. I see they got theirs working using a different compiler. Should I be able to compile using gfortran 5.2? If not, what is the latest version of gfortran I should use. Thanks.
Last edited by JDTilley on Thu Oct 29, 2015 3:34 pm, edited 1 time in total.

robertson
Site Admin
Posts: 227
Joined: Wed Feb 26, 2003 3:12 pm
Location: IMCS, Rutgers University

Re: ROMS with gfortran 5.2?

#2 Unread post by robertson »

Hi,

I think we need clarification and/or more information. You mention segmentation fault but the post you refer to is a compiler linking error. If you are getting the same error as the post you refer to, it is likely that you have not set USE_NETCDF4 (and possibly the appropriate NETCDF_CONFIG and NETCDF_INCDIR) in your build.sh or build.bash. Even if you only want to write NetCDF3 files you still have to enable USE_NETCDF4 to successfully compile with a NetCDF4 library. There is a separate CCP option to enable writing NetCDF4 (HDF5) format files for model output.

If however, you are actually getting a segmentation violation at run time we will need more info such as the output log from the oceanS execution.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#3 Unread post by JDTilley »

Thanks for the help. I apologize, I put the wrong link up there. It should be corrected now. My segmentation fault is occurring at run time. I was able to compile by setting USE_NETCDF4 to on. I also set my NETCDF_CONFIG to /opt/local/bin/nc-config and NETCDF_INCDIR to /opt/local/include (both the macports default locations). So it seemed to build ok. I got the error when running oceanM. The same problem occurred when I set USE_DEBUG to on and ran with oceanG. Unfortunately, I am not at the computer at the moment, but I'd be happy to provide any information that would be helpful later today. I can tell you that the segmentation fault occurred right around the history output, and I was left with the history netcdf file but no other output netcdfs. So some problem with netcdf does seem quite possible.

The program stops at the same point as for this user, although it does give me a line number I believe:

https://myroms.org/forum/viewtopic.php? ... 702#p14149

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#4 Unread post by JDTilley »

I have attached the output log.
Attachments
output.log
(21.3 KiB) Downloaded 496 times

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#5 Unread post by JDTilley »

Another question. I see that I have hdf5 installed as hdf5 @1.8.15-patch1_0+cxx+gcc5. There is a +fortran variant. Could my problem be related to this. I just noticed you mentioned hdf5 in the above post. I also find that the ocean_his.nc is corrupted when I try ncdump (although the fact it is only 32kb could have been a sign).
Last edited by JDTilley on Thu Oct 29, 2015 9:30 pm, edited 1 time in total.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#6 Unread post by kate »

HDF5 is compiled with the C compiler, not Fortran. You won't be using that library anyway without #defining HDF5.

Can you recompile with USE_DEBUG and try again?

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#7 Unread post by JDTilley »

I retried with USE_DEBUG on, and I get the same result using oceanG. Attached is my log. You may notice I changed the OS setting to Darwin, although I'm not sure that's required (or advised) from the Mac installation wiki.
Attachments
output.log
(21.3 KiB) Downloaded 444 times
Last edited by JDTilley on Fri Oct 30, 2015 9:28 pm, edited 1 time in total.

User avatar
m.hadfield
Posts: 521
Joined: Tue Jul 01, 2003 4:12 am
Location: NIWA

Re: ROMS with gfortran 5.2?

#8 Unread post by m.hadfield »

In an earlier post you said
The program stops at the same point as for this user, although it does give me a line number I believe
Does it still give you a line number? If so, what is it? Is there any other output to stderr that you haven't shown us?

Once you have a source code line number you can usually tell pretty quickly what's going wrong.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#9 Unread post by JDTilley »

Sorry, I did not realize the output.log didn't include the error. Here it is. I must have been mistaken about it giving a line number.

Code: Select all

      DEF_HIS   - creating history file, Grid 01: ocean_his.nc

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x1089818b6
#1  0x108980e53
#2  0x7fff8d28a529
Segmentation fault: 11

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#10 Unread post by JDTilley »

I think I saw the line number during compilation. I get the line here:

Code: Select all

makefile:234: INCLUDING FILE /Users/redacted/ROMS/Projects/Upwelling/Build/make_macros.mk WHICH CONTAINS APPLICATION-DEPENDENT MAKE DEFINITIONS

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#11 Unread post by kate »

Nope, that's not the line number we are looking for.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#12 Unread post by JDTilley »

Thanks. I will try editing the .mk file with the following, and see if I can get it.

Code: Select all

ifdef USE_DEBUG
           FFLAGS += -g -fbounds-check -fbacktrace
else
           FFLAGS += -O3 -ffast-math
endif
Last edited by JDTilley on Fri Oct 30, 2015 10:15 pm, edited 1 time in total.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#13 Unread post by JDTilley »

So -fbacktrace didn't reveal the line number. Any suggestions?

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#14 Unread post by JDTilley »

This may be a shot in the dark, but after some reading I am beginning to think that I should be using nf-config instead of nc-config. But in this I also noticed that nf-config seems to have some questionable settings.

Code: Select all

This netCDF-Fortran 4.4.2 has been built with the following features: 

  --cc        -> /usr/bin/clang
  --cflags    ->  -I/opt/local/include -I/opt/local/include -DNDEBUG -DpgiFortran

  --fc        -> /opt/local/bin/gfortran-mp-5
  --fflags    -> -I/opt/local/include
  --flibs     -> -L/opt/local/lib -lnetcdff -L/opt/local/lib -Wl,-headerpad_max_install_names -lnetcdf -lnetcdf 
  --has-f90   -> no
  --has-f03   -> yes

  --has-nc2   -> yes
  --has-nc4   -> yes

  --prefix    -> /opt/local
  --includedir-> /opt/local/include
  --version   -> netCDF-Fortran 4.4.2
In particular, I'm worried about the CC option not being gcc and that has-f90 is no. Should I be concerned about this. How would I go about changing CC to gcc instead of clang?

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#15 Unread post by kate »

Compile it yourself?

I don't think the has-f90 thing is a problem because I also have it:

Code: Select all

kate@ThinkPad-W520:~$ nf-config --all

This netCDF-Fortran 4.4.0 has been built with the following features: 

  --cc        -> gcc
  --cflags    ->  -I/usr/local/include 

  --fc        -> gfortran
  --fflags    -> -I/usr/local/include
  --flibs     -> -L/usr/local/lib -lnetcdff  -lnetcdf -lnetcdf 
  --has-f90   -> no
  --has-f03   -> yes

  --has-nc2   -> yes
  --has-nc4   -> yes

  --prefix    -> /usr/local
  --includedir-> /usr/local/include
  --version   -> netCDF-Fortran 4.4.0
Of course, this isn't a Mac, but plenty of people use Macs for this.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#16 Unread post by JDTilley »

Thanks. I was able to get CC to gcc by doing:

Code: Select all

sudo port install netcdf-fortran configure.compiler=macports-gcc-5
Unfortunately I still get the error.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#17 Unread post by kate »

Did you uninstall the other one? How do you know which one you're getting?

If you download the source code, it comes with a test suite. You need to find out if your netcdf works at all before you tackle the mess that is ROMS.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#18 Unread post by JDTilley »

Yes I uninstalled the old one. Netcdf is working as far as I can tell. Both nc-config --all and nf-config --all are giving me output.

edit: you are right. I am getting a segmentation fault using ncdump on some test .nc files.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#19 Unread post by kate »

I found a netcdf test code (attached). Here's how I compiled and ran it:

Code: Select all

% nc-config --prefix
/usr/local/pkg/netcdf/netcdf-4.3.0.gnu-4.7.3
% gfortran -I/usr/local/pkg/netcdf/netcdf-4.3.0.gnu-4.7.3/include gen_netcdf.f90 -L/usr/local/pkg/netcdf/netcdf-4.3.0.gnu-4.7.3/lib -lnetcdf -lnetcdff
% mkdir output
% a.out
% ncdump -h output/*
netcdf cfd3D_000003 {
dimensions:
	idimension = 10 ;
	jdimension = 20 ;
	kdimension = 30 ;
	timedimension = UNLIMITED ; // (0 currently)
variables:
	float tVar(timedimension) ;
		tVar:long_name = "time" ;
		tVar:units = "seconds" ;
	float xVar(idimension) ;
		xVar:long_name = "x" ;
		xVar:units = "m" ;
	float yVar(jdimension) ;
		yVar:long_name = "y" ;
		yVar:units = "m" ;
	float zVar(kdimension) ;
		zVar:long_name = "z" ;
		zVar:units = "m" ;
}
Attachments
gen_netcdf.f90
Netcdf example
(3.36 KiB) Downloaded 471 times

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#20 Unread post by JDTilley »

I appreciate all your help. I managed to get the project to compile. I had to uninstall all traces of netcdf4 and hdf5 from macports, and build everything from source. It was not trivial for me, but I'm happy you could steer me in the right direction. It took about 3 min to run (without debug). I hope my computer will be able to keep up with the projects I hope to build. I am a little curious why I need to execute build.bash with sudo. Is that because my packages were installed using 'sudo make install'?

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: ROMS with gfortran 5.2?

#21 Unread post by kate »

No, you shouldn't have to sudo build.bash for ROMS. You need to have write permission on $SCRATCH_DIR, wherever that is and also $BINDIR. Please tell us the error you get if you want specific help.

JDTilley
Posts: 63
Joined: Tue May 31, 2011 3:31 pm
Location: University of Southern Mississippi

Re: ROMS with gfortran 5.2?

#22 Unread post by JDTilley »

Thanks. I deleted the sudo built executables and changed the owner of the build directory and build.bash executed correctly.

Post Reply