Running CFX-10 over Infiniband and using user subroutines should work now – of course you must have a valid license!
In principle it works as follows (access to the CFX module is restricted by ACLs)
- prepare your input files on your local machine; the RRZE systems are not supposed for interactive work.
If you have to use the RRZE systems for some reason for pre/postprocessing, do not start cfx5pre/cfx5post directly on the login nodes but submit an interactive batch job usingqsub -I -X -lnodes=1:ppn=4,walltime=1:00:00
! - transfer all input files to the local filesystem on the Woody cluster using SSH (scp/sftp), i.e. copy them to
/home/woody1/.../.../...
- Use a batch file as follows:
[shell]
#!/bin/bash -l
# DO NOT USE #!/bin/sh in the line above as module would not work; also the “-l” is required!
#PBS -l nodes=2:ppn=4
#PBS -l walltime=24:00:00
#PBS -N CFX-woody
#… any other PBS option you like# let’s go to the directory where the script was submitted
cd $PBS_O_WORKDIR# transfer the list of nodes in a format suitable for CFX
nodes=`cat $PBS_NODEFILE`
nodes=`echo $nodes | sed -e ‘s/ /,/g’`# load the (recommended) CFX module
module add cfx# here we go
cfx5solve -name woody-$PBS_JOBID -size-mms 2.0 -def xyz.def -double \
-par-dist $nodes -start-method “HP MPI Distributed Parallel for x86 64”
[/shell] - submit your job to the PBS batch system using
qsub
- wait until the job finished
- transfer the required result files to your local PC, analyze the results locally (using your fast grafics card)
- delete all files you no longer need from the RRZE system as disk space is still valuable
=====================================================================
Some special “tuning” of the PBS script is of course possible, e.g. to stop the simulation at latest just before the wallclock time is exceeded:
[shell]
# specify the time you want to have to save results, etc.
export TIME4SAVE=600
# directory where CFX will be running
export SIMDIR=woody-${PBS_JOBID}_001.dir
# automatically detect how much time this batch job requested and adjust the
# sleep accordingly
( sleep ` qstat -f $PBS_JOBID | awk -v t=$TIME4SAVE \
‘{if ( $0 ~ /Resource_List.walltime/ ) \
{ split($3,duration,”:”); \
print duration[1]*3600+duration[2]*60+duration[3]-t }}’ `; \
cfx5stop -dir $SIMDIR ) >& /dev/null &
export SLEEP_ID=$!
cfx5solve -name woody-$PBS_JOBID …
pkill -P $SLEEP_ID
[/shell]
This “add-on” is only for advanced users which hopefully understand what this code does …
UPDATE 2012-10-24: recent Ansys/CFX version have a command line argument to limit the wall clock time:
-max-elapsed-time <elapsed time>
Set the maximum elapsed time (wall clock time) that the ANSYS CFX Solver will run. Elapsed time must be in quotes and have correct units in square brackets (eg: -maxet “10 [min]” or -maxet “5 [hr]”).
=====================================================================
Some more technical notes which are not really relevant for pure users … it just documents the steps which were required to get everything up-and-running.
CFX-10 (and it’s service packs) comes with a bundled version of HP-MPI version. No extra license is required to use HP-MPI together with CFX. Just specify
and HP-MPI automatically selects the fastest interconnect available.
-start-method "HP MPI Distributed Parallel for x86 64"
However, the version distributed by Ansys (HP-MPI 2.1-2) does not work together with the Infiniband stack installed on the new Woody cluster or the “old” Infiniband part of the Transtec cluster. Therefore, the current version of HP-MPI (2.2.0.2) must be downloaded from hp.com and installed manually.
CFX-10.0/etc/start-methods.ccl
has to be adapted to reflect the new path (unless one does some dirty directory renames/links).
By default, CFX also tries to connect via rsh
to remote hosts. Setting the environment variable CFX5RSH
to ssh
solves this problem. It might also be necessary to set the environment variable MPI_REMSH
to ssh
so that also HP-MPI uses the correct piece of software. Using PBS-mpiecec
probably does not work with HP-MPI, otherwiese some further hacking in CFX-10.0/etc/start-methods.ccl
might also be possible.
To force the use of the Infiniband interconnect, the environment variable MPIRUN_OPTIONS
may be set to -VAPI
– note the capital letters.
To support user subroutines, a PGI Fortran compiler is required to complie the user code once (using cfx5mkext *.F
AND cf5mkext -doube *.F
). As we do not have the PGI compiler installed on the Woody cluster, compilation has to be done elsewhere. The required PGI runtime libraries were copied (in accordance with the PGI license agreement) from a PGI 6.1.4 installation to the directory CFX-10.0/lib/linux-amd64
where they are found from within CFX without setting any special LD_LIBRARY_PATH.
It looks like copying the PGI runtime libraries back in 2007 was a bad idea as this make it impossible to compile the user subroutines with newer versions of the PGI compiler … Gave different types of “pgi_XYZ not found” at CFX runtime.
Thus, made the old PGI runtime libraries in the
CFX-10.0/lib/linux-amd64
invisible again today.line 4 of the second script had a small bug up until today:
the original version published had
export SIMDIR=woody-$PBS_JOBID}_001.dir
, i.e. there was a{
missing between the$
and thePBS_JOBID
.