[MITgcm-support] Compiling for tutorial_baroclinic_gyre

Martin Losch Martin.Losch at awi.de
Fri Dec 16 03:07:13 EST 2011


Hi Kirk,

I think, within directory ~/mitgcm/MITgcm_c63f/verification/tutorial_baroclinic_gyre/build
/home/kbryan/mitgcm/MITgcm_c63f/tools/genmake2  -mods ../code
should work, and ../code also contains an appropriate SIZE.h (I think the error message is a result of not specifying the -mods ../code, where the configuration specific files reside, this is absolutely necessary). 
genmake2 usually can guess an appropriate optfile by itself. In your case it picked linux_ia32_f77.
If you want to specify a different optfile, you can (according to the compiler and platform that you have) choose from /home/kbryan/mitgcm/MITgcm_c63f/tools/build_options

For a single tile configuration you can change this:
sNx=60,
sNy=60,
nSx=1,
nSy=1,
The buffer width is specified by olx/oly, and a value of 2 (as in ../code/SIZE.h) is enough for the choice of advection schemes etc. in this tutorial.

You might also want to have a look at
http://mitgcm.org/public/r2_manual/latest/online_documents/node117.html
(in particular 3.10.5.3) although not quite up to date, I am afraid.

Martin


On Dec 16, 2011, at 5:01 AM, Kirk Bryan wrote:

> I am trying to compile for
> ~/mitgcm/MITgcm_c63f/verification/tutorial_baroclinic_gyre
> 
> I start with the command:
> 
> /home/kbryan/mitgcm/MITgcm_c63f/tools/genmake2 -optfile=/home/kbryan/mitgcm/MITgcm_c63f/tools/suggest_optfile_names
> 
> 
> The results are:
> 
> GENMAKE :
> A program for GENerating MAKEfiles for the MITgcm project.
> For a quick list of options, use "genmake2 -h"
> or for more detail see the Developer's HOWTO manual at:
> http://mitgcm.org/public/docs.html
> === Processing options files and arguments ===
> getting local config information: none found
> Warning: ROOTDIR was not specified ; try using a local copy of MITgcm found at "../../.."
> getting OPTFILE information:
> using OPTFILE="/home/kbryan/mitgcm/MITgcm_c63f/tools/suggest_optfile_names"
> The platform appears to be: linux_ia32
> And possible optfiles are:
> linux_ia32_absoft
> linux_ia32_g77
> linux_ia32_g95
> linux_ia32_gfortran
> linux_ia32_gfortran+mpi_fc_lam
> linux_ia32_ifort
> linux_ia32_ifort10.1
> linux_ia32_ifort11
> linux_ia32_ifort+oad
> linux_ia32_ifort+oad+mpi
> linux_ia32_lf95
> linux_ia32_open64
> linux_ia32_pathf90
> linux_ia32_pgf77
> linux_ia32_pgf77+mpi_aer
> linux_ia32_sunf90
> The platform appears to be: linux_ia32
> a system-default makedepend was not found.
> The possible C compilers found in your path are:
> gcc c89 cc c99
> Setting C compiler to: gcc
> The possible FORTRAN compilers found in your path are:
> f77 f95
> Setting FORTRAN compiler to: f77
> The default optfile is: linux_ia32_f77
> getting AD_OPTFILE information:
> using AD_OPTFILE="../../../tools/adjoint_options/adjoint_default"
> === Checking system libraries ===
> Do we have the system() command using f77... yes
> Do we have the fdate() command using f77... yes
> Do we have the etime() command using f77... yes
> Can we call simple C routines (here, "cloc()") using f77... yes
> Can we unlimit the stack size using f77... yes
> Can we register a signal handler using f77... yes
> Can we use stat() through C calls... yes
> Can we create NetCDF-enabled binaries... yes
> === Setting defaults ===
> Adding MODS directories:
> Making source files in eesupp from templates
> Making source files in pkg/exch2 from templates
> Making source files in pkg/regrid from templates
> === Determining package settings ===
> getting package dependency info from ../../../pkg/pkg_depend
> getting package groups info from ../../../pkg/pkg_groups
> checking list of packages to compile:
> before group expansion packages are: default_pkg_list
> replacing "default_pkg_list" with: gfd
> replacing "gfd" with: mom_common mom_fluxform mom_vecinv generic_advdiff debug mdsio rw monitor
> after group expansion packages are: mom_common mom_fluxform mom_vecinv generic_advdiff debug mdsio rw monitor
> applying DISABLE settings
> applying ENABLE settings
> packages are: debug generic_advdiff mdsio mom_common mom_fluxform mom_vecinv monitor rw
> applying package dependency rules
> packages are: debug generic_advdiff mdsio mom_common mom_fluxform mom_vecinv monitor rw
> Adding STANDARDDIRS='eesupp model'
> Searching for *OPTIONS.h files in order to warn about the presence
> of "#define "-type statements that are no longer allowed:
> found CPP_EEOPTIONS="../../../eesupp/inc/CPP_EEOPTIONS.h"
> found CPP_OPTIONS="../../../model/inc/CPP_OPTIONS.h"
> Creating the list of files for the adjoint compiler.
> === Creating the Makefile ===
> setting INCLUDES
> Determining the list of source and include files
> Writing makefile: Makefile
> Add the source list for AD code generation
> Making list of "exceptions" that need ".p" files
> Making list of NOOPTFILES
> Add rules for links
> Adding makedepend marker
> === Done ===
> 
> next I do
> 
> make Clean
> 
> make depend
> 
> make
> 
> On make it fails on global_vector_sum
> 
> f77 -c global_vec_sum.F
> global_vec_sum_r4:
> Error on line 96 of <stdin>: Declaration error for tmp1: adjustable dimension on non-argument
> Error on line 96 of <stdin>: Declaration error for tmp2: adjustable dimension on non-argument
> Error on line 96 of <stdin>: wr_ardecls: nonconstant array size
> Error on line 96 of <stdin>: wr_ardecls: nonconstant array size
> global_vec_sum_r8:
> Error on line 182 of <stdin>: Declaration error for tmp1: adjustable dimension on non-argument
> Error on line 182 of <stdin>: Declaration error for tmp2: adjustable dimension on non-argument
> Error on line 182 of <stdin>: wr_ardecls: nonconstant array size
> Error on line 182 of <stdin>: wr_ardecls: nonconstant array size
> global_vec_sum_int:
> Error on line 269 of <stdin>: Declaration error for tmp1: adjustable dimension on non-argument
> Error on line 269 of <stdin>: Declaration error for tmp2: adjustable dimension on non-argument
> Error on line 269 of <stdin>: wr_ardecls: nonconstant array size
> Error on line 269 of <stdin>: wr_ardecls: nonconstant array size
> /usr/bin/f77: aborting compilation
> make: *** [global_vec_sum.o] Error 255
> kbryan at kbryan-desktop2:~/mitgcm/MITgcm_c63f/verification/tutorial_baroclinic_gyre/build$
> 
> I think it has something to do with the array size specified in SIZE.h
> 
> For a PC should I have only one tile? If so, should it have any buffer around it?
> 
> C $Header: /u/gcmpack/MITgcm/verification/tutorial_baroclinic_gyre/code/SIZE.h,v 1.1 2006/04/20 16:25:24 jmc Exp $
> C $Name: checkpoint63f $
> C
> C /==========================================================\
> C | SIZE.h Declare size of underlying computational grid. |
> C |==========================================================|
> C | The design here support a three-dimensional model grid |
> C | with indices I,J and K. The three-dimensional domain |
> C | is comprised of nPx*nSx blocks of size sNx along one axis|
> C | nPy*nSy blocks of size sNy along another axis and one |
> C | block of size Nz along the final axis. |
> C | Blocks have overlap regions of size OLx and OLy along the|
> C | dimensions that are subdivided. |
> C \==========================================================/
> C Voodoo numbers controlling data layout.
> C sNx - No. X points in sub-grid.
> C sNy - No. Y points in sub-grid.
> C OLx - Overlap extent in X.
> C OLy - Overlat extent in Y.
> C nSx - No. sub-grids in X.
> C nSy - No. sub-grids in Y.
> C nPx - No. of processes to use in X.
> C nPy - No. of processes to use in Y.
> C Nx - No. points in X for the total domain.
> C Ny - No. points in Y for the total domain.
> C Nr - No. points in Z for full process domain.
> INTEGER sNx
> INTEGER sNy
> INTEGER OLx
> INTEGER OLy
> INTEGER nSx
> INTEGER nSy
> INTEGER nPx
> INTEGER nPy
> INTEGER Nx
> INTEGER Ny
> INTEGER Nr
> PARAMETER (
> & sNx = 30,
> & sNy = 15,
> & OLx = 2,
> & OLy = 2,
> & nSx = 2,
> & nSy = 4,
> & nPx = 1,
> & nPy = 1,
> & Nx = sNx*nSx*nPx,
> & Ny = sNy*nSy*nPy,
> & Nr = 4)
> C MAX_OLX - Set to the maximum overlap region size of any array
> C MAX_OLY that will be exchanged. Controls the sizing of exch
> C routine buufers.
> INTEGER MAX_OLX
> INTEGER MAX_OLY
> PARAMETER ( MAX_OLX = OLx,
> & MAX_OLY = OLy )
> 
> Thanks for any suggestions for a better genmake command and a better specification of SIZE.h
> Kirk
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support




More information about the MITgcm-support mailing list