Up: IPP at the ROE
Running Simtest
As you can probably guess, Simtest is a suite of tests that, if nothing else, ensures you've got a workable IPP installed.
Requisite to running Simtest, you will need to have built IPP (IppInstallation) and initialised the database (IppInitialisingDatabase).
Configuration files
First, I will describe intallation/modification to configuration files. Probably I should have this step somewhere else, like in IPP installation.
cp $LOCAL/ipp/default.lin64/share/ippconfig/ipprc.config ~/.ipprc- Edit
~/.ipprcas you see fit. Look particularly at thePATH. cp /home/ert/.ptolemyrc ~/- Edit
~/.ptolemyrcas you see fit. Look particularly atCONFDIR. mkdir ~/ippconfigcp /home/ert/ippconfig/site.config ~/ippconfig/Edit ~/ippconfig/site.configappropriately. Take particular attention toDATAPATH,DBSERVER,DBNAME,DBUSER,DBPASSWORD, the last four of which you came up with when you initialised the database (IppInitialisingDatabase). Also checkPSASTRO.CATDIRS. The directories don't need to exist, but they must be createable by you.
The first step, installation of a .ipprc file, seems wholly unnecessary (since the information already exists in the and is available to the code in a predictable location). Perhaps a critial review of the configuration settings would make it unnecessary. But there you go.
Through DVO, IPP has a provenance in Ohana, a collection of tools written for CFHT. Ohana tools look for user configuration in ~/.ptolemyrc. There is no master copy. It seems to just get handed down from user to user. Take mine.
site.config requires more attention. Anything under "## Stuff from Chris Waters ##" can actually be ignored for Simtest. But it might be needed in the future.
Preparing Simtest files
Simtest isn't quite in sync with changes to IPP, so it needs a bit of tweaking.
- Edit
$LOCAL/ipp/default.lin64/share/ippconfig/simtest/psastro.config - Everywhere it says
*_SYNTHchange toSYNTH.*(egr_SYNTH=>SYNTH.r)
Ensure you can SSH to your local client
The pantasks controller needs to be able to ssh to all nodes capable of processing data, including the local node.
Ensure it works.
ssh localhostssh hostname
SSH'ing to the local host is particularly problematic on systems with shared home directories (like the IfA) where the localhost entry in ~/.ssh/known_hosts can correspond to any machine on the network. It may need to be edited out.
Running Simtest
Simtest is run in the pantasks environment, sorta like running IDL .pro scripts in IDL.
mkdir /wherever/you/want/to/work/simtestcd /wherever/you/want/to/work/simtestpsconfig defaultpantasks- pantasks:
module simtest.pro - pantasks:
simtest testdb localhost new - Answer YES to starting from scratch
- Supply
ipp's password:aloha - Wait for the fireworks....
pantasks will take a couple of minutes to generate the data on which to process. Then it will return to the pantasks prompt while the tasks are run in the background for the next couple of hours.
- Typing status will give the state of all the processes
Parallelisation
In IPP, Parallelisation can either mean speeding up a single code by use of threading, or running multiple tasks at the same time on the same hardware (trivial paralellisation).
Let's start with trivial parallelisation.
In pantasks, the queue controller can be accessed via the controller command. To add a machine to the list of machines to which tasks can be assigned:
- pantasks:
controller host addHostToAdd
If the host is multi-core, then you can add the host many times (for the rest of the examples, HostToAdd is eday):
- pantasks:
controller host add eday - pantasks:
controller host add eday - ...
However, if the tasks are I/O intensive, then having all cores running separate tasks might not be optimal. You may just want to get the code to run in parallel with threads
To let the controller know that the host can handle multiple threads:
- pantasks:
controller host add eday -threads 4
Prior to running simtest (which calls controller on its own), the number of threads to run is set by:
- pantasks:
$SIMTEST_THREADS = 4
Hosts can be added before or after the jobs are submitted.
There is also a $PARALLEL variable, but I think it is just a boolean (0 or 1)
Paul Price recommends for 8-way systems to set the number of threads to something like 4 and then let the node run 3 separate processes. Results may vary.
-- EricTittley - 2009-11-06
