NMRPipe processing on multiple CPUs
For 4D (and even some 3D) sets it takes a crazy long time to process
data, particularly if you are using linear prediction.
Processing on multiple processors (if you have a cluster like MOSIX or a
dual processor PC) can considerably reduce this time.
To do this you will need three files:
1) a file (e.g. called main.com) containing the name of your processing script
and the processor number to run it on: e.g. for 3 processors and a
processing script called 4d.com, my file should read:
./4d.com 0 &
./4d.com 1 &
./4d.com 2 &
2) a file (called pipe.net) with the name of the computer and a number -
the number is arbirtary, but the ratios should reflect the processor speeds.
In the case below I am using lindau, lille and liverpool. Since they are
the same speed they all have the same name.
lille 100
lindau 100
liverpool 100
3) the nmrPipe processing script (e.g. 4d.com in this case). This is the
same as normal. However, the bold type indicates additions required
for processing on multiple CPUs:
#!/bin/csh
#4d.com
xyz2pipe -in fid/test%02d%03d.fid -x -verb -par pipe.net -cpu $1
\
| nmrPipe -fn EXT -time
\
| nmrPipe -fn SOL
\
| nmrPipe -fn SP -off 0.35 -end 0.95 -pow 2 -c 0.5 \
| nmrPipe -fn ZF -auto
\
| nmrPipe -fn FT
\
| nmrPipe -fn PS -p0 14 -p1 0.0 -di
\
| nmrPipe -fn EXT -x1 10.3ppm -xn 6.0ppm -sw
\
| nmrPipe -fn TP
\
#| nmrPipe -fn LP -fb
\
| nmrPipe -fn SP -off 0.35 -end 0.98 -pow 2 -c 0.5 \
| nmrPipe -fn ZF -auto
\
| nmrPipe -fn FT -auto
\
| nmrPipe -fn PS -p0 0 -p1 0 -di
\
| pipe2xyz -out ft/c13c13noe%02d%03d.ft2 -y -ov
waitFor -par pipe.net -ext part1 -cpu $1
xyz2pipe -in ft/c13c13noe%02d%03d.ft2 -z -verb -par pipe.net -cpu
$1 \
| nmrPipe -fn LP -fb
\
| nmrPipe -fn SP -off 0.4 -end 0.95 -pow 2 -c 0.5 \
| nmrPipe -fn ZF -auto
\
| nmrPipe -fn FT
\
| nmrPipe -fn PS -p0 45 -p1 0 -di
\
| nmrPipe -fn REV
\
| nmrPipe -fn CS -ls 80 -sw
\
| pipe2xyz -out ft/c13c13noe%02d%03d.ft3 -z -ov
waitFor -par pipe.net -ext part1 -cpu $1
#
#
xyz2pipe -in ft/c13c13noe%02d%03d.ft3 -a -verb -par
pipe.net -cpu $1 \
| nmrPipe -fn LP -fb
\
| nmrPipe -fn SP -off 0.4 -end 0.95 -pow 2 -c 1.0 \
| nmrPipe -fn ZF -auto
\
| nmrPipe -fn FT
\
| nmrPipe -fn PS -p0 -115 -p1 180.0 -di
\
| pipe2xyz -out ft/shift%02d%03d.ft4 -a -ov
waitFor -par pipe.net -ext part1 -cpu $1
#
#sleep 3
To run - remember to make your scripts executable and simply
execute the file generated in step 1 (main.com in this example).