[cig-commits] r19113 - seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Mon Oct 24 07:20:55 PDT 2011
Author: dkomati1
Date: 2011-10-24 07:20:54 -0700 (Mon, 24 Oct 2011)
New Revision: 19113
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
Log:
added a section about how to compile on an IBM BlueGene
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
===================================================================
(Binary files differ)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex 2011-10-24 12:50:49 UTC (rev 19112)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex 2011-10-24 14:20:54 UTC (rev 19113)
@@ -358,10 +358,36 @@
script discussed below automatically takes care of creating the \texttt{OUTPUT\_FILES}
directory.
+\section{Compiling on an IBM BlueGene}
+
+To compile the code on an IBM BlueGene, Laurent L\'eger from IDRIS, France, suggests the following: compile the code with
+
+\texttt{ FLAGS\_NO\_CHECK="-O3 -qsave -qstrict -qtune=auto -qarch=450d -qcache=auto \\}
+\texttt{ -qfree=f90 -qsuffix=f=f90 -g -qlanglvl=95pure -qhalt=w -Q -Q+rank,swap\_all -Wl,-relax"}
+
+Option "-Wl,-relax" must be added to be able to link the binaries \texttt{xmeshfem3D}
+and \texttt{xspecfem3D} because on BlueGene the final link step is done by the \texttt{gcc} compiler even if
+one uses \texttt{FC=bgxlf90\_r, MPIFC=mpixlf90\_r} and \texttt{CC=bgxlc\_r} to create all the object files.
+
+Also, \texttt{AR=ar, ARFLAGS=cru} and \texttt{RANLIB=ranlib} are hardwired in all \texttt{Makefile.in} files by default, but to cross-compile on BlueGene/P one needs to change
+these values to \texttt{AR=bgar, ARFLAGS=cru} and \texttt{RANLIB=bgranlib}. Thus the easiest thing to do is to modify
+all \texttt{Makefile.in} files and the \texttt{configure} script to set them automatically by \texttt{configure}.
+One then just needs to pass the right commands to the \texttt{configure} script:
+
+\texttt{ ./configure --prefix=/path/to/SPECFEM3DG\_SP --host=Babel --build=BGP \\}
+\texttt{ FC=bgxlf90\_r MPIFC=mpixlf90\_r CC=bgxlc\_r AR=bgar ARFLAGS=cru \\}
+\texttt{ RANLIB=bgranlib LOCAL\_PATH\_IS\_ALSO\_GLOBAL=false}
+
+This trick can be useful for all hosts on which one needs to cross-compile.
+
+On BlueGene, one also needs to run the \texttt{xcreate\_header\_file} binary file manually rather than in the Makefile:
+
+ \texttt{bgrun -np 1 -mode VN -exe ./bin/xcreate\_header\_file}
+
\section{Using a cross compiler}
The \texttt{``configure''} script assumes that you will compile the code on the same kind of hardware
-as the machine on which you will run it. On some systems (for instance IBM Blue Gene) this might not be the case
+as the machine on which you will run it. On some systems (for instance IBM BlueGene, see also the previous section) this might not be the case
and you may compile the code using a cross compiler on a frontend computer that does not have the same
architecture. In such a case, typing \texttt{``make all''} on the frontend will fail, but you can use one of these two solutions: \\
More information about the CIG-COMMITS
mailing list