diff --git a/conway.ipynb b/conway.ipynb new file mode 100644 index 0000000..4f49cfb --- /dev/null +++ b/conway.ipynb @@ -0,0 +1,141 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Installation\n", + "To use tikzmagic simply run: pip install git+git://github.com/robjstan/tikzmagic.git" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import tikzmagic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conway (working title) : Generic Seismic Application using Devito" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Following the redesign and rework of code inside Devito, we wish to extend a good structure to application code as well. The objectives here are two-fold: \n", + "* Provide a set of seismic abstractions that help set up a problem quickly \n", + " * This ensures that an example can be set up in as few lines as possible\n", + "* Provide a set of \"Execution Engine\" abstractions that the seismic code above uses.\n", + " * This ensure that the same code set up for demo inside an IPython notebook can run at scale on Amazon or on a large cluster\n", + " \n", + "## Seismic Abstractions\n", + "In terms of seismic, we need: \n", + "* Seismic Data Reader / Writer\n", + "* Container objects for Shot Data - `Source` and `Receiver` can be thin abstractions over the existing `SourceLike` class in Devito. These should be sufficient for holding the data for a shot. \n", + "* An encapsulation for the actual physics - This is where the equation will live. This is the only object that changes to switch from Acoustic to TTI, for example. (Please suggest a name)\n", + "* Operator builders (Propagators) - These will be instances of Devito's `Operator`/`StencilKernel` class. We will provide functions to build these given the \"Physics\" object from above. There could be one builder each for `Forward`/`Backward`/`Gradient`/`Born`\n", + "\n", + "## Execution Engine\n", + "I expect this to be a thin wrapper over ipyparallel to begin with, but with plans to extend support for Amazon AWS/dedicated clusters. Note that to support running over AWS/clusters it should be possible to add [Celery](http://www.celeryproject.org) or [RQ](http://python-rq.org) as a backend to this execution engine and the rest should be quite straightforward.\n", + "The Execution Engine has 3 basic components like any other similar engine:\n", + "* Controller\n", + "* Worker \n", + "* Reducer\n", + "\n", + "The assumption is that the communication between these happens via queues which will be handled internally by the execution engine. The engine needs to handle nodes dying out in the middle of a shot - just restart the entire shot when that happens. \n", + "\n", + "The flowchart below attempts to explain the planned information/logic flow:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%tikz -s 0.4 \n", + "\n", + "%# Style definitions\n", + "\\tikzstyle{line} = [draw, thick];\n", + "\\tikzstyle{arrow} = [-stealth, line];\n", + "\\tikzstyle{box} = [draw, thick, rectangle, rounded corners, font=\\sffamily, yshift=-10ex];\n", + "\n", + "\\node (execution) [minimum height=40ex, minimum width=30ex,fill=red!30] at (0,6) {};\n", + "\n", + "\\node (seismic) [minimum height=40ex, minimum width=40ex,fill=blue!30] at (10, 6) {};\n", + "\n", + "\\node (controller) [box, minimum height=4ex, minimum width=20ex,font=\\sffamily\\bfseries] at (execution.north) {Controller};\n", + "\\node (worker) [box, minimum height=4ex, minimum width=20ex,font=\\sffamily\\bfseries] at (controller.south) {Worker};\n", + "\\node (reducer) [box, minimum height=4ex, minimum width=20ex,font=\\sffamily\\bfseries] at (worker.south) {Reducer};\n", + "\n", + "\n", + "\\node (datareader) [box, minimum height=4ex, minimum width=23ex,font=\\sffamily\\bfseries] at (seismic.north) {Seismic Data Reader};\n", + "\\node (stencilkernel) [box, minimum height=4ex, minimum width=23ex,font=\\sffamily\\bfseries] at (datareader.south) {StencilKernel};\n", + "\\node (abstractions) [box, minimum height=4ex, minimum width=23ex,font=\\sffamily\\bfseries] at (stencilkernel.south) {Physics Abstraction};\n", + "\n", + "\n", + "\\node (execution_label) [font=\\sffamily\\bfseries, yshift=5ex] at (controller.north) {Execution Engine};\n", + "\\node (seismic_label) [font=\\sffamily\\bfseries, yshift=5ex] at (datareader.north) {Seismic Abstractions};\n", + "\n", + "\\draw[arrow] (datareader) -- node[anchor=south] {Metadata (No. of shots + Size of model)} (controller) ;\n", + "\\draw[arrow] (controller) -- node[anchor=east] {Shot number} (worker) ;\n", + "\\draw[arrow] (datareader) -- node[anchor=south, rotate=10] {Shot Data ( Source+ Receivers)} (worker) ;\n", + "\\draw[arrow] (abstractions) -- node[anchor=north] {via builder functions} (stencilkernel) ;\n", + "\\draw[arrow] (stencilkernel) -- node[anchor=north] {execution} (worker) ;\n", + "\\draw[arrow] (worker) -- node[anchor=west] {Gradient/Correlation} (reducer) ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}