[IPython-dev] ipython on the sun grid engine

Ondrej Certik ondrej at certik.cz
Sun Mar 22 01:38:29 EDT 2009


Hi,

so I made it run.

1. install SPD using this howto:

http://code.google.com/p/qsnake/wiki/SPD

2. create ex9.sge (adjust the path to spd):

$ cat ex9.sge
#/bin/bash
#$ -cwd
#$ -pe Common.pe 40
NUM_WORKER=$(($NSLOTS - 1))
MASTER=$(head -n 1 $TMP/machines)
WORKERS=$(tail -n $NUM_WORKER $TMP/machines)
echo "My Master nodes:"
echo $MASTER
echo "My Worker nodes:"
echo $WORKERS
{
ssh $MASTER '~/spd/spd-0.3/spd -python ~/spd/spd-0.3/local/bin/ipcontroller' &
sleep 3
for x in $WORKERS; do
    ssh $x '~/spd/spd-0.3/spd -python ~/spd/spd-0.3/local/bin/ipengine' &
done
} > runlog.txt
wait


3. submit the job:

$ qsub ex9.sge

4. connect to the ipcontroller:

$ ./spd
----------------------------------------------------------------------
| Source Python Distribution, Version 0.3, Release Date: 2009-03-21  |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
In [1]: from IPython.kernel import client
In [2]: mec = client.MultiEngineClient()
In [3]: mec.get_ids()
Out[3]:
[0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23,
 24,
 25,
 26,
 27,
 28,
 29,
 30,
 31,
 32,
 33,
 34,
 35,
 36,
 37]
In [8]: print mec.get_ids()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37]
In [9]: mec.activate()
In [10]: mec.block=True
In [11]: %px import numpy
Parallel execution on engines: all
Out[11]:
<Results List>
[0] In [1]: import numpy
[1] In [1]: import numpy
[2] In [1]: import numpy
[3] In [1]: import numpy
[4] In [1]: import numpy
[5] In [1]: import numpy
[6] In [1]: import numpy
[7] In [1]: import numpy
[8] In [1]: import numpy
[9] In [1]: import numpy
[10] In [1]: import numpy
[11] In [1]: import numpy
[12] In [1]: import numpy
[13] In [1]: import numpy
[14] In [1]: import numpy
[15] In [1]: import numpy
[16] In [1]: import numpy
[17] In [1]: import numpy
[18] In [1]: import numpy
[19] In [1]: import numpy
[20] In [1]: import numpy
[21] In [1]: import numpy
[22] In [1]: import numpy
[23] In [1]: import numpy
[24] In [1]: import numpy
[25] In [1]: import numpy
[26] In [1]: import numpy
[27] In [1]: import numpy
[28] In [1]: import numpy
[29] In [1]: import numpy
[30] In [1]: import numpy
[31] In [1]: import numpy
[32] In [1]: import numpy
[33] In [1]: import numpy
[34] In [1]: import numpy
[35] In [1]: import numpy
[36] In [1]: import numpy
[37] In [1]: import numpy

In [12]: %px a = numpy.random.rand(2,2)
Parallel execution on engines: all
Out[12]:
<Results List>
[0] In [2]: a = numpy.random.rand(2,2)
[1] In [2]: a = numpy.random.rand(2,2)
[2] In [2]: a = numpy.random.rand(2,2)
[3] In [2]: a = numpy.random.rand(2,2)
[4] In [2]: a = numpy.random.rand(2,2)
[5] In [2]: a = numpy.random.rand(2,2)
[6] In [2]: a = numpy.random.rand(2,2)
[7] In [2]: a = numpy.random.rand(2,2)
[8] In [2]: a = numpy.random.rand(2,2)
[9] In [2]: a = numpy.random.rand(2,2)
[10] In [2]: a = numpy.random.rand(2,2)
[11] In [2]: a = numpy.random.rand(2,2)
[12] In [2]: a = numpy.random.rand(2,2)
[13] In [2]: a = numpy.random.rand(2,2)
[14] In [2]: a = numpy.random.rand(2,2)
[15] In [2]: a = numpy.random.rand(2,2)
[16] In [2]: a = numpy.random.rand(2,2)
[17] In [2]: a = numpy.random.rand(2,2)
[18] In [2]: a = numpy.random.rand(2,2)
[19] In [2]: a = numpy.random.rand(2,2)
[20] In [2]: a = numpy.random.rand(2,2)
[21] In [2]: a = numpy.random.rand(2,2)
[22] In [2]: a = numpy.random.rand(2,2)
[23] In [2]: a = numpy.random.rand(2,2)
[24] In [2]: a = numpy.random.rand(2,2)
[25] In [2]: a = numpy.random.rand(2,2)
[26] In [2]: a = numpy.random.rand(2,2)
[27] In [2]: a = numpy.random.rand(2,2)
[28] In [2]: a = numpy.random.rand(2,2)
[29] In [2]: a = numpy.random.rand(2,2)
[30] In [2]: a = numpy.random.rand(2,2)
[31] In [2]: a = numpy.random.rand(2,2)
[32] In [2]: a = numpy.random.rand(2,2)
[33] In [2]: a = numpy.random.rand(2,2)
[34] In [2]: a = numpy.random.rand(2,2)
[35] In [2]: a = numpy.random.rand(2,2)
[36] In [2]: a = numpy.random.rand(2,2)
[37] In [2]: a = numpy.random.rand(2,2)

In [13]: %px print numpy.linalg.eigvals(a)
Parallel execution on engines: all
Out[13]:
<Results List>
[0] In [3]: print numpy.linalg.eigvals(a)
[0] Out[3]: [ 0.04392391  0.3245973 ]

[1] In [3]: print numpy.linalg.eigvals(a)
[1] Out[3]: [ 1.55163721  0.20437739]

[2] In [3]: print numpy.linalg.eigvals(a)
[2] Out[3]: [ 1.20045213  0.04814805]

[3] In [3]: print numpy.linalg.eigvals(a)
[3] Out[3]: [ 0.32003643  0.57111291]

[4] In [3]: print numpy.linalg.eigvals(a)
[4] Out[3]: [-0.19009279  0.99128112]

[5] In [3]: print numpy.linalg.eigvals(a)
[5] Out[3]: [ 1.03829332  0.36075953]

[6] In [3]: print numpy.linalg.eigvals(a)
[6] Out[3]: [-0.1517235   1.67516513]

[7] In [3]: print numpy.linalg.eigvals(a)
[7] Out[3]: [ 1.39960728 -0.28465163]

[8] In [3]: print numpy.linalg.eigvals(a)
[8] Out[3]: [ 1.17044538  0.36920544]

[9] In [3]: print numpy.linalg.eigvals(a)
[9] Out[3]: [ 1.29444925  0.03147179]

[10] In [3]: print numpy.linalg.eigvals(a)
[10] Out[3]: [ 1.06269256  0.00629928]

[11] In [3]: print numpy.linalg.eigvals(a)
[11] Out[3]: [ 0.1934025   0.04709656]

[12] In [3]: print numpy.linalg.eigvals(a)
[12] Out[3]: [-0.23157366  0.79206212]

[13] In [3]: print numpy.linalg.eigvals(a)
[13] Out[3]: [ 0.87736399  0.36763171]

[14] In [3]: print numpy.linalg.eigvals(a)
[14] Out[3]: [ 0.75825399  0.42571366]

[15] In [3]: print numpy.linalg.eigvals(a)
[15] Out[3]: [ 0.83819298 -0.33422046]

[16] In [3]: print numpy.linalg.eigvals(a)
[16] Out[3]: [ 0.05119763  1.25161191]

[17] In [3]: print numpy.linalg.eigvals(a)
[17] Out[3]: [ 0.6356765  -0.18668048]

[18] In [3]: print numpy.linalg.eigvals(a)
[18] Out[3]: [ 0.05417072  0.64346778]

[19] In [3]: print numpy.linalg.eigvals(a)
[19] Out[3]: [ 0.94357665  0.08495554]

[20] In [3]: print numpy.linalg.eigvals(a)
[20] Out[3]: [-0.20071214  1.44548662]

[21] In [3]: print numpy.linalg.eigvals(a)
[21] Out[3]: [ 1.20371805  0.17458575]

[22] In [3]: print numpy.linalg.eigvals(a)
[22] Out[3]: [ 1.47189454 -0.25060313]

[23] In [3]: print numpy.linalg.eigvals(a)
[23] Out[3]: [ 0.62675299  0.00833881]

[24] In [3]: print numpy.linalg.eigvals(a)
[24] Out[3]: [-0.61704795  0.86785185]

[25] In [3]: print numpy.linalg.eigvals(a)
[25] Out[3]: [ 0.51454737  1.09251881]

[26] In [3]: print numpy.linalg.eigvals(a)
[26] Out[3]: [ 1.0025157   0.37926302]

[27] In [3]: print numpy.linalg.eigvals(a)
[27] Out[3]: [ 0.07562955  0.69529292]

[28] In [3]: print numpy.linalg.eigvals(a)
[28] Out[3]: [ 0.70206288  0.09943419]

[29] In [3]: print numpy.linalg.eigvals(a)
[29] Out[3]: [-0.41140114  0.76592533]

[30] In [3]: print numpy.linalg.eigvals(a)
[30] Out[3]: [-0.41483813  0.66156836]

[31] In [3]: print numpy.linalg.eigvals(a)
[31] Out[3]: [ 0.06939694  0.82218779]

[32] In [3]: print numpy.linalg.eigvals(a)
[32] Out[3]: [-0.27583508  0.96545541]

[33] In [3]: print numpy.linalg.eigvals(a)
[33] Out[3]: [-0.07448614  0.95500699]

[34] In [3]: print numpy.linalg.eigvals(a)
[34] Out[3]: [ 0.57380518  1.01918719]

[35] In [3]: print numpy.linalg.eigvals(a)
[35] Out[3]: [ 0.90397042  0.06531227]

[36] In [3]: print numpy.linalg.eigvals(a)
[36] Out[3]: [ 0.89331523  0.58087954]

[37] In [3]: print numpy.linalg.eigvals(a)
[37] Out[3]: [ 0.69227186  1.25013097]






Any idea, why the output [3] looks so ugly? Is it some pretty printing
relict from Sage?

the ssh command actually failed to connect to 1 node, as seen from the
ex9.sge.e105489:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).

so only 38 engines were registered (e.g. 1 node is for ipcontroller,
38 for engines and 1 failed = 40 nodes).

This rocks!

Ondrej



More information about the IPython-dev mailing list