Some extra instructions for installing and using channelflow on trillian, UNH's CRAY XE6m-200 supercomputer.
Log on to trillian.sr.unh.edu
using ssh
, then run these commands.
1. Configure the Cray computing environment.
module unload cray-hdf5-parallel module unload cce module unload xt-asyncpe module load gcc module load fftw module load cmake
2. Check out channelflow source code into a ~/svnrepos/channelflow directory
mkdir ~/svnrepos cd ~/svnrepos svn co http://svn.channelflow.org/channelflow
3. Configure, compile, and install channelflow in a separate build directory
mkdir ~/channelflow mkdir ~/channelflow/build cd ~/channelflow/build cmake -DCMAKE_C_COMPILER=/opt/gcc/4.7.2/bin/gcc -DCMAKE_CXX_COMPILER=/opt/gcc/4.7.2/bin/g++ -DWITH_FFTW=/opt/fftw/3.3.0.2/x86_64/lib -DWITH_HDF5=~gibson/packages/hdf5-1.8.15/lib -DWITH_EIGEN3=~gibson/packages/eigen-3.2.4 -DCMAKE_INSTALL_PREFIX=~/channelflow ~/svnrepos/channelflow/trunk/ make make test make install
The make test
should report “100% tests passed”. If everything went well you should now have the following directory structure for channelflow:
~/svnrepos/channelflow # pristine channelflow source code from subversion ~/channelflow/build # build directory, where channelflow was configured and compiled ~/channelflow/include # include directory, with all the channelflow header files (e.g. flowfield.h) ~/channelflow/lib # library directory, with static and shared libs libchflow.a and libchflow.so
Note: Sometimes CMake can get confused if changes in the build system conflict with cached values of build system variables. If the above sequence doesn't work for you, try removing CMakeCache.txt
and CMakeFiles/
from your build directory and rerunning the cmake …
command above.
If you start a computation by just typing in a command at the command prompt, it'll execute on trillian's login node. That's a no-no! (except for software builds and quick tests). Instead, you should run any long computation but submitting it to the PBS (Portable Batch System) job control system. PBS will then farm the job out to one of the compute nodes.
There are three main PBS commands:
qsub
can be a bit tedious and complicated, so I wrote a some bash code for a simplified interface. Place the following in your ~/.bashrc
file (and then run source ~/.bashrc
) to make your current shell process and load this code).
PATH=$PATH:~/channelflow/bin module unload cray-hdf5-parallel module unload cce module unload xt-asyncpe module load gcc module load fftw module load cmake module load pbs function qsubmit() { tag=$1 shift echo "#PBS -N $tag" > tmp.pbs echo "#PBS -l nodes=1:ppn=1,walltime=48:00:00" >> tmp.pbs echo "#PBS -j oe" >> tmp.pbs echo "#PBS -m ae" >> tmp.pbs echo "cd $(pwd)" >> tmp.pbs echo aprun $* >> tmp.pbs qsub tmp.pbs }
This bit of code tells bash where your channelflow programs are, configures the Cray programming environment correctly, and then defines a qsubmit
function, which can be used as follows
cd ~/simulations/test-qsubmit qsubmit qtest couette -R 500 u0.h5
This will submit the command couette -R 500 u0.h5
to the PBS queue with jobname “qtest”, in working directory ~/simulations/test-qsubmit
.