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,