Skip to content

Instantly share code, notes, and snippets.

@dfroger
Created March 6, 2014 13:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dfroger/9389671 to your computer and use it in GitHub Desktop.
Save dfroger/9389671 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.parallel import Client\n",
"from pylab import *\n",
"from mpi4py import MPI\n",
"%matplotlib inline\n",
"c = Client(profile='mpi')\n",
"view = c[:]\n",
"view.activate()\n",
"view.block = True\n",
"p = {}\n",
"for iproc in range(3):\n",
" p[iproc] = c[iproc]\n",
" p[iproc].activate(\"%i\"%iproc)\n",
" p[iproc].block = True"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%px import numpy as np\n",
"%px from mpi4py import MPI\n",
"%px from pyparmetis import ParMETIS_V3_PartKway\n",
"%px comm = MPI.COMM_WORLD\n",
"%px size = comm.Get_size()\n",
"%px rank = comm.Get_rank()\n",
"print view['rank']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0, 1, 2]\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%px vtxdist = [0,4,8,12]\n",
"\n",
"%px0 xadj = [0,1,3,5,7]\n",
"%px1 xadj = [0,3,6,9,12]\n",
"%px2 xadj = [0,2,4,6,7]\n",
"\n",
"%px0 adjncy = [6 ,6,7, 7,8, 6,9]\n",
"%px1 adjncy = [7,9,10, 8,10,11, 0,1,3, 1,2,4]\n",
"%px2 adjncy = [2,5, 3,4, 4,5 ,5]\n",
"\n",
"%px nparts = 3\n",
"\n",
"%px edgecut, part = ParMETIS_V3_PartKway(vtxdist,xadj,adjncy,nparts,MPI.COMM_WORLD)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"edgecut, part = ParMETIS_V3_PartKway(elmdist,eptr,eind,\n",
" ncommonnodes, nparts, MPI.COMM_WORLD)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"parts = view['part']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"part = concatenate(parts)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print parts\n",
"print part"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[array([0, 1, 1, 0], dtype=int32), array([1, 2, 0, 1], dtype=int32), array([2, 0, 2, 2], dtype=int32)]\n",
"[0 1 1 0 1 2 0 1 2 0 2 2]\n"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nx, ny = 4,3\n",
"x2d, y2d = meshgrid(range(nx),range(ny))\n",
"x1d = x2d.flatten()\n",
"y1d = y2d.flatten()\n",
"\n",
"triangle1 = ((0,4,1),(1,5,2),(2,6,3),(4,8,5),(5,9,6),(6,10,7))\n",
"triangle2 = ((1,4,5),(2,5,6),(3,6,7),(5,8,9),(6,9,10),(7,10,11))\n",
"triangle = array(triangle1 + triangle2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"tripcolor(x1d, y1d, triangle, facecolors=array(part), edgecolors='k', cmap=cm.Pastel1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
"<matplotlib.collections.PolyCollection at 0x4904510>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nERED/T8bppVssrhQZAAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x46ba910>"
]
}
],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%px0 comm.Send([part,MPI.INT],dest=1)\n",
"%px1 part0 = np.zeros( (4,), dtype='i')\n",
"%px1 comm.Recv([part0,MPI.INT],source=0)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%px1 print part0"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0 1 1 0]\n"
]
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment