|
Abaqus software has options for running calculations on more than one CPU. The following is a sample PBS script to achieve parallelism with abaqus. For better performance it is recommend that local disk is used for all file I/O on the system (storm or cyclone) that is computing your job. It is important that you do the following three things in your PBS script: - request multiple CPUs in the options provided to PBS (eg. ncpus=2)
- request the same number of CPUs when invoking abaqus (cpus=2)
- select the thread model for parallelism (mp_mode=threads)
#!/bin/sh # ########### Send email when job is terminated or aborted #PBS -m ae # ########### Email to the following address #PBS -M SOMEONE@uq.edu.au # ########### Job name #PBS -N Job_001 # ########### Queue #PBS -q ia64 # ########### Maximum amount of time it will run for (Hours:Minutes: Seconds) #PBS -l walltime=2:00:00 # ########### ncpus = Number of cpu required MAKE SURE THIS MATCHES WHAT ABAQUS USES ########### cput = Cpu time require, simulation more than this will be terminated (Hours:Minutes:Seconds) ########### mem = Memory required #PBS -l ncpus=2,cput=2:00:00,mem=2gb # ########### The working directory cd $PBS_O_WORKDIR SCRATCHDIR=/scratch/SOMEONE/Job_001 #Ensure that the scratch directory exists and create if necessary if [ ! -d $SCRATCHDIR ]; then mkdir -p $SCRATCHDIR fi #Copy input file to the scratch space cp $PBS_O_WORKDIR/test.inp $SCRATCHDIR #Change into the scratch directory cd $SCRATCHDIR ############ Execute command for abaqus /HPC/apps/Abaqus/Commands/abq655 job=test interactive cpus=2 mp_mode=threads memory=2048mb scratch=$SCRATCHDIR #Copy output files from the scratch space
cp $SCRATCHDIR/test.* $PBS_O_WORKDIR #FOOTNOTES # # # Execution procedure for ABAQUS/Standard and ABAQUS/Explicit # # abaqus job=job-name [analysis | datacheck | parametercheck | continue | # convert={select | odb | state | all} | recover | # syntaxcheck | information={environment | local | # memory | release | status | support | system | all}] # [input=input-file] # [user={source-file | object-file}] # [oldjob=oldjob-name] # [fil={append | new}] # [globalmodel={results file-name | # output database file-name}] # [cpus=number-of-cpus] # [parallel={domain | loop] # [domains=number-of-domains] # [mp_mode={mpi | threads}] # [standard_parallel={all | solver}] # [memory=memory-size] # interactive | background | queue=[queue-name] # [after=time] # [double] # [scratch=scratch-dir] ## [output_precision={single | full}]
|