Home Contact Us Site Map  
    next up previous contents
Next: 3.4.1 Building/compiling the code Up: 3. Getting Started with Previous: 3.3 Model and directory   Contents

3.4 Building the code

To compile the code, we use the make program. This uses a file (Makefile) that allows us to pre-process source files, specify compiler and optimization options and also figures out any file dependencies. We supply a script (genmake2), described in section 3.4.2, that automatically creates the Makefile for you. You then need to build the dependencies and compile the code.

As an example, assume that you want to build and run experiment verification/exp2. The are multiple ways and places to actually do this but here let's build the code in verification/exp2/build:

% cd verification/exp2/build
First, build the Makefile:
% ../../../tools/genmake2 -mods=../code
The command line option tells genmake to override model source code with any files in the directory ../code/.

On many systems, the genmake2 program will be able to automatically recognize the hardware, find compilers and other tools within the user's path (``echo $PATH''), and then choose an appropriate set of options from the files (``optfiles'') contained in the tools/build_options directory. Under some circumstances, a user may have to create a new ``optfile'' in order to specify the exact combination of compiler, compiler flags, libraries, and other options necessary to build a particular configuration of MITgcm. In such cases, it is generally helpful to read the existing ``optfiles'' and mimic their syntax.

Through the MITgcm-support list, the MITgcm developers are willing to provide help writing or modifing ``optfiles''. And we encourage users to post new ``optfiles'' (particularly ones for new machines or architectures) to the mitgcm-support@mitgcm.org MITgcm-support@mitgcm.org list.

To specify an optfile to genmake2, the syntax is:

% ../../../tools/genmake2 -mods=../code -of /path/to/optfile

Once a Makefile has been generated, we create the dependencies with the command:

% make depend
This modifies the Makefile by attaching a (usually, long) list of files upon which other files depend. The purpose of this is to reduce re-compilation if and when you start to modify the code. The make depend command also creates links from the model source to this directory. It is important to note that the make depend stage will occasionally produce warnings or errors since the dependency parsing tool is unable to find all of the necessary header files (eg. netcdf.inc). In these circumstances, it is usually OK to ignore the warnings/errors and proceed to the next step.

Next one can compile the code using:

% make
The make command creates an executable called mitgcmuv. Additional make ``targets'' are defined within the makefile to aid in the production of adjoint and other versions of MITgcm. On SMP (shared multi-processor) systems, the build process can often be sped up appreciably using the command:
% make -j 2
where the ``2'' can be replaced with a number that corresponds to the number of CPUs available.

Now you are ready to run the model. General instructions for doing so are given in section 3.5. Here, we can run the model by first creating links to all the input files:

ln -s ../input/* .
and then calling the executable with:
./mitgcmuv > output.txt
where we are re-directing the stream of text output to the file output.txt.

next up previous contents
Next: 3.4.1 Building/compiling the code Up: 3. Getting Started with Previous: 3.3 Model and directory   Contents
Copyright 2006 Massachusetts Institute of Technology Last update 2018-01-23