Prerequisites
You will need a number of packages installed in order to download the Einstein Toolkit components. On a Debian, Ubuntu, Linux-Mint, Fedora or Mac OSX-based system, install them as follows:
# Debian (stretch, buster) su -c 'apt-get install build-essential pkg-config libopenmpi-dev openmpi-bin gfortran git subversion curl gnuplot gnuplot-x11' # Ubuntu (16.04.2, 17.04, 17.10) sudo apt-get install build-essential pkg-config mpich2? python libmpich2?-dev gfortran git subversion curl gnuplot gnuplot-x11 # Fedora (FC 25, 27) su -c ' yum -y install mpich2 python pkg-config mpich2-devel gsl gsl-devel libjpeg-devel hdf5 hdf5-mpich-devel gcc gcc-c++ gcc-gfortran patch numactl-devel numactl hwloc subversion git openssl-devel lapack-static gnuplot' # Mac OS (High Sierra), MacPorts sudo port -N install pkgconfig gcc7 openmpi fftw-3 gsl jpeg zlib hdf5 +fortran +gfortran openssl svn # Mac OS (High Sierra), Homebrew brew install gnuplot pkg-config gcc fftw gsl hdf5 --with-fortran hwloc jpeg openssl pkg-config szip open-mpi
Please make sure all required packages are correctly installed before proceeding with the next step.
Downloading
A script called GetComponents is used to fetch the components of the Einstein Toolkit. GetComponents serves as convenient wrapper around lower level tools like git and svn to download the codes that make up the Einstein toolkit from their individual repositories. You may download and make it executable it as follows:
curl -O -L https://raw.githubusercontent.com/gridaphobe/CRL/ET_2018_02/GetComponents chmod a+x GetComponents
GetComponents accepts a thorn list as an argument. To check out the needed components:
./GetComponents https://bitbucket.org/einsteintoolkit/manifest/raw/ET_2018_02/einsteintoolkit.th
which downloads the master thorn list from the Einstein toolkit server and proceeds to download all thorns. This thornlist checks out Cactus, the Einstein Toolkit, and Simulation Factory.
Configuring
You may proceed to configure Simfactory which requires some changes for some OS.
cd Cactus # for Debian ./simfactory/bin/sim setup-silent --optionlist=debian.cfg --runscript debian.sh # for Ubuntu, Mint ./simfactory/bin/sim setup-silent --optionlist=ubuntu.cfg --runscript debian.sh # for Fedora (you may have to log out and back in if you have just intalled mpich to make the module command work) module load mpi ./simfactory/bin/sim setup-silent --optionlist=fedora.cfg --runscript debian.sh # OSX+MacPorts ./simfactory/bin/sim setup-silent --optionlist=osx-macports.cfg --runscript osx-macports.run # OSX+Homebrew export CPATH=/usr/local/include LIBRARY_PATH=/usr/local/lib ./simfactory/bin/sim setup-silent --optionlist=osx-homebrew.cfg --runscript generic-mpi.run
After this step is complete you will find your machine's default setup under ./repos/simfactory2/mdb/machines/<hostname >.ini
You can edit some of these settings freely, such as "description", "basedir" etc. Some entry edits could result in simulation start-up warnings and/or errors such as "ppn" (processor-per-node meaning number of cores per cpu), "num-threads" (number of threads per MPI rank) so such edits must be done with some care.
Building
Now that you have configured Simfactory, you may build:
./simfactory/bin/sim build --mdbkey make 'make -j2' --thornlist=manifest/einsteintoolkit.th
Adjust -j2 to match the number of cores your machine possesses if you want to use more or less than 2 parallel build processes. This may take a while, as it compiles all the thorns specified in manifest/einsteintoolkit.th.
Running
aa
Cactus will use a sinlge MPI process and a single OpenMP thread.