This component is to be installed on all computing resources you want to merge in the Promethee environment. Unlike the front-end, no [R] math. engine is required on this side of the infrastructure.
The back-end core installation is made using the dedicated installer archive : prometheed-XXX-1.X-x.zip, to be decompressed from a command from a shell (e.g. DOS or bash) or using an integrated desktop program.
The startup of the back-end service is basically done by hand, using the
prometheed.sh /
prometheed.bat script. A more complete script, adapted for multi-CPU usage is also available for bash environment :
prometheed_start.sh (and prometheed_stop.sh), which accepts an arbitrary number of CPU as first argument, and properly manage shutdown of its subprocesses.It is also possible to use these scripts for automatic service startup:
on Unix / Linux: create a daemon startup script (in
/etc/init.d directory for example) calling
prometheed.sh or
prometheed_start.sh :
#!/bin/sh
echo " * Launching PROMETHEE daemon ..."
PROMETHEE_HOME=/opt/Promethee
. /home/user/.bash_profile
start-stop-daemon --start --chuid user --exec "$PROMETHEE_HOME/prometheed_start.sh 4" --chdir $PROMETHEE_HOME > /var/log/prometheed.log 2>&1 &
echo " * PROMETHEE daemon running ..."
exit 0
fi
on Windows: you can use the
SC.exe, to record prometheed.bat as a service:
sc.exe create “Prometheed” binPath= “C:\Program Files\Promethee\prometheed.bat”
(pay attention to keep space between binpath= and C:\… )
To enable network connection between this back-end and all user front-end interfaces, the following firewall rules have to be checked:
for computing front-end discovery feature: open 8001-8004 outgoing UDP ports,
for computing back-end data transfer: all incoming, or specified in calculator.xml TCP ports (see below).
The Promethee daemon configuration
XML file (say calculator.xml) holds:
the list of hosts and network port allowed for users to run calculations,
the list of codes available on the server,
spool directory path,
[optional] TCP port used for front-end file transfer.
Each
HOST element contains:
the network name of the user computer where graphical interface is installed (IP address or hostname), possibly a multicast IP (in this case, needs special configuration on front-end side),
a port1) of this computer, waiting for Promethee service (tipically 8001 8002, …), matching the front-end configuration,
Each
CODE elements contain:
the name of the code to launch,
the shell command used to launch code:
Using shell alias commands, even well configured in environment is highly discouraged, prefer a complete path call: /path/to/my/startup/script.sh
instead
It is often preferable to modify the startup script code to adapt it to Prometheus. For example, applying a dos2unix on the input files is often necessary to limit the problems of portability of data files
[optionally] a plugin for better support of code startup, error, kill or running status report.
Then, the calculator.xml file lists all hosts and codes in this format:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<CALCULATOR spool="/tmp" port="10000" >
<HOST name="123.456.780" port="8001" />
<HOST name="123.456.780" port="8002" />
<HOST name="123.456.781" port="8001" />
<HOST name="123.456.781" port="8002" />
<HOST name="123.456.782" port="8001" />
<HOST name="123.456.782" port="8002" />
<HOST name="123.456.782" port="8003" />
<CODE command="cristal.v1.2 -p" name="Cristal_1.2" />
<CODE command="/opt/Promethee/scripts/mcnp5" name="MCNP"
cplugin="file:./plugins/calc/MCNP.cplugin.jar"/>
</CALCULATOR>
Besides the core installation, Promethee may integrate some code wrapper to extend the usage of the code installed on this daemon host.
On the back-end side, this optional extension (a
.cplugin.jar file) provides dedicated methods to launch, stop, and report progress of a given calculation with a code.
To activate a code plugin in a running Promethee back-end instance:
put the .cplugin.jar (if available) file inside the Promethee installation path, in plugins/calc directory,
Note: or just unzip the plugin archive within Promethee installation path
update the
calculator XML file (as described in previous chapter): add
<CODE name="CODENAME" cplugin="file:./plugins/calc/CODENAME.cplugin.jar" command="/PATH/TO/CODE/SCRIPT" />
line (replacing CODENAME) in the Promethee installation path,
calculator.xml file, inside
<calculator>
tag,
wait 5 seconds for automatic update of configuration.
Note: of course, besides this activation in the back-end, the front-end needs to be configured in a consistent manner.
Is Promethee computing back-end suitable for scientific cloud computing ?
Yes. The Promethee environment is designed to support both dynamic load of calculations and dynamic computing capabilities.
All new (and dead) calculation resources (codes & computers) are taken into account by front-end instances in a delay from 1 to 10 seconds.
Therefore, using Promethee as a heuristic cloud dispatcher is an efficient way to manage the load of your scientific computing cloud.
This use case is to be deployed in our own infrastructure, and is already in production at one of our partners.
What are the limitations of the "free" version ?
No limitation is included in the back-end software. Nevertheless, using the “free” version will not permit you to distribute more than 4 calculations (on 4 back-end services) in one project.
How can I integrate Promethee in the queueing system of my cluster ?
The key idea is to use the interactive shell emulation provided with your queueing system. We made it for the Sun Grid Engine (SGE) system, using this simple script:
#!/bin/bash
# This script is intended to wrap common sh command beahviour upon SGE qrsh.
# Especially, the kill or ctrl-c will correctly cancel the SGE job using qdel.
trap "abort" INT
trap "abort" TERM
abort() {
echo "Abort queued process..."
qdel $qid
echo "Queued process aborted."
}
cmd=$1
input=$2
cwd=`pwd`
qname="_"$$
export pid=$cwd/node.PID
qrsh -V -N $qname -cwd $cmd $input >> out.txt &
mid=$!
sleep 1
if [ `grep "request could not be scheduled" out.txt | wc -w` != 0 ] ; then
exit -1
fi
lastq=`qstat | grep $qname | tail -1`
qid=`echo ${lastq/ /} | cut -d" " -f1`
wait $mid
This
sge.sh file is used instead of sh for launching code executable in the calculator.xml file.
What operating systems are supported by this back-end ?
All operating systems supporting Java 1.6 are compatible (e.g. Windows XP, 7,
OS X, Linux, Solaris, AIX, …).