Se você alterar o script para algo como:
#PBS -l nodes=2:ppn=4
você receberá 2 nós, cada um com pelo menos 4 núcleos disponíveis. Você já deve saber disso.
Seu administrador do TORQUE também pode ter ativado pbsdsh
. Com os argumentos apropriados, você pode usar isso para executar comandos em cada nó reservado pelo seu trabalho. Sem pbsdsh
, se eles tiverem habilitado pelo menos rsh
acesso entre sistemas em uma fila, você poderá analisar o conteúdo do arquivo fornecido pela variável de ambiente $PBS_NODEFILE
e rsh
para cada um que não seja o principal host, executando um script de shell em cada um.
Então, não testado, mas algo como:
# main-script.sh (runs on primary node, spawns off java processes on all
# nodes in job)
#PBS -l nodes=2:ppn=4
MASTER_IP='/sbin/ifconfig eth0 | grep 'inet ' | awk '{print $2}' \
| sed 's/addr://''
PORT_PEER=3000
# first peer, others connect to this one..
java -jar ${JAR} ${JAR_PARAMS} -ip=${MASTER_IP} -port=${PORT_PEER} &
# run 2 copies of smaller-script.sh on unique hostnames in this job
pbsdsh -u -c 2 /path/to/smaller-script.sh ${MASTER_IP}
e
# smaller-script.sh (runs on each node in job)
MASTER_IP=$1
PORT_PEER=3000
IP='/sbin/ifconfig eth0 | grep 'inet ' | awk '{print $2}' | sed 's/addr://''
# other peers, connecting back to first peer from other script
for i in {1..99}
do
PORT_PEER='expr $PORT_PEER + 2';
java -jar ${JAR} ${JAR_PARAMS} -ip=${IP} -port=${PORT_PEER} \
-bootstrap=${MASTER_IP}:3000 &
sleep 1s
done
wait # wait here until all instances terminates
você deve começar.