% /*@@ % @file RunningCactus.tex % @date 27 Jan 1999 % @author Tom Goodale, Gabrielle Allen, Gerd Lanferman, Thomas Radke % @desc % How to run Cactus part of the Cactus User's Guide % @enddesc % @version $Header$ % @@*/ \begin{cactuspart}{Additional notes}{}{$Revision$}\label{part:Notes} \renewcommand{\thepage}{\Alph{part}\arabic{page}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Installation} \label{cha:in} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Required Software} \label{sec:required_software} In general, Cactus \emph{requires} the following set of software to function in single processor mode. Please refer to the architecture section \ref{sec:suar} for architecture specific items. \begin{Lentry} \item[Perl5.0] Perl is used extensively during the Cactus thorn configuration phase. Perl is available for nearly all operating systems known to man, and can be obtained at \url{http://www.perl.org}. \item[GNU make] The make process works with the GNU make utility (referred to as \texttt{gmake} henceforth). While other make utilities may also work, this is not guaranteed. Gmake can be obtained from your favorite GNU site, or from \url{http://www.gnu.org}. \item[C] C compiler. For example, the GNU compiler. This is available for most supported platforms. Platform specific compilers should also work. \item[CPP] C Preprocessor. For example, the GNU \texttt{cpp}. These are normally provided on most platforms, and many C compilers have an option to just run as a preprocessor. \item[SVN] \textit{Subversion} is not needed to run/compile Cactus, but you are strongly encouraged to install this software to take advantage of the update procedures. It can be downloaded from \url{http://subversion.apache.org}. \end{Lentry} \noindent To use Cactus, with the default driver\footnote{For help with unfamiliar terms, please consult the glossary, Appendix \ref{sec:glossary}.} (\texttt{CactusPUGH/PUGH}) on multiple processors you also need to include the thorn \texttt{ExternalLibraries/MPI} in your thornlist, to include support for \begin{Lentry} \item[MPI] The \textit{Message Passing Interface}, which provides inter-processor communication. Supercomputing sites often supply a native MPI implementation that is very likely to be compatible with Cactus. Otherwise, there are various freely available ones available, e.g. the OpenMPI version of MPI is available for various architectures and operating systems at \url{http://www.open-mpi.org/}. \end{Lentry} \noindent If you are using any thorns containing routines written in C++ you also need \begin{Lentry} \item[C++] C++ compiler. For example, the GNU compiler. This is available for most supported platforms. Platform specific compilers should also work. Note that if a C++ compiler is available, then the \text{main()} routine in the flesh is compiled with C++ to allow static class initialisations. \end{Lentry} \noindent If you are using any thorns containing routines written in CUDA (Compute Unified Device Architecture), a parallel computing architecture developed by NVIDIA, you also need \begin{Lentry} \item[CUCC] CUDA compiler. For example, the NVIDIA C compiler. In many cases, you can compile your C and C++ code with a CUDA compiler without encountering any problems, but you are advised to use a CUDA compiler exclusively for CUDA code. \end{Lentry} \noindent If you are using any thorns containing routines written in Fortran you also need \begin{Lentry} \item[F90/F77] For routines written in Fortran 77, either a Fortran 90 or a Fortran 77 compiler can be used. For routines written in Fortran 90, a Fortran 90 compiler is obviously required. There is a very limited set of free Fortran 90 compilers available for the different architectures. \end{Lentry} \noindent While not required for compiling or running Cactus, for thorn development it is useful to install \begin{Lentry} \item[\texttt{ctags/etags}] These programs enable you browse through the calling structure of a program by help of a function call database. Navigating the flesh and arrangements becomes very easy. Emacs and \texttt{vi} both support this method. See \ref{sec:Appendix.tags} for a short guide to tags. \end{Lentry} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Supported Architectures} \label{sec:suar} Cactus runs on many machines, under a large number of operating systems. Here, we list the machines we have compiled and verified Cactus on, including some architecture specific notes. %A complete %list of architectures supported by Cactus, along with more notes, can %be found at %\begin{center} %\url{http://www.cactuscode.org/Documentation/Architectures.html}. %\end{center} \begin{Lentry} \item[\textbf{SGI}] 32 or 64 bit running Irix. \item[\textbf{Cray T3E}] \item[\textbf{Compaq Alpha}] Compaq operating system and Linux. Single processor mode and MPI supported. The Alphas need to have the GNU C/C++ compilers installed. \item[\textbf{IA32}] running Linux, OpenBSD, FreeBSD, or Windows 2000/NT. Single processor mode and MPI (MPICH and LAM) supported.\\ On Windows, Cactus compiles with Cygwin. MPI (WMPI, HPVM, and MPIPro) supported. Please read \texttt{doc/README.NT} for details. \item[\textbf{IA64}] running Linux. \item[\textbf{Macintosh PowerPC}] (MacOS X and Linux PPC) \item[\textbf{IBM SP2,SP3,SP4}] 32 or 64 bit running AIX. \item[\textbf{Hitachi SR8000-F1}] \item[\textbf{Sun} Solaris] \item[\textbf{Fujitsu}] \item[\textbf{NEC SX-5, SX-6}] \end{Lentry} The following machines are only partially supported, \begin{Lentry} \item[\textbf{HP Exemplar}] \end{Lentry} \subsection{Note} Disk space may be a problem on supercomputers where home directories are small. A workaround is to first create a configs directory on scratch space, say \texttt{scratch/cactus\_configs/} (where \texttt{scratch/} is your scratch directory), and then either \begin{itemize} \item{} set the environment variable \texttt{CACTUS\_CONFIGS\_DIR} to point to this directory \end{itemize} or \begin{itemize} \item{} soft link this directory (\texttt{ln -s scratch/cactus\_configs Cactus/configs/}) to the Cactus directory, if your filesystem supports soft links. \end{itemize} \chapter{Compilation} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Configuration Options} \label{sec:confopts} There are four ways to pass options to the configuration process. % from the gmake command line. \begin{enumerate} \item[1]{} Pass options individually in shell environment variables: {\tt export