Download elsA MDEV-03036

Transcript
Ref.: /ELSA/MDEV-03036
Version.Edition : 1.4
Date : July 11, 2007
Page :
33 / 67
elsA
DSNA
3.2.2
Development Process Tutorial
MPI settings
If you want to build a MPI executable, you must set E_MPIPATH_I, E_MPIPATH_L,
MPICCCFLAGS, and possibly MPIEXTERNLIBS2 .
Insulation of elsA from platform-dependent features
3.3
Before entering the compile stage, you will have probably to make minor changes to
three files:
• Def/Global/DefCompiler.h
• Def/Global/DefIostream.h
• Def/Global/DefFortranOpDir.h
In addition, in MPI mode, you may have to modify two other files:
• Pcm/Base/PcmDefMpi.h
• Def/Global/DefTypes.h
3.3.1
DefCompiler.h : STL (and string) insulation
STL platform dependent C++ code is centralized in the C++ header :
$ELSAWKSP/Kernel/src/Def/Global/DefCompiler.h.
You must define the preprocessor symbols E_STD and _DEF_USE_USING_, to control if STL classes (vector, list, map. . . ) are in namespace std:: or not (i.e
in global namespace ::).
In some rare cases, you may have to do similar things with the string class.
In some situations, you may have to change the definition of preprocessor symbol
E_CONST_ITERATOR; defining E_CONST_ITERATOR to iterator (instead of
const_iterator) may solve compilation errors (but decrease somewhat type safety).
3.3.2
DefIostream.h : iostream insulation
iostream dependent code is centralized in C++ header :
$ELSAWKSP/Kernel/src/Def/Global/DefIostream.h.
In most "old" C++ compilers, the iostream library was not included in the std::
namespace. Actually, it was the old AT&T Cfront compiler library, included through
the iostream.h header. Now, recent compilers require the inclusion of the iostream
header (without extension). But even with this up-to-date inclusion, some iostream
libraries are not within std:: namespace. For example, with SGI CC v7.30, the
2
in some cases, it can be useful to use mpiCC; since there is no
mpif90 is usually not useful
MPI
calls from Fortran in elsA,