|
PathScale Compiler Suite64-Bit Compilers for Linux |
|
User login |
Building MM5
MM5 stands for Mesoscale Model 5.
The PSU/NCAR mesoscale model (known as MM5) is a limited-area, More information is available on the MM5 website.
Steps to building
To build MM5, you will need to download the source, and then build it
as either a serial application or a parallel application. These steps, and any known limitations, are described in the sections below.
Overview
Downloading MM5 Building MM5 as a serial application Building MM5 as an OpenMP application Building MM5 as an MPI application Patches to MM5 (MPI version) Known limitations
Overview
You can build MM5 either as a serial or a parallel (OpenMP or MPI)
application. To build and run MM5 as an MPI application (MM5-MPP), you will need to have an MPI library installed. The instructions assume that MPICH is installed. There is also a PathScale page for building MPICH. We have tested version 3.7.3, 3.7.2, 3.7.0, and 3.6.3 using the EKOPath
Downloading MM5
You can download MM5 from the MM5 website. Note that you should download MPP.TAR.GZ as well as MM5.TAR.GZ if you
want to run parallel applications.The most recent version of MM5 that we have tested was released on November 21, 2005 - Release 3.7.3.
Building MM5 as a serial application
To build MM5, use this edited version of the configure.user file. Put
it into the top level of your MM5 directory. Use the make command at the top level of your MM5 directory make clean make
Note: Do a make clean to remove any earlier
versions of MM5 that might be on your machine.
Building MM5 as an OpenMP application
To build MM5, use this edited version of the configure.user file and follow
the build instructions in Building MM5 as a serial application.
Building MM5 as an MPI application
To build MM5, use this edited version of the configure.user file. PathScale also provides an edited Makefile and makefile.linux file. Put the Makefile and configure.user.omp files into the top level MM5 directory,
and put the makefile.linux file into the MPP/RSL/RSL/ directory. With these files correctly installed, you can build MM5 using make: make mpclean rm MPP/mpp_install make mpp
Patches to MM5 (MPI version)
In the past we have seen some problems with MM5, addressed by
the first two patches, but we have not seen these problems recently. If you have problems with segmentation faults or while using PADIT code with MM5, please use Patch 1 and Patch 2. Patch 3 is for a timing loop that causes a problem when the C code is MM5 version 3.6.3 requires Patch 4. The problem has been fixed in Patch 1 To fix this, make these changes to rsl_mm_io.c: 353c353 < if ( i+ioffset >= 0 ) > if ( i+ioffset >= 0 && i+ioffset < ix_l ) 368c368 < if ( j+joffset >= 0 ) > if ( j+joffset >= 0 && j+joffset < jx_l ) 529c529 < if ( i+ioffset >= 0 ) > if ( i+ioffset >= 0 && i+ioffset < ix_l ) 545c545 < if ( i+ioffset >= 0 ) > if ( i+ioffset >= 0 && i+ioffset < ix_l ) 561c561 < if ( j+joffset >= 0 ) > if ( j+joffset >= 0 && j+joffset < jx_l ) 577c577 < if ( j+joffset >= 0 ) > if ( j+joffset >= 0 && j+joffset < jx_l ) Patch 2 To fix this problem, make the following change in process_refs.c:
7c7
< static int destroy_packrec( p ) packrec_t * p ;
< {
< free( p ) ;
< return(0) ;
< }
> static int destroy_packrec( p ) packrec_t * p ;
> {
> RSL_FREE( p ) ;
> return(0) ;
> }
Patch 3
164,165c164
< volatile int use_p_counter = 0;
< void use_p(int **p) { use_p_counter += (p != NULL); }
> void use_p(int **p) {}
Note: At high optimization levels, the compiler (correctly) Patch 4 Make this change: < extern int errno; > #include <errno.h> All these changes have been submitted to the MM5-MPP maintainers, so
Known limitations
Other than the patches mentioned in the previous section, there are no
known limitations. We recommend you record what steps you took, along with their output, make foo 2>&1 | tee make-foo-log.txt If you have any comments or suggestions about additions to these
categories [ ]
|
Active forum topicsShopping cart
|