diff --git a/IPython/core/magic.py b/IPython/core/magic.py index e6187e8..9c109a8 100644 --- a/IPython/core/magic.py +++ b/IPython/core/magic.py @@ -3542,6 +3542,8 @@ Defaulting color scheme to 'NoColor'""" def magic_gui(self, parameter_s=''): """Enable or disable IPython GUI event loop integration. + %gui [-a] [GUINAME] + This magic replaces IPython's threaded shells that were activated using the (pylab/wthread/etc.) command line flags. GUI toolkits can now be enabled, disabled and swtiched at runtime and keyboard diff --git a/IPython/lib/inputhook.py b/IPython/lib/inputhook.py index b523cfd..ee965a6 100644 --- a/IPython/lib/inputhook.py +++ b/IPython/lib/inputhook.py @@ -24,7 +24,11 @@ import sys class InputHookManager(object): - """Manage PyOS_InputHook for different GUI toolkits.""" + """Manage PyOS_InputHook for different GUI toolkits. + + This class installs various hooks under ``PyOSInputHook`` to handle + GUI event loop integration. + """ def __init__(self): self.PYFUNC = ctypes.PYFUNCTYPE(ctypes.c_int) @@ -34,6 +38,7 @@ class InputHookManager(object): self._callback_pyfunctype = None self._callback = None self._installed = False + self._current_gui = None def get_pyos_inputhook(self): """Return the current PyOS_InputHook as a ctypes.c_void_p. @@ -68,7 +73,14 @@ class InputHookManager(object): def enable_wx(self, app=False): """Enable event loop integration with wxPython. - + + Parameters + ---------- + app : bool + Create a running application object or not. + + Notes + ----- This methods sets the PyOS_InputHook for wxPython, which allows the wxPython to integrate with terminal based applications like IPython. @@ -86,6 +98,7 @@ class InputHookManager(object): """ from IPython.lib.inputhookwx import inputhook_wx self.set_inputhook(inputhook_wx) + self._current_gui = 'wx' if app: import wx app = wx.App(redirect=False, clearSigInt=False) @@ -101,6 +114,13 @@ class InputHookManager(object): def enable_qt4(self, app=False): """Enable event loop integration with PyQt4. + Parameters + ---------- + app : bool + Create a running application object or not. + + Notes + ----- This methods sets the PyOS_InputHook for wxPython, which allows the PyQt4 to integrate with terminal based applications like IPython. @@ -118,6 +138,7 @@ class InputHookManager(object): QtCore.pyqtRestoreInputHook() except AttributeError: pass + self._current_gui = 'qt4' if app: from PyQt4 import QtGui app = QtGui.QApplication(sys.argv) @@ -132,7 +153,14 @@ class InputHookManager(object): def enable_gtk(self, app=False): """Enable event loop integration with PyGTK. - + + Parameters + ---------- + app : bool + Create a running application object or not. + + Notes + ----- This methods sets the PyOS_InputHook for PyGTK, which allows the PyGTK to integrate with terminal based applications like IPython. @@ -144,6 +172,7 @@ class InputHookManager(object): import gtk try: gtk.set_interactive(True) + self._current_gui = 'gtk' except AttributeError: # For older versions of gtk, use our own ctypes version from IPython.lib.inputhookgtk import inputhook_gtk @@ -157,8 +186,19 @@ class InputHookManager(object): self.clear_inputhook() def enable_tk(self, app=False): - # Creating a Tkinter.Tk object sets PyOS_InputHook() - pass + """Enable event loop integration with Tk. + + Parameters + ---------- + app : bool + Create a running application object or not. + + Notes + ----- + Currently this is a no-op as creating a :class:`Tkinter.Tk` object + sets ``PyOS_InputHook``. + """ + self._current_gui = 'tk' def disable_tk(self): """Disable event loop integration with Tkinter. @@ -167,6 +207,10 @@ class InputHookManager(object): """ self.clear_inputhook() + def current_gui(self): + """Return a string indicating the currently active GUI or None.""" + return self._current_gui + inputhook_manager = InputHookManager() enable_wx = inputhook_manager.enable_wx @@ -178,4 +222,5 @@ disable_gtk = inputhook_manager.disable_gtk enable_tk = inputhook_manager.enable_tk disable_tk = inputhook_manager.disable_tk clear_inputhook = inputhook_manager.clear_inputhook -set_inputhook = inputhook_manager.set_inputhook \ No newline at end of file +set_inputhook = inputhook_manager.set_inputhook +current_gui = inputhook_manager.current_gui \ No newline at end of file diff --git a/docs/autogen_api.py b/docs/autogen_api.py index f369e09..82fa29b 100755 --- a/docs/autogen_api.py +++ b/docs/autogen_api.py @@ -20,8 +20,10 @@ if __name__ == '__main__': r'\.extensions', r'\.kernel.config', r'\.attic', + r'\.quarantine', + r'\.deathrow' ] - docwriter.module_skip_patterns += [ r'\.FakeModule', + docwriter.module_skip_patterns += [ r'\.core.fakemodule', r'\.cocoa', r'\.ipdoctest', r'\.Gnuplot', diff --git a/docs/source/development/overview.txt b/docs/source/development/overview.txt index 59ac568..a39cca7 100644 --- a/docs/source/development/overview.txt +++ b/docs/source/development/overview.txt @@ -132,7 +132,8 @@ using the :command:`iptest` command (which is basically a customized version of $ iptest The :command:`iptest` command will also pick up and run any tests you have -written. See :ref:`_devel_testing` for further details on the testing system. +written. See :ref:`testing documentation ` for further details +on the testing system. Post your branch and request a code review @@ -170,35 +171,36 @@ Some notes for core developers when merging third-party contributions Core developers, who ultimately merge any approved branch (from themselves, another developer, or any third-party contribution) will typically use -:command:`bzr merge` to merge the branch into the trunk and push it to the main -Launcphad site. This is a short list of things to keep in mind when doing this -process, so that the project history is easy to understand in the long run, and -that generating release notes is as painless and accurate as possible. - -- When you merge any non-trivial functionality (from one small bug fix to a big - feature branch), please remember to always edit the changes_ file - accordingly. This file has one main section for each release, and if you - edit it as you go, noting what new features, bug fixes or API changes you - have made, the release notes will be almost finished when they are needed - later. This is much easier if done when you merge the work, rather than - weeks or months later by re-reading a massive Bazaar log. - -- When big merges are done, the practice of putting a summary commit message in - the merge is *extremely* useful. It makes this kind of job much nicer, +:command:`bzr merge` to merge the branch into the trunk and push it to the +main Launcphad site. This is a short list of things to keep in mind when doing +this process, so that the project history is easy to understand in the long +run, and that generating release notes is as painless and accurate as +possible. + +- When you merge any non-trivial functionality (from one small bug fix to a + big feature branch), please remember to always edit the :file:`changes.txt` + file accordingly. This file has one main section for each release, and if + you edit it as you go, noting what new features, bug fixes or API changes + you have made, the release notes will be almost finished when they are + needed later. This is much easier if done when you merge the work, rather + than weeks or months later by re-reading a massive Bazaar log. + +- When big merges are done, the practice of putting a summary commit message + in the merge is *extremely* useful. It makes this kind of job much nicer, because that summary log message can be almost copy/pasted without changes, if it was well written, rather than dissecting the next-level messages from the individual commits. - It's important that we remember to always credit who gave us something if - it's not the committer. In general, we have been fairly good on this front, - this is just a reminder to keep things up. As a note, if you are ever + it's not the committer. In general, we have been fairly good on this front, + this is just a reminder to keep things up. As a note, if you are ever committing something that is completely (or almost so) a third-party contribution, do the commit as:: $ bzr commit --author="Someone Else" This way it will show that name separately in the log, which makes it even - easier to spot. Obviously we often rework third party contributions + easier to spot. Obviously we often rework third party contributions extensively, but this is still good to keep in mind for cases when we don't touch the code too much. diff --git a/docs/source/development/reorg.txt b/docs/source/development/reorg.txt index 298710b..6ae099d 100644 --- a/docs/source/development/reorg.txt +++ b/docs/source/development/reorg.txt @@ -76,19 +76,9 @@ Procedure 1. Move the file to its new location with its new name. 2. Rename all import statements to reflect the change. 3. Run PyFlakes on each changes module. -3. Add tests/test_imports.py to test it. +4. Add tests/test_imports.py to test it. Status ====== -The new subpackages have been created and the top-level modules have been -moved and renamed. Import tests have been created for all of the moved and -renamed modules. The build infrastructure (setup.py and friends) have been -updated and tested on Mac and Windows. Finally, a compatibility layer has been -added for iplib, ipapi and Shell. The follow things still need to be done:: - -* I need to modify iptests to properly skip modules that are no longer top - level modules. - -* When running python setup.py sdist, the Sphinx API docs fail to build - because of something going on with IPython.core.fakemodule +This branch was merged into trunk in early August of 2009. diff --git a/docs/source/development/roadmap.txt b/docs/source/development/roadmap.txt index 2a097a2..d241125 100644 --- a/docs/source/development/roadmap.txt +++ b/docs/source/development/roadmap.txt @@ -4,42 +4,34 @@ Development roadmap =================== -IPython is an ambitious project that is still under heavy development. However, we want IPython to become useful to as many people as possible, as quickly as possible. To help us accomplish this, we are laying out a roadmap of where we are headed and what needs to happen to get there. Hopefully, this will help the IPython developers figure out the best things to work on for each upcoming release. +IPython is an ambitious project that is still under heavy development. +However, we want IPython to become useful to as many people as possible, as +quickly as possible. To help us accomplish this, we are laying out a roadmap +of where we are headed and what needs to happen to get there. Hopefully, this +will help the IPython developers figure out the best things to work on for +each upcoming release. Work targeted to particular releases ==================================== -Release 0.10 ------------- - -* Initial refactor of :command:`ipcluster`. - -* Better TextMate integration. - -* Merge in the daemon branch. - Release 0.11 ------------ -* Refactor the configuration system and command line options for - :command:`ipengine` and :command:`ipcontroller`. This will include the - creation of cluster directories that encapsulate all the configuration - files, log files and security related files for a particular cluster. +* [DONE] Full module and package reorganization. + +* [DONE] Removal of the threaded shells and new implementation of GUI support + based on ``PyOSInputHook``. -* Refactor :command:`ipcluster` to support the new configuration system. +* Refactor the configuration system. -* Refactor the daemon stuff to support the new configuration system. +* Prepare to refactor IPython's core by creating a new component and + application system. -* Merge back in the core of the notebook. Release 0.12 ------------ -* Fully integrate process startup with the daemons for full process - management. -* Make the capabilites of :command:`ipcluster` available from simple Python - classes. Major areas of work =================== diff --git a/docs/source/interactive/reference.txt b/docs/source/interactive/reference.txt index 4cf25f4..c50e0cc 100644 --- a/docs/source/interactive/reference.txt +++ b/docs/source/interactive/reference.txt @@ -25,71 +25,16 @@ $HOME resolves to C:\\Documents and Settings\\YourUserName in most instances. In the rest of this text, we will refer to this directory as IPYTHONDIR. -.. _Threading options: Special Threading Options ------------------------- -The following special options are ONLY valid at the beginning of the -command line, and not later. This is because they control the initial- -ization of ipython itself, before the normal option-handling mechanism -is active. - - -gthread, -qthread, -q4thread, -wthread, -pylab: - Only one of these can be given, and it can only be given as - the first option passed to IPython (it will have no effect in - any other position). They provide threading support for the - GTK, Qt (versions 3 and 4) and WXPython toolkits, and for the - matplotlib library. - - With any of the first four options, IPython starts running a - separate thread for the graphical toolkit's operation, so that - you can open and control graphical elements from within an - IPython command line, without blocking. All four provide - essentially the same functionality, respectively for GTK, Qt3, - Qt4 and WXWidgets (via their Python interfaces). - - Note that with -wthread, you can additionally use the - -wxversion option to request a specific version of wx to be - used. This requires that you have the wxversion Python module - installed, which is part of recent wxPython distributions. - - If -pylab is given, IPython loads special support for the mat - plotlib library (http://matplotlib.sourceforge.net), allowing - interactive usage of any of its backends as defined in the - user's ~/.matplotlib/matplotlibrc file. It automatically - activates GTK, Qt or WX threading for IPyhton if the choice of - matplotlib backend requires it. It also modifies the %run - command to correctly execute (without blocking) any - matplotlib-based script which calls show() at the end. - - -tk - The -g/q/q4/wthread options, and -pylab (if matplotlib is - configured to use GTK, Qt3, Qt4 or WX), will normally block Tk - graphical interfaces. This means that when either GTK, Qt or WX - threading is active, any attempt to open a Tk GUI will result in a - dead window, and possibly cause the Python interpreter to crash. - An extra option, -tk, is available to address this issue. It can - only be given as a second option after any of the above (-gthread, - -wthread or -pylab). - - If -tk is given, IPython will try to coordinate Tk threading - with GTK, Qt or WX. This is however potentially unreliable, and - you will have to test on your platform and Python configuration to - determine whether it works for you. Debian users have reported - success, apparently due to the fact that Debian builds all of Tcl, - Tk, Tkinter and Python with pthreads support. Under other Linux - environments (such as Fedora Core 2/3), this option has caused - random crashes and lockups of the Python interpreter. Under other - operating systems (Mac OSX and Windows), you'll need to try it to - find out, since currently no user reports are available. - - There is unfortunately no way for IPython to determine at run time - whether -tk will work reliably or not, so you will need to do some - experiments before relying on it for regular work. - - +Previously IPython had command line options for controlling GUI event loop +integration (-gthread, -qthread, -q4thread, -wthread, -pylab). As of IPython +version 0.11, these have been deprecated. Please see the new ``%gui`` +magic command or :ref:`this section ` for details on the new +interface. Regular Options --------------- @@ -109,16 +54,8 @@ All options with a [no] prepended can be specified in negated form -help print a help message and exit. -pylab - this can only be given as the first option passed to IPython - (it will have no effect in any other position). It adds - special support for the matplotlib library - (http://matplotlib.sourceforge.ne), allowing interactive usage - of any of its backends as defined in the user's .matplotlibrc - file. It automatically activates GTK or WX threading for - IPyhton if the choice of matplotlib backend requires it. It - also modifies the %run command to correctly execute (without - blocking) any matplotlib-based script which calls show() at - the end. See `Matplotlib support`_ for more details. + Deprecated. See :ref:`Matplotlib support ` + for more details. -autocall Make IPython automatically call any callable object even if you @@ -367,9 +304,7 @@ All options with a [no] prepended can be specified in negated form -Version print version information and exit. -wxversion - Select a specific version of wxPython (used in conjunction - with -wthread). Requires the wxversion module, part of recent - wxPython distributions + Deprecated. -xmode @@ -1435,77 +1370,74 @@ from math import * # math MUST be imported BEFORE PhysicalQInteractive from IPython.extensions.PhysicalQInteractive import * import IPython.extensions.PhysicalQInput +.. _gui_support: -Threading support -================= +GUI event loop support support +============================== + +.. versionadded:: 0.11 + The ``%gui`` magic and :mod:`IPython.lib.inputhook`. + +IPython has excellent support for working interactively with Graphical User +Interface (GUI) toolkits, such as wxPython, PyQt4, PyGTK and Tk. This is +implemented using Python's builtin ``PyOSInputHook`` hook. This implementation +is extremely robust compared to our previous threaded based version. The +advantages of + +* GUIs can be enabled and disabled dynamically at runtime. +* The active GUI can be switched dynamically at runtime. +* In some cases, multiple GUIs can run simultaneously with no problems. +* There is a developer API in :mod:`IPython.lib.inputhook` for customizing + all of these things. + +For users, enabling GUI event loop integration is simple. You simple use the +``%gui`` magic as follows:: + + %gui [-a] [GUINAME] + +With no arguments, ``%gui`` removes all GUI support. Valid ``GUINAME`` +arguments are ``wx``, ``qt4``, ``gtk`` and ``tk``. The ``-a`` option will +create and return a running application object for the selected GUI toolkit. + +This to use wxPython interactively and create a running :class:`wx.App` +object, do:: + + %gui -a wx + +For information on IPython's Matplotlib integration (and the ``pylab`` mode) +see :ref:`this section `. -WARNING: The threading support is still somewhat experimental, and it -has only seen reasonable testing under Linux. Threaded code is -particularly tricky to debug, and it tends to show extremely -platform-dependent behavior. Since I only have access to Linux machines, -I will have to rely on user's experiences and assistance for this area -of IPython to improve under other platforms. - -IPython, via the -gthread , -qthread, -q4thread and -wthread options -(described in Sec. `Threading options`_), can run in -multithreaded mode to support pyGTK, Qt3, Qt4 and WXPython applications -respectively. These GUI toolkits need to control the python main loop of -execution, so under a normal Python interpreter, starting a pyGTK, Qt3, -Qt4 or WXPython application will immediately freeze the shell. - -IPython, with one of these options (you can only use one at a time), -separates the graphical loop and IPython's code execution run into -different threads. This allows you to test interactively (with %run, for -example) your GUI code without blocking. - -A nice mini-tutorial on using IPython along with the Qt Designer -application is available at the SciPy wiki: -http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer. - - -Tk issues ---------- - -As indicated in Sec. `Threading options`_, a special -tk option is -provided to try and allow Tk graphical applications to coexist -interactively with WX, Qt or GTK ones. Whether this works at all, -however, is very platform and configuration dependent. Please -experiment with simple test cases before committing to using this -combination of Tk and GTK/Qt/WX threading in a production environment. - - -I/O pitfalls ------------- - -Be mindful that the Python interpreter switches between threads every -$N$ bytecodes, where the default value as of Python 2.3 is $N=100.$ This -value can be read by using the sys.getcheckinterval() function, and it -can be reset via sys.setcheckinterval(N). This switching of threads can -cause subtly confusing effects if one of your threads is doing file I/O. -In text mode, most systems only flush file buffers when they encounter a -'\n'. An instruction as simple as:: - - print >> filehandle, ''hello world'' - -actually consists of several bytecodes, so it is possible that the -newline does not reach your file before the next thread switch. -Similarly, if you are writing to a file in binary mode, the file won't -be flushed until the buffer fills, and your other thread may see -apparently truncated files. - -For this reason, if you are using IPython's thread support and have (for -example) a GUI application which will read data generated by files -written to from the IPython thread, the safest approach is to open all -of your files in unbuffered mode (the third argument to the file/open -function is the buffering value):: - - filehandle = open(filename,mode,0) - -This is obviously a brute force way of avoiding race conditions with the -file buffering. If you want to do it cleanly, and you have a resource -which is being shared by the interactive IPython loop and your GUI -thread, you should really handle it with thread locking and -syncrhonization properties. The Python documentation discusses these. +For developers that want to use IPython's GUI event loop integration in +the form of a library, the capabilities are exposed in library form +in the :mod:`IPython.lib.inputhook`. Interested developers should see the +module docstrings for more information. + +.. _matplotlib_support: + +Plotting with matplotlib +======================== + + +`Matplotlib`_ provides high quality 2D and +3D plotting for Python. Matplotlib can produce plots on screen using a variety +of GUI toolkits, including Tk, PyGTK, PyQt4 and wxPython. It also provides a +number of commands useful for scientific computing, all with a syntax +compatible with that of the popular Matlab program. + +Many IPython users have come to rely on IPython's ``-pylab`` mode which +automates the integration of Matplotlib with IPython. We are still in the +process of working with the Matplotlib developers to finalize the new pylab +API, but for now you can use Matplotlib interactively using the following +commands:: + + %gui -a wx + import matplotlib + matplotlib.use('wxagg') + from matplotlib import pylab + pylab.interactive(True) + +All of this will soon be automated as Matplotlib beings to include +new logic that uses our new GUI support. .. _interactive_demos: @@ -1603,30 +1535,5 @@ divisions are allowed. If you want to be able to open an IPython instance at an arbitrary point in a program, you can use IPython's embedding facilities, described in detail in Sec. 9 +.. [Matplotlib] Matplotlib. http://matplotlib.sourceforge.net -.. _Matplotlib support: - -Plotting with matplotlib -======================== - -The matplotlib library (http://matplotlib.sourceforge.net -http://matplotlib.sourceforge.net) provides high quality 2D plotting for -Python. Matplotlib can produce plots on screen using a variety of GUI -toolkits, including Tk, GTK and WXPython. It also provides a number of -commands useful for scientific computing, all with a syntax compatible -with that of the popular Matlab program. - -IPython accepts the special option -pylab (see :ref:`here -`). This configures it to support matplotlib, honoring -the settings in the .matplotlibrc file. IPython will detect the user's choice -of matplotlib GUI backend, and automatically select the proper threading model -to prevent blocking. It also sets matplotlib in interactive mode and modifies -%run slightly, so that any matplotlib-based script can be executed using %run -and the final show() command does not block the interactive shell. - -The -pylab option must be given first in order for IPython to configure its -threading mode. However, you can still issue other options afterwards. This -allows you to have a matplotlib-based environment customized with additional -modules using the standard IPython profile mechanism (see :ref:`here -`): ``ipython -pylab -p myprofile`` will load the profile defined in -ipythonrc-myprofile after configuring matplotlib. diff --git a/docs/source/parallel/index.txt b/docs/source/parallel/index.txt index 3ea9e0f..e68ee0a 100644 --- a/docs/source/parallel/index.txt +++ b/docs/source/parallel/index.txt @@ -13,4 +13,3 @@ Using IPython for parallel computing parallel_task.txt parallel_mpi.txt parallel_security.txt - visionhpc.txt diff --git a/docs/source/parallel/parallel_intro.txt b/docs/source/parallel/parallel_intro.txt index 92db52b..0b2b984 100644 --- a/docs/source/parallel/parallel_intro.txt +++ b/docs/source/parallel/parallel_intro.txt @@ -90,13 +90,15 @@ asynchronous interface to a set of engines. Because the controller listens on a network port for engines to connect to it, it must be started *before* any engines are started. -The controller also provides a single point of contact for users who wish -to utilize the engines connected to the controller. There are different -ways of working with a controller. In IPython these ways correspond to different interfaces that the controller is adapted to. Currently we have two default interfaces to the controller: +The controller also provides a single point of contact for users who wish to +utilize the engines connected to the controller. There are different ways of +working with a controller. In IPython these ways correspond to different +interfaces that the controller is adapted to. Currently we have two default +interfaces to the controller: * The MultiEngine interface, which provides the simplest possible way of working with engines interactively. -* The Task interface, which provides presents the engines as a load balanced +* The Task interface, which presents the engines as a load balanced task farming system. Advanced users can easily add new custom interfaces to enable other @@ -121,11 +123,30 @@ interface. Here are the two default clients: Security -------- -By default (as long as `pyOpenSSL` is installed) all network connections between the controller and engines and the controller and clients are secure. What does this mean? First of all, all of the connections will be encrypted using SSL. Second, the connections are authenticated. We handle authentication in a capability based security model [Capability]_. In this model, a "capability (known in some systems as a key) is a communicable, unforgeable token of authority". Put simply, a capability is like a key to your house. If you have the key to your house, you can get in. If not, you can't. - -In our architecture, the controller is the only process that listens on network ports, and is thus responsible to creating these keys. In IPython, these keys are known as Foolscap URLs, or FURLs, because of the underlying network protocol we are using. As a user, you don't need to know anything about the details of these FURLs, other than that when the controller starts, it saves a set of FURLs to files named :file:`something.furl`. The default location of these files is the :file:`~./ipython/security` directory. - -To connect and authenticate to the controller an engine or client simply needs to present an appropriate FURL (that was originally created by the controller) to the controller. Thus, the FURL files need to be copied to a location where the clients and engines can find them. Typically, this is the :file:`~./ipython/security` directory on the host where the client/engine is running (which could be a different host than the controller). Once the FURL files are copied over, everything should work fine. +By default (as long as `pyOpenSSL` is installed) all network connections +between the controller and engines and the controller and clients are secure. +What does this mean? First of all, all of the connections will be encrypted +using SSL. Second, the connections are authenticated. We handle authentication +in a capability based security model [Capability]_. In this model, a +"capability (known in some systems as a key) is a communicable, unforgeable +token of authority". Put simply, a capability is like a key to your house. If +you have the key to your house, you can get in. If not, you can't. + +In our architecture, the controller is the only process that listens on +network ports, and is thus responsible to creating these keys. In IPython, +these keys are known as Foolscap URLs, or FURLs, because of the underlying +network protocol we are using. As a user, you don't need to know anything +about the details of these FURLs, other than that when the controller starts, +it saves a set of FURLs to files named :file:`something.furl`. The default +location of these files is the :file:`~./ipython/security` directory. + +To connect and authenticate to the controller an engine or client simply needs +to present an appropriate FURL (that was originally created by the controller) +to the controller. Thus, the FURL files need to be copied to a location where +the clients and engines can find them. Typically, this is the +:file:`~./ipython/security` directory on the host where the client/engine is +running (which could be a different host than the controller). Once the FURL +files are copied over, everything should work fine. Currently, there are three FURL files that the controller creates: @@ -149,12 +170,16 @@ can be found :ref:`here `. Getting Started =============== -To use IPython for parallel computing, you need to start one instance of -the controller and one or more instances of the engine. Initially, it is best to simply start a controller and engines on a single host using the :command:`ipcluster` command. To start a controller and 4 engines on you localhost, just do:: +To use IPython for parallel computing, you need to start one instance of the +controller and one or more instances of the engine. Initially, it is best to +simply start a controller and engines on a single host using the +:command:`ipcluster` command. To start a controller and 4 engines on your +localhost, just do:: $ ipcluster local -n 4 -More details about starting the IPython controller and engines can be found :ref:`here ` +More details about starting the IPython controller and engines can be found +:ref:`here ` Once you have started the IPython controller and one or more engines, you are ready to use the engines to do something useful. To make sure @@ -184,7 +209,12 @@ everything is working correctly, try the following commands: [3] In [1]: print "Hello World" [3] Out[1]: Hello World -Remember, a client also needs to present a FURL file to the controller. How does this happen? When a multiengine client is created with no arguments, the client tries to find the corresponding FURL file in the local :file:`~./ipython/security` directory. If it finds it, you are set. If you have put the FURL file in a different location or it has a different name, create the client like this:: +Remember, a client also needs to present a FURL file to the controller. How +does this happen? When a multiengine client is created with no arguments, the +client tries to find the corresponding FURL file in the local +:file:`~./ipython/security` directory. If it finds it, you are set. If you +have put the FURL file in a different location or it has a different name, +create the client like this:: mec = client.MultiEngineClient('/path/to/my/ipcontroller-mec.furl') @@ -192,7 +222,9 @@ Same thing hold true of creating a task client:: tc = client.TaskClient('/path/to/my/ipcontroller-tc.furl') -You are now ready to learn more about the :ref:`MultiEngine ` and :ref:`Task ` interfaces to the controller. +You are now ready to learn more about the :ref:`MultiEngine +` and :ref:`Task ` interfaces to the +controller. .. note:: diff --git a/docs/source/parallel/parallel_mpi.txt b/docs/source/parallel/parallel_mpi.txt index a443462..b34bfa2 100644 --- a/docs/source/parallel/parallel_mpi.txt +++ b/docs/source/parallel/parallel_mpi.txt @@ -4,9 +4,16 @@ Using MPI with IPython ======================= -Often, a parallel algorithm will require moving data between the engines. One way of accomplishing this is by doing a pull and then a push using the multiengine client. However, this will be slow as all the data has to go through the controller to the client and then back through the controller, to its final destination. +Often, a parallel algorithm will require moving data between the engines. One +way of accomplishing this is by doing a pull and then a push using the +multiengine client. However, this will be slow as all the data has to go +through the controller to the client and then back through the controller, to +its final destination. -A much better way of moving data between engines is to use a message passing library, such as the Message Passing Interface (MPI) [MPI]_. IPython's parallel computing architecture has been designed from the ground up to integrate with MPI. This document describes how to use MPI with IPython. +A much better way of moving data between engines is to use a message passing +library, such as the Message Passing Interface (MPI) [MPI]_. IPython's +parallel computing architecture has been designed from the ground up to +integrate with MPI. This document describes how to use MPI with IPython. Additional installation requirements ==================================== @@ -35,12 +42,15 @@ To use code that calls MPI, there are typically two things that MPI requires. :command:`mpiexec` or a batch system (like PBS) that has MPI support. 2. Once the process starts, it must call :func:`MPI_Init`. -There are a couple of ways that you can start the IPython engines and get these things to happen. +There are a couple of ways that you can start the IPython engines and get +these things to happen. Automatic starting using :command:`mpiexec` and :command:`ipcluster` -------------------------------------------------------------------- -The easiest approach is to use the `mpiexec` mode of :command:`ipcluster`, which will first start a controller and then a set of engines using :command:`mpiexec`:: +The easiest approach is to use the `mpiexec` mode of :command:`ipcluster`, +which will first start a controller and then a set of engines using +:command:`mpiexec`:: $ ipcluster mpiexec -n 4 @@ -50,7 +60,8 @@ stop and clean up the controller and engines. Manual starting using :command:`mpiexec` ---------------------------------------- -If you want to start the IPython engines using the :command:`mpiexec`, just do:: +If you want to start the IPython engines using the :command:`mpiexec`, just +do:: $ mpiexec -n 4 ipengine --mpi=mpi4py @@ -64,14 +75,20 @@ starting the engines with:: Automatic starting using PBS and :command:`ipcluster` ----------------------------------------------------- -The :command:`ipcluster` command also has built-in integration with PBS. For more information on this approach, see our documentation on :ref:`ipcluster `. +The :command:`ipcluster` command also has built-in integration with PBS. For +more information on this approach, see our documentation on :ref:`ipcluster +`. Actually using MPI ================== -Once the engines are running with MPI enabled, you are ready to go. You can now call any code that uses MPI in the IPython engines. And, all of this can be done interactively. Here we show a simple example that uses mpi4py [mpi4py]_. +Once the engines are running with MPI enabled, you are ready to go. You can +now call any code that uses MPI in the IPython engines. And, all of this can +be done interactively. Here we show a simple example that uses mpi4py +[mpi4py]_. -First, lets define a simply function that uses MPI to calculate the sum of a distributed array. Save the following text in a file called :file:`psum.py`: +First, lets define a simply function that uses MPI to calculate the sum of a +distributed array. Save the following text in a file called :file:`psum.py`: .. sourcecode:: python @@ -86,7 +103,9 @@ Now, start an IPython cluster in the same directory as :file:`psum.py`:: $ ipcluster mpiexec -n 4 -Finally, connect to the cluster and use this function interactively. In this case, we create a random array on each engine and sum up all the random arrays using our :func:`psum` function: +Finally, connect to the cluster and use this function interactively. In this +case, we create a random array on each engine and sum up all the random arrays +using our :func:`psum` function: .. sourcecode:: ipython diff --git a/docs/source/parallel/parallel_multiengine.txt b/docs/source/parallel/parallel_multiengine.txt index 8c91e38..b39123f 100644 --- a/docs/source/parallel/parallel_multiengine.txt +++ b/docs/source/parallel/parallel_multiengine.txt @@ -58,7 +58,10 @@ Here we see that there are four engines ready to do work for us. Quick and easy parallelism ========================== -In many cases, you simply want to apply a Python function to a sequence of objects, but *in parallel*. The multiengine interface provides two simple ways of accomplishing this: a parallel version of :func:`map` and ``@parallel`` function decorator. +In many cases, you simply want to apply a Python function to a sequence of +objects, but *in parallel*. The multiengine interface provides two simple ways +of accomplishing this: a parallel version of :func:`map` and ``@parallel`` +function decorator. Parallel map ------------ @@ -90,7 +93,9 @@ parallel version of :meth:`map` that works just like its serial counterpart: Parallel function decorator --------------------------- -Parallel functions are just like normal function, but they can be called on sequences and *in parallel*. The multiengine interface provides a decorator that turns any Python function into a parallel function: +Parallel functions are just like normal function, but they can be called on +sequences and *in parallel*. The multiengine interface provides a decorator +that turns any Python function into a parallel function: .. sourcecode:: ipython @@ -667,7 +672,9 @@ more other types of exceptions. Here is how it works: [2:execute]: ZeroDivisionError: integer division or modulo by zero [3:execute]: ZeroDivisionError: integer division or modulo by zero -Notice how the error message printed when :exc:`CompositeError` is raised has information about the individual exceptions that were raised on each engine. If you want, you can even raise one of these original exceptions: +Notice how the error message printed when :exc:`CompositeError` is raised has +information about the individual exceptions that were raised on each engine. +If you want, you can even raise one of these original exceptions: .. sourcecode:: ipython diff --git a/docs/source/parallel/parallel_process.txt b/docs/source/parallel/parallel_process.txt index c91d5d6..8e43ed5 100644 --- a/docs/source/parallel/parallel_process.txt +++ b/docs/source/parallel/parallel_process.txt @@ -15,14 +15,20 @@ Broadly speaking, there are two ways of going about starting a controller and en * In a more manual way using the :command:`ipcontroller` and :command:`ipengine` commands. -This document describes both of these methods. We recommend that new users start with the :command:`ipcluster` command as it simplifies many common usage cases. +This document describes both of these methods. We recommend that new users +start with the :command:`ipcluster` command as it simplifies many common usage +cases. General considerations ====================== -Before delving into the details about how you can start a controller and engines using the various methods, we outline some of the general issues that come up when starting the controller and engines. These things come up no matter which method you use to start your IPython cluster. +Before delving into the details about how you can start a controller and +engines using the various methods, we outline some of the general issues that +come up when starting the controller and engines. These things come up no +matter which method you use to start your IPython cluster. -Let's say that you want to start the controller on ``host0`` and engines on hosts ``host1``-``hostn``. The following steps are then required: +Let's say that you want to start the controller on ``host0`` and engines on +hosts ``host1``-``hostn``. The following steps are then required: 1. Start the controller on ``host0`` by running :command:`ipcontroller` on ``host0``. @@ -41,12 +47,15 @@ at that location. The final step required required to actually use the running controller from a client is to move the FURL files :file:`ipcontroller-mec.furl` and :file:`ipcontroller-tc.furl` from ``host0`` to the host where the clients will -be run. If these file are put into the :file:`~/.ipython/security` directory of the client's host, they will be found automatically. Otherwise, the full path to them has to be passed to the client's constructor. +be run. If these file are put into the :file:`~/.ipython/security` directory +of the client's host, they will be found automatically. Otherwise, the full +path to them has to be passed to the client's constructor. Using :command:`ipcluster` ========================== -The :command:`ipcluster` command provides a simple way of starting a controller and engines in the following situations: +The :command:`ipcluster` command provides a simple way of starting a +controller and engines in the following situations: 1. When the controller and engines are all run on localhost. This is useful for testing or running on a multicore computer. @@ -110,11 +119,20 @@ This does the following: 1. Starts the IPython controller on current host. 2. Uses :command:`mpiexec` to start 4 engines. -On newer MPI implementations (such as OpenMPI), this will work even if you don't make any calls to MPI or call :func:`MPI_Init`. However, older MPI implementations actually require each process to call :func:`MPI_Init` upon starting. The easiest way of having this done is to install the mpi4py [mpi4py]_ package and then call ipcluster with the ``--mpi`` option:: +On newer MPI implementations (such as OpenMPI), this will work even if you +don't make any calls to MPI or call :func:`MPI_Init`. However, older MPI +implementations actually require each process to call :func:`MPI_Init` upon +starting. The easiest way of having this done is to install the mpi4py +[mpi4py]_ package and then call ipcluster with the ``--mpi`` option:: $ ipcluster mpiexec -n 4 --mpi=mpi4py -Unfortunately, even this won't work for some MPI implementations. If you are having problems with this, you will likely have to use a custom Python executable that itself calls :func:`MPI_Init` at the appropriate time. Fortunately, mpi4py comes with such a custom Python executable that is easy to install and use. However, this custom Python executable approach will not work with :command:`ipcluster` currently. +Unfortunately, even this won't work for some MPI implementations. If you are +having problems with this, you will likely have to use a custom Python +executable that itself calls :func:`MPI_Init` at the appropriate time. +Fortunately, mpi4py comes with such a custom Python executable that is easy to +install and use. However, this custom Python executable approach will not work +with :command:`ipcluster` currently. Additional command line options for this mode can be found by doing:: @@ -126,7 +144,9 @@ More details on using MPI with IPython can be found :ref:`here `. Using :command:`ipcluster` in PBS mode -------------------------------------- -The PBS mode uses the Portable Batch System [PBS]_ to start the engines. To use this mode, you first need to create a PBS script template that will be used to start the engines. Here is a sample PBS script template: +The PBS mode uses the Portable Batch System [PBS]_ to start the engines. To +use this mode, you first need to create a PBS script template that will be +used to start the engines. Here is a sample PBS script template: .. sourcecode:: bash @@ -161,7 +181,8 @@ There are a few important points about this template: 5. Depending on the configuration of you system, you may have to set environment variables in the script template. -Once you have created such a script, save it with a name like :file:`pbs.template`. Now you are ready to start your job:: +Once you have created such a script, save it with a name like +:file:`pbs.template`. Now you are ready to start your job:: $ ipcluster pbs -n 128 --pbs-script=pbs.template @@ -175,9 +196,11 @@ Using :command:`ipcluster` in SSH mode The SSH mode uses :command:`ssh` to execute :command:`ipengine` on remote nodes and the :command:`ipcontroller` on localhost. -When using using this mode it highly recommended that you have set up SSH keys and are using ssh-agent [SSH]_ for password-less logins. +When using using this mode it highly recommended that you have set up SSH keys +and are using ssh-agent [SSH]_ for password-less logins. -To use this mode you need a python file describing the cluster, here is an example of such a "clusterfile": +To use this mode you need a python file describing the cluster, here is an +example of such a "clusterfile": .. sourcecode:: python @@ -187,7 +210,8 @@ To use this mode you need a python file describing the cluster, here is an examp 'host3.example.com' : 1, 'host4.example.com' : 8 } -Since this is a regular python file usual python syntax applies. Things to note: +Since this is a regular python file usual python syntax applies. Things to +note: * The `engines` dict, where the keys is the host we want to run engines on and the value is the number of engines to run on that host. @@ -204,12 +228,16 @@ start your cluster like so: $ ipcluster ssh --clusterfile /path/to/my/clusterfile.py -Two helper shell scripts are used to start and stop :command:`ipengine` on remote hosts: +Two helper shell scripts are used to start and stop :command:`ipengine` on +remote hosts: * sshx.sh * engine_killer.sh -Defaults for both of these are contained in the source code for :command:`ipcluster`. The default scripts are written to a local file in a tmep directory and then copied to a temp directory on the remote host and executed from there. On most Unix, Linux and OS X systems this is /tmp. +Defaults for both of these are contained in the source code for +:command:`ipcluster`. The default scripts are written to a local file in a +tmep directory and then copied to a temp directory on the remote host and +executed from there. On most Unix, Linux and OS X systems this is /tmp. The default sshx.sh is the following: @@ -241,7 +269,9 @@ Current limitations of the SSH mode of :command:`ipcluster` are: Using the :command:`ipcontroller` and :command:`ipengine` commands ================================================================== -It is also possible to use the :command:`ipcontroller` and :command:`ipengine` commands to start your controller and engines. This approach gives you full control over all aspects of the startup process. +It is also possible to use the :command:`ipcontroller` and :command:`ipengine` +commands to start your controller and engines. This approach gives you full +control over all aspects of the startup process. Starting the controller and engine on your local machine -------------------------------------------------------- @@ -253,11 +283,14 @@ First start the controller:: $ ipcontroller -Next, start however many instances of the engine you want using (repeatedly) the command:: +Next, start however many instances of the engine you want using (repeatedly) +the command:: $ ipengine -The engines should start and automatically connect to the controller using the FURL files in :file:`~./ipython/security`. You are now ready to use the controller and engines from IPython. +The engines should start and automatically connect to the controller using the +FURL files in :file:`~./ipython/security`. You are now ready to use the +controller and engines from IPython. .. warning:: @@ -279,10 +312,13 @@ When the controller and engines are running on different hosts, things are slightly more complicated, but the underlying ideas are the same: 1. Start the controller on a host using :command:`ipcontroller`. -2. Copy :file:`ipcontroller-engine.furl` from :file:`~./ipython/security` on the controller's host to the host where the engines will run. +2. Copy :file:`ipcontroller-engine.furl` from :file:`~./ipython/security` on + the controller's host to the host where the engines will run. 3. Use :command:`ipengine` on the engine's hosts to start the engines. -The only thing you have to be careful of is to tell :command:`ipengine` where the :file:`ipcontroller-engine.furl` file is located. There are two ways you can do this: +The only thing you have to be careful of is to tell :command:`ipengine` where +the :file:`ipcontroller-engine.furl` file is located. There are two ways you +can do this: * Put :file:`ipcontroller-engine.furl` in the :file:`~./ipython/security` directory on the engine's host, where it will be found automatically. diff --git a/docs/source/parallel/parallel_security.txt b/docs/source/parallel/parallel_security.txt index abd876c..9112e48 100644 --- a/docs/source/parallel/parallel_security.txt +++ b/docs/source/parallel/parallel_security.txt @@ -52,7 +52,8 @@ When running the IPython kernel to perform a parallel computation, a user utilizes the IPython client to send Python commands and data through the IPython controller to the IPython engines, where those commands are executed and the data processed. The design of IPython ensures that the client is the -only access point for the capabilities of the engines. That is, the only way of addressing the engines is through a client. +only access point for the capabilities of the engines. That is, the only way +of addressing the engines is through a client. A user can utilize the client to instruct the IPython engines to execute arbitrary Python commands. These Python commands can include calls to the @@ -116,8 +117,8 @@ controller creates a number of FURLs for different purposes: to execute. Upon starting, the controller creates these different FURLS and writes them -files in the user-read-only directory :file:`$HOME/.ipython/security`. Thus, only the -user who starts the controller has access to the FURLs. +files in the user-read-only directory :file:`$HOME/.ipython/security`. Thus, +only the user who starts the controller has access to the FURLs. For an IPython client or engine to authenticate with a controller, it must present the appropriate FURL to the controller upon connecting. If the diff --git a/docs/source/parallel/parallel_task.txt b/docs/source/parallel/parallel_task.txt index 14d4565..6fb0ecd 100644 --- a/docs/source/parallel/parallel_task.txt +++ b/docs/source/parallel/parallel_task.txt @@ -4,9 +4,17 @@ The IPython task interface ========================== -The task interface to the controller presents the engines as a fault tolerant, dynamic load-balanced system or workers. Unlike the multiengine interface, in the task interface, the user have no direct access to individual engines. In some ways, this interface is simpler, but in other ways it is more powerful. - -Best of all the user can use both of these interfaces running at the same time to take advantage or both of their strengths. When the user can break up the user's work into segments that do not depend on previous execution, the task interface is ideal. But it also has more power and flexibility, allowing the user to guide the distribution of jobs, without having to assign tasks to engines explicitly. +The task interface to the controller presents the engines as a fault tolerant, +dynamic load-balanced system or workers. Unlike the multiengine interface, in +the task interface, the user have no direct access to individual engines. In +some ways, this interface is simpler, but in other ways it is more powerful. + +Best of all the user can use both of these interfaces running at the same time +to take advantage or both of their strengths. When the user can break up the +user's work into segments that do not depend on previous execution, the task +interface is ideal. But it also has more power and flexibility, allowing the +user to guide the distribution of jobs, without having to assign tasks to +engines explicitly. Starting the IPython controller and engines =========================================== @@ -44,12 +52,19 @@ constructor: Quick and easy parallelism ========================== -In many cases, you simply want to apply a Python function to a sequence of objects, but *in parallel*. Like the multiengine interface, the task interface provides two simple ways of accomplishing this: a parallel version of :func:`map` and ``@parallel`` function decorator. However, the verions in the task interface have one important difference: they are dynamically load balanced. Thus, if the execution time per item varies significantly, you should use the versions in the task interface. +In many cases, you simply want to apply a Python function to a sequence of +objects, but *in parallel*. Like the multiengine interface, the task interface +provides two simple ways of accomplishing this: a parallel version of +:func:`map` and ``@parallel`` function decorator. However, the verions in the +task interface have one important difference: they are dynamically load +balanced. Thus, if the execution time per item varies significantly, you +should use the versions in the task interface. Parallel map ------------ -The parallel :meth:`map` in the task interface is similar to that in the multiengine interface: +The parallel :meth:`map` in the task interface is similar to that in the +multiengine interface: .. sourcecode:: ipython @@ -63,7 +78,9 @@ The parallel :meth:`map` in the task interface is similar to that in the multien Parallel function decorator --------------------------- -Parallel functions are just like normal function, but they can be called on sequences and *in parallel*. The multiengine interface provides a decorator that turns any Python function into a parallel function: +Parallel functions are just like normal function, but they can be called on +sequences and *in parallel*. The multiengine interface provides a decorator +that turns any Python function into a parallel function: .. sourcecode:: ipython @@ -79,7 +96,9 @@ Parallel functions are just like normal function, but they can be called on sequ More details ============ -The :class:`TaskClient` has many more powerful features that allow quite a bit of flexibility in how tasks are defined and run. The next places to look are in the following classes: +The :class:`TaskClient` has many more powerful features that allow quite a bit +of flexibility in how tasks are defined and run. The next places to look are +in the following classes: * :class:`IPython.kernel.client.TaskClient` * :class:`IPython.kernel.client.StringTask` @@ -95,5 +114,7 @@ The following is an overview of how to use these classes together: 4. Use :meth:`TaskClient.get_task_result` to get the results of the tasks. -We are in the process of developing more detailed information about the task interface. For now, the docstrings of the :class:`TaskClient`, :class:`StringTask` and :class:`MapTask` classes should be consulted. +We are in the process of developing more detailed information about the task +interface. For now, the docstrings of the :class:`TaskClient`, +:class:`StringTask` and :class:`MapTask` classes should be consulted. diff --git a/docs/source/parallel/vision_beam_pattern.png b/docs/source/parallel/vision_beam_pattern.png deleted file mode 100644 index e00a01a37fc1cb9182c3f16f29434150c54a75c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 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 Fe*x%3>r(&# diff --git a/docs/source/parallel/vision_cpu_load.png b/docs/source/parallel/vision_cpu_load.png deleted file mode 100644 index 7d3148549c5f35fc17902d0f226a1128794f5ff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@k~6VLZP=Y9Y1hcisHK*m?ptr2`MW3iRWoIM$3tUz%VXoCoEt^PI=9Tsom3U2Nt7P?krBUL_|(!8AAfibvkUAp zyy-89-LI=Z5D*cNwArwhB)BHJmUQYNrt9e`iUt5j93O^|Kg4N=n5h8FoZTj9QAx>T z2(#OG9Jf(XGu$mR9oTy+3rYjHPnVaMnWMndY)7C#PmtYG05+Mn8lA3z)yveZ;Vuf?ZZd7SvVUP{~P7*~??o zRQnV{42T zbDl9|(;4=WeY)--{A-0oS592ba;V^`)wHIB^n}#Xkz1pFal|cNm#)hsqrMyT^4yO& z*laeQ?TrZYGlhGWAL5kPX;Qrh^ai5J74GE&3 zifY>f&RONJJ5`?_k^Y=-2KM!&eh%icpB$Bry)N1IiK(v+ywr`~nVTe^`OTDm@sU`S zKxUImbw`AkD#QfeL@_WVM1h(c;&(h3!cYx|&sL0BTMFj)7mf|h`&a7DqVaAFXC0eBnH1k2)S5_sX~;c2C^ul?DE^LstLk`xH+xkHqV(Di=sRh?C7N0t9>rt_gX-`2zTp49;4LD62;z4ba8CwVU@>cM+~vxx0s1NGqS>SLSu*)xIW z=W|fR%+ZK%eQclmHYgy3NXg>tGBWJ0^1vS9xl9S4NuSr?{X@U@ZsnCi==RB)je+V= z%gxQ$*H93MjakS}=+qffY&@rLQHoo&ioN3@^15{{;szPQsAqi*Bsw?hz8k!GF8rcg zOL1yec$`a2?>4N}1mnRalg(O_N^$_}Uc{Wx?$)4tv%qD0Bm;Je&bzLg_I0&FHp~4+ zb>YzL&%!ph?6SZGMOw+R;4>(fe{4bOX>Tjr?CaS2V(i3zmi+SyMrJX^?aP$WCIe;a z2bRwk(+qXKJ8sU_>-DZR<-S-!6Ej;%=Qk6qGhf~YH#-hqfM^&#LGVq8f^q1dhBYpA zh7L|TTWBY+YEYLE>N(HdA^X-+fpC3g`!;$U%bO6n(Ul7k^M|Ly>UY`Tr#>v>1j&Ln z`##z{Mv7EI8_wgV`qQedH}i$}*AN@lwQG5gpB|H*B^Y%p^G&_=>Y_7}w2u&Sa}vhOojzfP4P1PN?uHTeJvg~+0OlO<9U0I%;FW^xdX+EQ49gcv*`l5l_~h< zCA-r~TvjhXk=8YhInYC;ulFviniV75!CKr#mc27PM(wh`&`g$H$~RFt*(IzHPY`JU!JBX|I3bh$9nfrz~Yvw|6QU z`(n;@G2E6wM%Q+u16R+gsGo8IV!Zoct6%3)lF3Ez9O2a``3~F>MKw!X%`sCpdqqwL z5f7486W-Bjz%TD69^PUsnrO0_Yho~A4d3$GHF+XL|J3efsSag1PDk#{`Sf95x9^n< z3ok|cE?j>FP+Z`8esxOoxxZa|F%`G@NX{k$Cm8d- zj7HX`-$N(1K`5yJi=H9olP zcg$PsvRM)E?1w5zX1Alb*T9H_>AlAUm0&w#=?;D`u4m>p$tmBO%ym>{o6YTp_=GCY zWWa@a;Md@Nn`0oX(r@>+Iy860T4c^aBnRO#8j)R-QyLjNS8Rkn)x5AmMzh6iQ(-!) z3wz~doA}&Jl!W&=I#WezgMbioJ%K?u}+7Dw;Nt{$T2YZc7lBAAL%55w&GH`S6`gg zR({L*A_(mixtXoEztx0qqgdIDU<{m#@;$ne{>>DGsQftjsmwT-hL%ucm*4Lu=}Zt^ z&KwT>09+8-an*r)?t09Nd*haMhX~IG*pyz>d-@<#IA3XKWYt_{ObiAU{#Z(_qS1^; zIxrv1)C|QPVnVFe23f3mbbODJet8q|0+Cm-Yrg9NDS?FX$t{+R&mE2&pNhPyRohqY z*NYJ0I}B-7x)UCVyQrqLj-w>I9o}GdLT+$k@HLmA^3sJo-{{KtH*-ne<_z@d zpFZ6-fpS03{%C#?wwPE|iOc?Z$K75tG5_$9Q`tm4j!tN+<>aL6m%ymtjjzr3)&p}2 ziyjYije2F*eD}1rswf(ckhl1Ld9X#fHbC99YSWzXKuoR1M)4D?vorndLy#c& zGxBQO_u9w1nBFGC;OX6BqF|`gT8~7@USVP3;#?AI4x*)dxS|+gyglno{WS-)pDH6J zib(Wiz_j?NO)0vFybkqUgpR)Fl$10KTTD#5#u&n{t};hFtX+?Qv{z!h^8%LVogflR znqcjENC()0{ejMsAI+>Adz0KYA-j}ZvVFkWPO>sCl0%sy`Jhx-8F;dJCbbdK*NNQgbzbY_)$r#>JT?x+# ztM;Ryxt-79ZVA)W@EL`dEJ5^EoH^u3*elJIMoN4ZLQ6yDif4wuKMF;@P?4+&3==0a zDj1DMWE)kAay0Ik>(s_sB2tq4Da<|Yr6c^HnwB;d-!T)<&)^upF@-aQW;bRwiYwNl z@>zA*H4gpwQ_t=h_8Xn-=H}0grz?$rSU7D=KJD_=V-v*C+iXP@d^!k!c z7PD0bDqi*7Bqbwr|AN70<7s!u26>ci?`5}{^PMIP)=8~Av-^e%PIn3Ic`IQ@y4vIc zWlLSY8n#Xj{Y(S?27Y=GR^68Zn^M|3VWuLn+we*}fS+uW@*oB8aS?P})L|-ZCnAq# zVU-f8-1K2N72IQ_2p7wCwiUjxNv}u-#@YAKi%;PbT`>3#{xCeDc2(IfG^}}Vby$HW zKSwjaLT<^%)w5He>)FXJ*b&hlKdx1~&jqeC?n)aMbF+bzbM?uB-Z(+t|gN@NK>3bsExZx9e@Sr?w+;#a?xZ_S0N3me9^?0g<)YtU?1lxlqvM#zla^_9~gZ ziu$q>h2VU`)a;CFV*5pz=H+JgqnDZ@jBpxmj~$u0zU`YZTmIrJfc3)0=H_+)V*ljA z0RCEERdqmnsDjrMWW4ys;QDemX6^C(ILPCmN2Yq_#6B~9Pc*cYsM-qeE!-I{5%#-m$3WoN+Y;5D^BBSZ}KW$%1Bw1OSj$O$P%2Z*(Lv0ODw}AmlSZ1`Pl_ z28M_LfEj>b1Hg6fBaFe!wnDbu&x({ULxY19`s3{9x;)9GqeXd@i^n&QFXANLn0y@& z9J8eRblqsA>>w)~OQq4?e(^iMaPi=n20Q?ZrzkuqoW^Y?%AyHU&W}Fthy2DQ=t6P< zgs6DH!=ZEG{ee9bVZ&t$K`QK3wt$)T?0!N*0u7-hrIXuc@ePkfxDZH>7i!?hznWTa zyWUPN=Du+9A)CUD$qArAE^z+szi=ywn=d65`kB^f^y}|1O53Y%6!2TuU(gJA%vtOL zEmO!piNH4xL#x_{F!`<)HW>rE2Ato-_G|lOD*|^5jw<)ikBiR_X7&k~rj_&nc(+^t zK4DpTIh2+V;EGI4RFKv@$@95pFd1<7~GuXj5H6DH+ z^EhPil;}oxjzHP>W6{s-=yv7-nQGb$Mq@(x#JNvMp6DngYP&0StKBvwevJHxIu+33 zHyq-}7k{nbr*r?Uf>Vv%y3NfepFgW+PL^+e1cKd3q ziA@3s+P6KIkTCT%)}k49wvAN|pBTMV>8Ck3W*DFrF}a4RAO~-zfgW9MbA>v_1*rPL zkE_m_MK4b$AAE$5^mo$0PT`tEZs(qWOYu&z7l1yz2c7N5H#i^a?F4(Jjbz~}B;VuP z%#E!}5ZvxmNv#rj&u8@2HEMzw2W1phHz*LY97U=Tw zy=;NNJD81V5Nz7PT4m+Mt99S(p^P_iZZnGldn!dXHOFe3ksJp_#DFFUprssP_l6?Z zDV`Tzz%bk0o-AaGja+2S!v@6aQCZehwhWLgClA^{V~EP0CLyu9v$@h$ZV>HJukbuH zP?jqG9v_>KSmfE{WLsEfXZAAg4WMDb&lPJVSHCD<8f#GEDMX^JfL(894QrE}+)^)H z9)4b8xSc$;$@BVZU6c&Jh}+9<4cObe7z~mtIAj2D8IW<5PK0}(ilYM8x3IS2K+?!o z_a+Gmc~bQAoXMze9V`XCh4}kXb}!0ATG72f35_@F#c6sA+sxmRgRFVHk{bE^&0INi zC-&aG2VWfuf&**Pt``Q^o33`cPRc8qd*)q@ME9P0N7e$Bb30M3Un|TJrfKFp)?cj2 zQr-QaX+Te}OeLXMg6As`G5BI(WZ}Lv9-x0kjxgh$?QuI6QRAi^e0}nb4amcG312C) zTy^+;VBiErkg8eD317Zs<<~K0g#sW=U;+#dHYmTsJ}?}?>Z0Z%yH~r!gxU3WEHBTu z_g$-*bjKO#4WEa8=A9D`J&{!xO9z3rZtvH;gp0GzEC+EKbGkFz44tN;IERvAky#M(5!Q})I zDMh$v(_Pm#-~DkJTS*Jmm5)*G!5wmr?y*Flzfw2aGMbp>^cbj54AQGs0BIuJIxd$Z z-H@`g+{eIsHMf@7UHC_j>L}c*y0T=2FBt_Cz@?g|EB-C!!J0&`q4KdK^Vf&x9*O<64L}SfIo@5|&mE={DpB_O$h%5*1R4Rv%_6R+kFu;ay(4fTDTp`}m^U z68ydcJUbM2@O)#D00sao+TRMqWpMG_ykx87Jo0((*%zq_9->^nTmQM8D%ZeX8k__4Q>^9J@*h0L*iVG+!+6mPXd44dv)O zdZkNVP^BwYUA??1!bbW#4kwT}+@O3K6y9_F9^lY}ziapL9Yr1e!iJ0|8A<2e1Ey+` zW7sO0$5!aVI1?#Jb~r8LGrto`JIN3~)qpP~tiTzojY9A|!JP~mr=Y-%=IL);I$9R$ z=b9!Ca;kp?qf8ERSs)P=P$-v0eth zwmUB?y?Xm3D9FgKQ}GMdZckIw(~oIr8wV%fSIXBgYm>Qi_g3C%>IW8Wz!rd~SwKhXTRK>+}_WuX%+7DZ>T z)jMO8yQVgJoj5t7D$D_#$1h56*G-?e?_{MO74S7uU<0zTMGnA04^xu;WxtPO$QJgD z5{NJa&6`{(_9AqM?z0rX8)uQ%C3V7Wte?m^!{y}!ny~(ZTmJ&8-?3vBwnI!3$?Ebw z&OOFfDUr}>c1leCuT+-Nj0XT`q_>K^US!RUt7+SS9;HSa4JM1!Eqr4TuG(N?zjc#@ z6{ZdVEvd3fpvmv`FHALEk26yr*|o~y`sazdHmH}3kfpHj++t!>@E`+lnAblE6U)kj zlFVE9_%o9yYS)4zC0Mk{oWFeyd1G~#u~JOEHy^oHL}avA+t7{th+=EY^2vzh5t0tf zeA>V_KLDWMiX_QBP)at9`sbQfsRU(er>(JoKi%|oS8wD^j}R&L7}n=|SV+Zd4$qhF zFuTa*<6c^Qb-e+BzNGRD^9EU7p}92!z257LLa$iMeROXg@>R05Y^yyEOzI9lgBLww)tT zUis|nHrT?I(x~vp;VZim>)ivi_=$A#{$+LozVm!mO6_I*n@F1X@edpt8cIk^%q+;v zbb)+)QE#ZDH_@LNPUHt5KQcp3Ny(AvG$Vb^5h#vPiMkdYE}?(^b~qd?_>*D=yl&sX z0E!pEnb^qsW;92W?QnfCWN?`oSvkcWk?SeFKz>fzKu#bt2Zs{m9stmm@R0>HY0 zspH7*!o+`6;vo!FZI&kjJW>#_b!>DrGO5%k3V_itF)OoeWbRCit+2jbQ zPKe3<6)i7=P_@f{4HB^AAmIU-7^tp%5HD4fA||plQPrEI&7&fH5qkU0&iprmFVDW` zkl4rUk*TD8vjBjSHCG54DMkPCu4P_+Cr@kM}Rj6&q*d6^$ zdKJ5ZdhW|0m9&_0$`FP!53|TK3v*sl67uLz>UQLP4Fb7^9T{V%H9T}kgxI`}rnap+ z)1fX;($+Lu4GL71Ato*GrB%MJ&7LHr>z0Ouh{_$rRx~~ZFHF$$%Z}09?Q1gkbQtVd z3C5d@)pKGdC^DN+TY%gQ5-{8~bEJE{y4lp3+Gu;}Cb*5hBwxq_AcO9KB)9{i>N4kq$0G@GIBPT!ku5bHMIzT6}Fr5bmh zPHrUwF$0gfgusmxPMUY|qHYU{{X>tVn(@@fk&6~zvV-`vq;8dATmJyetM};0y9Zv~ z8BiYnRhA^gl;j@^`Rl(|5ja1?4`93DJggE+E(D}8Bdl%I_}#3xpi9x==x$g-x=4&* zrL|+BZvU?bFUml+>bSM)_WC?|n!~_`b4YjIapuy(%fO)V6=&g#JMwO&C5iPkF{apg<(xh{@f`inEyZ zL!Fd$jj`F{?!t6;(`OU$nh2re)h_U@-{~OdM-5O_YkYW_7dVi^Z{HZ`+a-Ql;tBSjZVawbt(%lNQ0^=`eKPgrj z40OcK%@qY(wol4`QN&fvia&5Ff#;%Bh?U6-(PKu!>d&3c``pLW$*G3lcNr$KUyMVe z`cdzVU9Y+6SSQRY9UT+1IrD^0f(_P5MegQ1Aj>h8| zm9_9$hww&VZT{NYqS$-SyiK0yXby;*)_AqQ$BS5&&k%k4x)66R4A-?Mj7Dm&3wz-) zQr&6olQkC?7vVmm`I>9X%W-|H{hJgilnYwKvn|O(v@`3qp2Tv+uU!(w_QRtKCpXMV zgM5kV%sh^LzlGeIF8|`phe*092*SD|~_XQSnQ&VD86_ShCI%3B`!r%$4 z-d=bpqCOM*c-QUWdnA=0=B*(TGEL|J@Q#p*6IFKx7tm2WlWc|Ydl9qaA9NINp7gLd3|cztk9?B=cr^ z%m;o)c9)IhMAGi230J=Wc*SxIWpN0fbolwPrsoMK&_Ig(s{iJIGaDCX%v`%I%+0+7 zO02#^3Y)d}f}opM!x~R~Ok#_ZZj1}lVVqqfKz@V}X+c(f>V(&6y;;<`6BmpKPizpXls%5X=kjZDF?r{XSIE7rY2wdRP+opb#_# zGJI-q<;pyN-L5U2uy8%mBCvO@wzgLKC12_oW@kXIVD{k_bYA zQUwJCjmx!Kkvf5vIBoPt_0#@=!(Vi#LG*`Oil#>4_$Tk#R=4|o&5idYCIF5a3;iCR zym1b{m8*7V{uGap+@XTY5BbK+m^jU(EK+FnAug_-(ndoKOzjTqJ9LzF4RY27sW0OXG@4jm<70I_pW%|}4(1$(M^_X4%U>f@0p|wN=p5toD zqR9@Gr@qzFs;e8oALHWuUiaw3<)LBwq;T~($~Q1YSi2m34llgGRk-r#Z7)inGpVs* zGRi?@Xs*2!(l#Z<)Uh{P@#~texkpdWDZtYDxRNQN8ZV}w-NbG(q4TlvU;zry?_y9~!^4!jk zkXq|<{GzDKpbQNn^V0@0$F-&L%vpuo;|?2*2OA2~9k~pFxEdc}iLpOD?W3yz9B;q} zJ-GL92!qpQT`%HLW}Mmsy6}e5z%)21IUz<``s;XXN2^&aBJC+mJZf(lYf@Vs9C8}aE^0Dy)m z_sE-T4kmSO%|vSH_)0i7M(!#BAhKw$K7KM?ASNE^OJiF-`UdGQQ23QS%^N~W0AUNgbt8Qqa?K{i1@)<;uL(2mc@}IP{SP1AnK=ZC=f`tpVu^Q>JRmK33@u zgP)gV!k%iQoC%dko#8EfO1>BU*P0e_D}<2R?c~k}YF$|Q=B9IDZec;m0Y{HJxhhYnMHew@jU|ES}D)bfEELn*#-3Mps*3F507Ty4C~0{)rDG# z{t%xlNSolHF7uJ1XvjOmu}W{uypp7xrkjN1mw6$RfxKt1IzH1Q0bB?ny0Lr=<=_ny4FDauaa* z2*rPutG|-+ti*ooJ~>snT`f7fL>J(X!sxkuYmfNmIM(f&UAB z$jSqxoz^yK1sLF*bBaLGyv0^l-_R_RH3$6kz7RB&pg{8A?-Y()S__u?UJ3Up`$ED4 zs>z0G&uF3hhUOX$9`yT_m41{8Au4iUl)YrSA5Gn%*j$`jG3ym7#?YN6?CQ{-F5_f5 zs`BjqJ$khZluZRiYP+R{HM03Teb6+xFuVQ_9lEQL$oowbspi&_dqvk?buvELz3Aqx z-|WhFB#bsiA&N*Tbs3j2^robub7Lu=a;o5jLGXvltw5A1nwHvb*yb9di_c3yGvIxP zCZN1`c5ecBlSQ_^=ie^pyOupiyNxss3IH9;7)E`H66dU2Z9(^OMX$S%*P)ke%>`?yaTdm^DK=f`qL)4rI`qLf6qUd=fif?-)dpZ zGbA{SP z3hAock(=w@#|1@re^#9~+nh)3vXp8*F&Xtg_t5M|kUMB;nMHJ-_f6ZI%B)8`e^k7v zAKlvsVN#@=Mli}i(6U3CSGd3AI`SE(1pYKd72^vy954rRqcyq*i!@K`YuB%j@r$Ztlc<+rwl5DBT7%~egQ<|_Q+kC z$&LMT4PgCY>bsK45?Kgyn#r9Cw-&Q2#_-mgPt`6vO%yX%M<~LV0t27vn8mX=_3{>K zXX4UCM!(FN1#8TvA^&XS|1TC7U+uqG-1$k0w|~N;Zy~sI=4g1uj}TzS+YSr< zNhhpSSVzErak#%vBL0&f{ugUI6!C)&TpZf(-*{l&k#yIilhjo2IsgbcIK2H7d*wJG_AtK7lMD8*gvmXA@SZwjL9zn&(+GRvQD4W4dLk)3|-9^eCgyOS4-ofNHhGa!zsk$>wG<=%sZN zr}vxiLlUt&`fc#_ESiXQ;qK51P(@GJp?~|;YXgF1hk2?|!qtAYHcjXLflpOcgG_&u z+_i@uyBh>AoGDJ&8XXYLoNv8^T#gZubg;HzFv}!-gwmZzz_X|S%So%+DHLH_TC+Ls zXtF{qa9i1=Ix^Vp+`-!fbdp5@(TxHeej9Nxj!w@=92gW4&du!efCwDNzL^_meMb`^GSutUCo%j~A|o5&T_1?6|1 zU{+g_51tp1V;eqP>(DpD3d-2}*RBwsJT!>36IRgrkoe_fBD>83ovN6_tu?HexI*-zeN!sAmaCXM-Rz{E+>C9gON%sO~Fq`b2c*m!RMP~ zq_IidYfWKL)<9-=(S1U?X_$h8{s~x2_LIq(H3GlP2 zxr~S!Mxn_#A;Sv`M3)^l8p>_-!}gTNjsnI_#OfAp<<4tKvGu*?{RiM>s!6;YyDmyf zeMHz*1j3ESn)qUN_I_WT&ON@LsV6oGc&>KTF@aBFw{msNlPWlgh-s1g@L!IY)v!97 zju+EOijN!(IShcmrNQl4(;()$}K?yGHXL(u)Q3F+3OVISRE`3>oiiPiD`$*ET>j~`j!M(8F z>E}ZR!bUUh)u%^y;|d`W&X@GYa2@<2Jjl%;3<7j{YisLMDo)GUhFT&i^v7}Es{*-1|P7AWADyDjcvqAoGmxew3iQP-X0;4O&B!Q~JdLYuT;Mz5Rl`taD>P156 zzQ7=D8ZR%e=@0tsT%tKT!a&P0`1;0fl5Ak7ey>Xn3bpZdL2$_0+@lCPIW(Zm<6yPO zIzwB0e(a?h$o;Ly&2Nkh!E>&+pb16n?x(RGQlK0=vnXIInaOAA<$98JUOqPsFU+m& z^Qb+UikQ>Cx0$NfhgiO(GXNcIwc0aElteEhprtAUbMUrj-SIaO7ch{H4v*(J0;bVf zU0GFifNo!P-`jiM+GGmwF+TIOS@SFQFk4v!fgYO=zs*#ROE?};_!axnq3%iGUTx^H z45Se|?d;>qrleXmtFJ(u6Db7B`*#+Sbt_&%Td5AOoG!WpdoOfR`>SPRG~fR9>#xR_ zH;~|UBmd>mNB;xdC>{9sQjgpZVTqa8@v1yfS_&j_8~qwAm;W(@PJ<%1N{b8`hdCMI zX6>W3eoI1KE-cz7$eRavN4yB&3<6*0cx~|jd-18Pc%J1UQW8VJe!~HCXs6i5~U1#yl z3QEET9(%tuE-M>ppe$M5t11eV*?kzqhx1ZXbub^7=<@yAfR|cpdYhE*02PSt9%F@u zI+>dPRb>YHuGA77c2+gE{;VH;dgq4#{L1JkZR8pxU_YA!UE%fvwN4W9+f+Q(X@&6X zBqSDW96X)M@mcEmybBEPkt!ED(0hXmaES`PvpkVW^i-4fu%R7`k@q&#L*d{p)>3iA z{M)gtUMZ&2>p@X}Q8IaDA0MvfptU4AB)YpDy`jS)elMgu|HT>cxM`{f^QWx2CWS;T zV#OLF;Wm~a7I+1C8EJi&qR@euus~WXd}*jqdikZuStiD2(YlNL(!>j3zOSK#FpQFB z)%H;7YT2O+4l&9X&AAxv*r9>s37(-u@CEwNRRQq;eAFKJ5dE_pyfFbGAI-UmW1(UZ zf13DQ2J_F2NbXa9mqKoyBR-q{$UzgNQA%Tj1@z0^78a}kgEm)sdsX!FQNyyQGK`9S z!Qm=*nyRX7jm-90ZqXx^6^Q;{50*2rH4$4E7kU=vY-|M{3Kn{D3^sK1i~lee;CYGM zzn&@1H7#Z@7#t-spHzqT)^I+vs`aq8=^1y`VElbvP+s{VZiGMM8da2_EwCr?q8sG0 zhjAzONc?}9E0fogmGxKHV;p5P4*W0yRKI84bn;=Q)E+UvnB_7>^3W6URLP$>a;QNm z<6oe1s3MqW8ngw@Zv2e&{AU{<)#!;1cvOt>E~CHdVcxu<(T-LdpOsLBs|}R-Z<-p; ziWe6a2>6S4I@FSX?5bLpHTO(dy<=_`-KDcv=%ZnG9w zS**YNhyIPfEYfX6$g+ygt6>z?vTT3t7u5{CD*r97Cd63(wj~>P?s4w5bW9{#8FG(k z*{w=1&NjLp zr>1!NxX+be`gG#KZ$lloM=`>gzhOk&km|V1Wd{#H!$Q^S`5UfaeSaiHi472W+2f&o zJ|rX$9PXSe5eG3p9OwEz zvraMb2vqZ~8{&I5RGw;MVRb)1SJcy`tK8~?U?tKc{}@TOrc=h0mONotWnW-RL9P@4 zo})GzBX3gA+=QB@#Y!SqtcR&N*{3$Cz`&aM3{0uf6p>lhXB&6}(ea_AQ7Z%#E%|B2 znCS10%voIJi3Ix6_MR8!ep8gzeH^UOsmFV`m{D~tN_%cefeo1RZF}gQ@;?2@8+kDY zaVsNr6g(=@NkYDH&&e?DKK*P(H=st$Bt4LT|6vYYNNqb=lb8~+ctXD2Z&cuU`?ppg zwj&Z=ZWVd+H>O+mA2PeekP!NK(|;VrQ0BRJNYwT2(;}Cc5i4KznC)$u|H3(2Alp@R zz<>^VE{}5G^6p9=?;}48?93|KDGtXDkf#POGn zwZR;q=^)f&)s{ZnXYo#)Rs#KCp754vWO4IcVP<<0bHCNwr09DP-nJMM&7CG#UXASDE_N7dDSkzNh>;i3Qz@eoou;$ChAaeM1dBd+=H zntNttudz9=${>rL3zhSI;@1)Uwk9f$d_+h#6Y&YrwDC?Ho$cvM$3VJ=<+r4tbaidy zG7$Qs{HcZmlrwaHFNE=*(D$4KPFX&Sou(BsOavuX%jk^K={brCB^3?MXb>e0{k;|z zhB$S0s(@S9u5*}YO37oB03G%>zL8~f=$^VzMmPuj!qZ|9y z!&14m{_t|}_@ZDNq6*{a!FVb!RAdCZ_`3r61gdEUfBW$HlaG_AaljC&5#`)Nom#wJ zGb8OZ-g)gbzIanxQ$;Y&J9mj4;sJc-!3|2WI@eC3py(1&ffK6xF`HPzV{?>0 z$L&2!G^ikkeBAxM=;}AeDoXPA)og^>z~1@;aCRebKwWP#(1%>~87i(N6bHd49&esk4%XM({s9q6jE+~_4IrUASm85hn^;_5-A0Ja;Fz~qJCF)K@S3TpHg)~-@gZ_cXg3#sQBIJqXcLYF;p zAt9&x=I(W?vx!=fWWG844=ibR*|qfhHN{GIVyK_le{o-0K?7*-)#|tn+SMWpEiKib zx^F*R*MCNnWPj}47S(@D0Q^!Gb!s(^D^&4jZ$h7N+x6VC-v2Fm z6{^25{Vz@epN_lEaK$z>FD3G<$)8y2YcwsK&u!(cCx1ut@UG|3$H2VaYF-D8-*#@+ zsX5CMpr;>FN^nGEX!#0!P|f9~P?Dbh+&1cwPVbAX+bo+AS`-np@8{^Hp zGI;a(zvTs%&>latw&odWSn*f%uqhlu<+1uyE1G-pQom(S;h3)cwYYjEr`xY+4> zJByp02q7;Hb8T(yjB`zi>*1={Ra|ky7jyKe<9=SnolokvvWY;KhFJpCs9b`-{}rX`Ozd?CHu~e{IP9eg zwv-v?g|OU{(>ct2xX!!T=e+uMb6b;-t)6J{bP^F`=bt7@h6c?vTrv83qT1EwbH(Qh zs&Dhyj3Chid zXPX!33$prRa9b0Y;L9?+%CFP2X?=!n4ZY3Mq3hi z{zy?$`H-}>0Y9Ju^R>hU8jiHy-4tt+by+ zkg@}3;o%$pwZoFS17-#UJ~Hw?Qco}B;yz@uxi`-bd*Ic&eNJwsG-egrmm(v9pwjYh zWcb;Q4AUQd)oRled4dXVw*d3oy0N2zUu$1!Lg%RDaBeY+%hsJ|{qOmCE?Z_5aU;C> z=!_%#rZPJ7WmCTFr>6=xZ&DfyX*~Qx)rtJfqM@SHi4Gss-kG&1y|-=}-En2x=Ki|fBj8+em%vZkk9078eCtCas+ULIvO zo8MNIO5h11tV>T}sv!1|4#0Bkce%K=rITXWmuAw;|VIy0<&YG zLq}z^pSsZ|32POmzP5k&s1xg9x0158aCN{xAIb>60RWe8Guk#4pa^YGqp{Bh%|$Ob zV*9-mnH*5ovhR$|XKmWzokbZ}v-k{k48R*? z&kxHmDTIs)0OEBs^4PSoGw0DMnGVFX)fk&MCWz`1e`KS%j=s)h$_LO!AUVeNuy6Nc z&y$}r#5>ite3%O0^7;P_$^XZBC2{RU8)@kbJn9FlDR*^;v!oJFt0Mm903gLkPXd?r z&rgkmobr7bn~M1M_k5K6&wRnt;fMz(MK>qa^*tfkPyQk2eC@|{HZGt<3iS6nZi_=Qr6WI&b;yY*N8+}ldQ#sTK3 zU$W0Fx~?Riz@A+J7D$4log! z(uh~JSPhc>Z!sp3=JT$%{ygWxi5upH9)~OMiIfT@)m(7?v8y0M&fsUzP>;E@Bj=gDIUbpSs6rnbX2iw`FWXLlGP?WP;!7vr+HQn|$R zl%)T$8#?cLL2?$Q=j3DlqcnY8Lh(lPAH31RL$pHb$3i8&`#o6&qBS!x=89iaOMArq zpJ92B*9nia_U9T)qv~?US#)booL_*>{>uPlOIB2>y+T zxh+{m4JoVGX&lWUGJiXlgN-@ABE)ZN1`3Lnm4wS*5{7S2xa(Rj6fruA@V{>|xRXiq zqm8<^?*EG2awJet;VhVGu#Oq?J~tU1uFv>uPrKo6^5LgKx;TIDqBgYv4Uxj#YcYDp zYWhCK>)%Leol_`l2M&+g|I}2tPz(AdPGb*4+h`=saZX9755ptUZizUCb?Zo8Jo%}B z2=RWTQB>7vDaSKmoK0;@l(DxX-DZZn%Go4V~YH~NcnDT;Dh7pHQMA@9HIUoc|TQjp}IA*vs;n(TD>m` z#rft=JFy22FJN#Nb~}U90yaqFthw{RDdCC5@Vt?&)}=iNH(Pd7M%}_In$KDnZFF|| zgrcMB)wF!WjDkyhnhn}bXt2t3i;JbKUwxy0o?M`I?lh@j$CF}fp%UsA8HUhR^hV#^84vfo^Y zNBSW^qlTOz(yOK!RzsdXeS|F2C9iFVBR*>)f8{Oef@%SJU;9zMAEP%b6X3{>aN2Sp Qe+S4tRF*E1eD3@I0aS)fzW@LL diff --git a/docs/source/parallel/visionhpc.txt b/docs/source/parallel/visionhpc.txt deleted file mode 100644 index 7a6b15f..0000000 --- a/docs/source/parallel/visionhpc.txt +++ /dev/null @@ -1,250 +0,0 @@ -================================== - IPython/Vision Beam Pattern Demo -================================== - -.. note:: - - This page has not been updated to reflect the recent work on ipcluster. - This work makes it much easier to use IPython on a cluster. - -Installing and testing IPython at OSC systems -============================================= - -All components were installed from source and I have my environment set up to -include ~/usr/local in my various necessary paths ($PATH, $PYTHONPATH, etc). -Other than a slow filesystem for unpacking tarballs, the install went without a -hitch. For each needed component, I just downloaded the source tarball, -unpacked it via:: - - tar xzf (or xjf if it's bz2) filename.tar.{gz,bz2} - -and then installed them (including IPython itself) with:: - - cd dirname/ # path to unpacked tarball - python setup.py install --prefix=~/usr/local/ - -The components I installed are listed below. For each one I give the main -project link as well as a direct one to the file I actually dowloaded and used. - -- nose, used for testing: -http://somethingaboutorange.com/mrl/projects/nose/ -http://somethingaboutorange.com/mrl/projects/nose/nose-0.10.3.tar.gz - -- Zope interface, used to declare interfaces in twisted and ipython. Note: -you must get this from the page linked below and not fro the defaul -one(http://www.zope.org/Products/ZopeInterface) because the latter has an -older version, it hasn't been updated in a long time. This pypi link has -the current release (3.4.1 as of this writing): -http://pypi.python.org/pypi/zope.interface -http://pypi.python.org/packages/source/z/zope.interface/zope.interface-3.4.1.tar.gz - -- pyopenssl, security layer used by foolscap. Note: version 0.7 *must* be -used: -http://sourceforge.net/projects/pyopenssl/ -http://downloads.sourceforge.net/pyopenssl/pyOpenSSL-0.6.tar.gz?modtime=1212595285&big_mirror=0 - - -- Twisted, used for all networking: -http://twistedmatrix.com/trac/wiki/Downloads -http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2 - -- Foolscap, used for managing connections securely: -http://foolscap.lothar.com/trac -http://foolscap.lothar.com/releases/foolscap-0.3.1.tar.gz - - -- IPython itself: -http://ipython.scipy.org/ -http://ipython.scipy.org/dist/ipython-0.9.1.tar.gz - - -I then ran the ipython test suite via:: - - iptest -vv - -and it passed with only:: - - ====================================================================== - ERROR: testGetResult_2 - ---------------------------------------------------------------------- - DirtyReactorAggregateError: Reactor was unclean. - Selectables: - - - ---------------------------------------------------------------------- - Ran 419 tests in 33.971s - - FAILED (SKIP=4, errors=1) - -In three more runs of the test suite I was able to reproduce this error -sometimes but not always; for now I think we can move on but we need to -investigate further. Especially if we start seeing problems in real use (the -test suite stresses the networking layer in particular ways that aren't -necessarily typical of normal use). - -Next, I started an 8-engine cluster via:: - - perez@opt-login01[~]> ipcluster -n 8 - Starting controller: Controller PID: 30845 - ^X Starting engines: Engines PIDs: [30846, 30847, 30848, 30849, - 30850, 30851, 30852, 30853] - Log files: /home/perez/.ipython/log/ipcluster-30845-* - - Your cluster is up and running. - - [... etc] - -and in a separate ipython session checked that the cluster is running and I can -access all the engines:: - - 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] - -and run trivial code in them (after importing the ``random`` module in all -engines):: - - In [11]: mec.execute("x=random.randint(0,10)") - Out[11]: - - [0] In [3]: x=random.randint(0,10) - [1] In [3]: x=random.randint(0,10) - [2] In [3]: x=random.randint(0,10) - [3] In [3]: x=random.randint(0,10) - [4] In [3]: x=random.randint(0,10) - [5] In [3]: x=random.randint(0,10) - [6] In [3]: x=random.randint(0,10) - [7] In [3]: x=random.randint(0,10) - - In [12]: mec.pull('x') - Out[12]: [10, 0, 8, 10, 2, 9, 10, 7] - - -We'll continue conducting more complex tests later, including instaling Vision -locally and running the beam demo. - - -Michel's original instructions -============================== - -I got a Vision network that reproduces the beam pattern demo working: - -.. image:: vision_beam_pattern.png - :width: 400 - :target: vision_beam_pattern.png - :align: center - - -I created a package called beamPattern that provides the function run() in its -__init__.py file. - -A subpackage beamPattern/VisionInterface provides Vision nodes for: - -- computing Elevation and Azimuth from a 3D vector - -- Reading .mat files - -- taking the results gathered from the engines and creating the output that a - single engine would have had produced - -The Mec node connect to a controller. In my network it was local but an furl -can be specified to connect to a remote controller. - -The PRun Func node is from the IPython library of nodes. the import statement -is used to get the run function from the beamPattern package and bu puting -"run" in the function entry of this node we push this function to the engines. -In addition to the node will create input ports for all arguments of the -function being pushed (i.e. the run function) - -The second input port on PRun Fun take an integer specifying the rank of the -argument we want to scatter. All other arguments will be pushed to the engines. - -The ElevAzim node has a 3D vector widget and computes the El And Az values -which are passed into the PRun Fun node through the ports created -automatically. The Mat node allows to select the .mat file, reads it and passed -the data to the locdata port created automatically on PRun Func - -The calculation is executed in parallel, and the results are gathered and -output. Instead of having a list of 3 vectors we nd up with a list of n*3 -vectors where n is the number of engines. unpackDectorResults will turn it into -a list of 3. We then plot x, y, and 10*log10(z) - - -Installation ------------- - -- inflate beamPattern into the site-packages directory for the MGL tools. - -- place the appended IPythonNodes.py and StandardNodes.py into the Vision - package of the MGL tools. - -- place the appended items.py in the NetworkEditor package of the MGL tools - -- run vision for the network beamPat5_net.py:: - - vision beamPat5_net.py - -Once the network is running, you can: - -- double click on the MEC node and either use an emptty string for the furl to - connect to a local engine or cut and paste the furl to the engine you want to - use - -- click on the yellow lighting bold to run the network. - -- Try modifying the MAT file or change the Vector used top compute elevation - and Azimut. - - -Fernando's notes -================ - -- I had to install IPython and all its dependencies for the python used by the - MGL tools. - -- Then I had to install scipy 0.6.0 for it, since the nodes needed Scipy. To - do this I sourced the mglenv.sh script and then ran:: - - python setup.py install --prefix=~/usr/opt/mgl - - -Using PBS -========= - -The following PBS script can be used to start the engines:: - - #PBS -N bgranger-ipython - #PBS -j oe - #PBS -l walltime=00:10:00 - #PBS -l nodes=4:ppn=4 - - cd $PBS_O_WORKDIR - export PATH=$HOME/usr/local/bin - export PYTHONPATH=$HOME/usr/local/lib/python2.4/site-packages - /usr/local/bin/mpiexec -n 16 ipengine - - -If this file is called ``ipython_pbs.sh``, then the in one login windows -(i.e. on the head-node -- ``opt-login01.osc.edu``), run ``ipcontroller``. In -another login window on the same node, run the above script:: - - qsub ipython_pbs.sh - -If you look at the first window, you will see some diagnostic output -from ipcontroller. You can then get the furl from your own -``~/.ipython/security`` directory and then connect to it remotely. - -You might need to set up an SSH tunnel, however; if this doesn't work as -advertised:: - - ssh -L 10115:localhost:10105 bic - - -Links to other resources -======================== - -- http://www.osc.edu/~unpingco/glenn_NewLynx2_Demo.avi -