How to build Cholla ICs using MUSIC
These instructions will provide info on how to
build cholla cosmological initial conditions
using the MUSIC code on the andes system.
What is MUSIC
MUSIC is the MUlti Scale Initial Conitions generator
Log into Andes or Frontier
Use ssh to log into andes.olcf.ornl.gov:
ssh [username]@andes.olcf.ornl.gov
Software installation and packages
As mentioned in the wiki for MUSIC, users need to use FFTW, GSL, HDF5, and CMake to build and install the software. The software also requires the rpc library.
Loading prereqs on Frontier
The modules we want to load are cray-hdf5, cray-fftw, and gsl. In order to load the HDF5 module, we first need to load PrgEnv-cray. Before loading the FFTW module, we need to load craype-x86-trento. Lastly, to load in the GNU Science Library, we need to load Core.
The setup file /lustre/orion/ast206/proj-shared/ics_dg/setup.frontier.cce.sh can be source-ed to help in doing the module loading, while also setting GPU-aware MPI.
To load in rpc, an implementation is available that can be downloaded using the wget command
wget https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.4.tar.bz2
We can configure this library to have a prefix pointed to somewhere in $HOME and then add the include and lib
directories to the Makefile.
Loading prereqs on Andes
The modules we want to load are hdf5, fftw, and gsl. We can simply module load each package individually and be set to go.
The setup file /lustre/orion/ast206/proj-shared/ics_dg/setup.andes.cce.sh can be source-ed to help in doing the module loading.
Building MUSIC
Now that we have all of the prerequisite software, we can finally build and compile the software. We can clone the github repository
$ git clone git@github.com:cosmo-sims/MUSIC2.git
$ cd MUSIC2
Following the build instructions from the README, we want to create the directory that will house the build and move in there
[MUSIC2]$ mkdir build
[MUSIC2]$ cd build
We will use CMake to build the project, which can be loaded in both andes and frontier with module load cmake. We bring up the program menu with
[MUSIC2/build]$ ccmake ..
We start the configuration process with the c input. We currently have an issue compiling which can be fixed by setting ENABLE_PANPHASIA to OFF. We then generate the appropriate Makefiles with the g input. Finally, we compile with make
[MUSIC2/build]$ make -j
where the j flag says to compile in parallel.
Using MUSIC
Request a node
To use this software, we first want to request a compute node
$ salloc -A AST206 -N 1 -t 3:00:00
Change to the project ics directory
We currently have a directory specifically for building initial conditions
We have MUSIC.frontier subdirectory that holds the compiled program.
The MUSIC is in this subdirectory, and there default builds for Andes and Frontier
nodes in that directory.
Run MUSIC
We have a couple test initial conditions generator in the testing subdirectory. To create initial conditions for a 50 \(h^{-1} \textrm{Mpc}\), 1024 cell box, we can move into that specific testing directory from ics and run the program on the configuration file
(ics)$ cd testing/1024-50Mpc
(ics/testing/1024-50Mpc)$ ./MUSIC ics_enzo_1024_50Mpc.conf
which will place the initital conditions in a raw subdirectory.
To read more on how to create and read a configuration file, the details can be found starting on Page 8 of the MUSIC - User’s Manual.
Convert the MUSIC ICs
On frontier I made a python3 virtual environment. After sourcing the Cholla frontier build setup file, this is the python3:
/opt/cray/pe/python/3.9.13.1/bin/python3
I then just
python3 -m venv cci
source cci/bin/activate
python3 -m pip install h5py
Then to convert the hydro and particle files, one can run:
python3 generate_ics_from_enzo_raw.py --particles -v --n_points 1024 --n_boxes 8
python3 generate_ics_from_enzo_raw.py --hydro -v --n_points 1024 --n_boxes 8