##// END OF EJS Templates
Merge pull request #564 from takluyver/docs--args...
Thomas -
r4200:2952bd3b merge
parent child Browse files
Show More
@@ -50,7 +50,7 to your configuration file::
50 'myextension'
50 'myextension'
51 ]
51 ]
52
52
53 To load that same extension at runtime, use the ``%load_ext`` magic::
53 To load that same extension at runtime, use the ``%load_ext`` magic:
54
54
55 .. sourcecode:: ipython
55 .. sourcecode:: ipython
56
56
@@ -336,7 +336,7 Let's start by showing how a profile is used:
336
336
337 .. code-block:: bash
337 .. code-block:: bash
338
338
339 $ ipython profile=sympy
339 $ ipython --profile=sympy
340
340
341 This tells the :command:`ipython` command line program to get its configuration
341 This tells the :command:`ipython` command line program to get its configuration
342 from the "sympy" profile. The file names for various profiles do not change. The
342 from the "sympy" profile. The file names for various profiles do not change. The
@@ -350,7 +350,7 The general pattern is this: simply create a new profile with:
350 ipython profile create <name>
350 ipython profile create <name>
351
351
352 which adds a directory called ``profile_<name>`` to your IPython directory. Then
352 which adds a directory called ``profile_<name>`` to your IPython directory. Then
353 you can load this profile by adding ``profile=<name>`` to your command line
353 you can load this profile by adding ``--profile=<name>`` to your command line
354 options. Profiles are supported by all IPython applications.
354 options. Profiles are supported by all IPython applications.
355
355
356 IPython ships with some sample profiles in :file:`IPython/config/profile`. If
356 IPython ships with some sample profiles in :file:`IPython/config/profile`. If
@@ -374,7 +374,7 object. Values are assigned in much the same way as in a config file:
374
374
375 .. code-block:: bash
375 .. code-block:: bash
376
376
377 $> ipython InteractiveShell.use_readline=False BaseIPythonApplication.profile='myprofile'
377 $> ipython --InteractiveShell.use_readline=False --BaseIPythonApplication.profile='myprofile'
378
378
379 Is the same as adding:
379 Is the same as adding:
380
380
@@ -394,9 +394,9 used traits, so you don't have to specify the whole class name. For these **alia
394
394
395 .. code-block:: bash
395 .. code-block:: bash
396
396
397 $> ipython profile='myprofile'
397 $> ipython --profile='myprofile'
398 # is equivalent to
398 # is equivalent to
399 $> ipython BaseIPythonApplication.profile='myprofile'
399 $> ipython --BaseIPythonApplication.profile='myprofile'
400
400
401 Flags
401 Flags
402 -----
402 -----
@@ -411,11 +411,11 For instance:
411
411
412 $> ipcontroller --debug
412 $> ipcontroller --debug
413 # is equivalent to
413 # is equivalent to
414 $> ipcontroller Application.log_level=DEBUG
414 $> ipcontroller --Application.log_level=DEBUG
415 # and
415 # and
416 $> ipython --pylab
416 $> ipython --pylab
417 # is equivalent to
417 # is equivalent to
418 $> ipython pylab=auto
418 $> ipython --pylab=auto
419
419
420 Subcommands
420 Subcommands
421 -----------
421 -----------
@@ -427,14 +427,14 Some IPython applications have **subcommands**. Subcommands are modeled after
427
427
428 .. code-block:: bash
428 .. code-block:: bash
429
429
430 $> ipython qtconsole profile=myprofile
430 $> ipython qtconsole --profile=myprofile
431
431
432 and :command:`ipcluster` is simply a wrapper for its various subcommands (start,
432 and :command:`ipcluster` is simply a wrapper for its various subcommands (start,
433 stop, engines).
433 stop, engines).
434
434
435 .. code-block:: bash
435 .. code-block:: bash
436
436
437 $> ipcluster start profile=myprofile n=4
437 $> ipcluster start --profile=myprofile --n=4
438
438
439
439
440 To see a list of the available aliases, flags, and subcommands for an IPython application, simply pass ``-h`` or ``--help``. And to see the full list of configurable options (*very* long), pass ``--help-all``.
440 To see a list of the available aliases, flags, and subcommands for an IPython application, simply pass ``-h`` or ``--help``. And to see the full list of configurable options (*very* long), pass ``--help-all``.
@@ -349,7 +349,8 We basically need to be able to test the following types of code:
349 Nose will pick them up as long as they conform to the (flexible) conventions
349 Nose will pick them up as long as they conform to the (flexible) conventions
350 used by nose to recognize tests.
350 used by nose to recognize tests.
351
351
352 2. Python files containing doctests. Here, we have two possibilities:
352 2. Python files containing doctests. Here, we have two possibilities:
353
353 - The prompts are the usual ``>>>`` and the input is pure Python.
354 - The prompts are the usual ``>>>`` and the input is pure Python.
354 - The prompts are of the form ``In [1]:`` and the input can contain extended
355 - The prompts are of the form ``In [1]:`` and the input can contain extended
355 IPython expressions.
356 IPython expressions.
@@ -361,6 +362,7 We basically need to be able to test the following types of code:
361
362
362 3. ReStructuredText files that contain code blocks. For this type of file, we
363 3. ReStructuredText files that contain code blocks. For this type of file, we
363 have three distinct possibilities for the code blocks:
364 have three distinct possibilities for the code blocks:
365
364 - They use ``>>>`` prompts.
366 - They use ``>>>`` prompts.
365 - They use ``In [1]:`` prompts.
367 - They use ``In [1]:`` prompts.
366 - They are standalone blocks of pure Python code without any prompts.
368 - They are standalone blocks of pure Python code without any prompts.
@@ -20,7 +20,7 configurable.
20 ``%loadpy``
20 ``%loadpy``
21 ===========
21 ===========
22
22
23 The ``%loadpy`` magic has been added, just for the GUI frontend. It takes any python
23 The new ``%loadpy`` magic takes any python
24 script (must end in '.py'), and pastes its contents as your next input, so you can edit it
24 script (must end in '.py'), and pastes its contents as your next input, so you can edit it
25 before executing. The script may be on your machine, but you can also specify a url, and
25 before executing. The script may be on your machine, but you can also specify a url, and
26 it will download the script from the web. This is particularly useful for playing with
26 it will download the script from the web. This is particularly useful for playing with
@@ -28,8 +28,7 examples from documentation, such as matplotlib.
28
28
29 .. sourcecode:: ipython
29 .. sourcecode:: ipython
30
30
31 In [6]: %loadpy
31 In [6]: %loadpy http://matplotlib.sourceforge.net/plot_directive/mpl_examples/mplot3d/contour3d_demo.py
32 http://matplotlib.sourceforge.net/plot_directive/mpl_examples/mplot3d/contour3d_demo.py
33
32
34 In [7]: from mpl_toolkits.mplot3d import axes3d
33 In [7]: from mpl_toolkits.mplot3d import axes3d
35 ...: import matplotlib.pyplot as plt
34 ...: import matplotlib.pyplot as plt
@@ -64,12 +63,13 them in your document. This is especially useful for saving_ your work.
64
63
65 .. _inline:
64 .. _inline:
66
65
67 ``pylab=inline``
66 ``--pylab=inline``
68 ******************
67 ******************
69
68
70 If you want to have all of your figures embedded in your session, instead of calling
69 If you want to have all of your figures embedded in your session, instead of calling
71 :func:`pastefig`, you can specify ``pylab=inline``, and each time you make a plot, it
70 :func:`pastefig`, you can specify ``--pylab=inline`` when you start the console,
72 will show up in your document, as if you had called :func:`pastefig`.
71 and each time you make a plot, it will show up in your document, as if you had
72 called :func:`pastefig`.
73
73
74
74
75 .. _saving:
75 .. _saving:
@@ -116,7 +116,7 if unspecified, will be guessed based on the chosen style. Similarly, there are
116 styles associated with each ``colors`` option.
116 styles associated with each ``colors`` option.
117
117
118
118
119 Screenshot of ``ipython qtconsole colors=linux``, which uses the 'monokai' theme by
119 Screenshot of ``ipython qtconsole --colors=linux``, which uses the 'monokai' theme by
120 default:
120 default:
121
121
122 .. image:: figs/colors_dark.png
122 .. image:: figs/colors_dark.png
@@ -147,7 +147,7 Fonts
147 The QtConsole has configurable via the ConsoleWidget. To change these, set the ``font_family``
147 The QtConsole has configurable via the ConsoleWidget. To change these, set the ``font_family``
148 or ``font_size`` traits of the ConsoleWidget. For instance, to use 9pt Anonymous Pro::
148 or ``font_size`` traits of the ConsoleWidget. For instance, to use 9pt Anonymous Pro::
149
149
150 $> ipython qtconsole ConsoleWidget.font_family="Anonymous Pro" ConsoleWidget.font_size=9
150 $> ipython qtconsole --ConsoleWidget.font_family="Anonymous Pro" --ConsoleWidget.font_size=9
151
151
152 Process Management
152 Process Management
153 ==================
153 ==================
@@ -167,7 +167,7 do not have to all be qt frontends - any IPython frontend can connect and run co
167 When you start ipython qtconsole, there will be an output line, like::
167 When you start ipython qtconsole, there will be an output line, like::
168
168
169 To connect another client to this kernel, use:
169 To connect another client to this kernel, use:
170 --external shell=62109 iopub=62110 stdin=62111 hb=62112
170 --external --shell=62109 --iopub=62110 --stdin=62111 --hb=62112
171
171
172 Other frontends can connect to your kernel, and share in the execution. This is great for
172 Other frontends can connect to your kernel, and share in the execution. This is great for
173 collaboration. The `-e` flag is for 'external'. Starting other consoles with that flag
173 collaboration. The `-e` flag is for 'external'. Starting other consoles with that flag
@@ -178,7 +178,7 By default (for security reasons), the kernel only listens on localhost, so you
178 connect multiple frontends to the kernel from your local machine. You can specify to
178 connect multiple frontends to the kernel from your local machine. You can specify to
179 listen on an external interface by specifying the ``ip`` argument::
179 listen on an external interface by specifying the ``ip`` argument::
180
180
181 $> ipython qtconsole ip=192.168.1.123
181 $> ipython qtconsole --ip=192.168.1.123
182
182
183 If you specify the ip as 0.0.0.0, that refers to all interfaces, so any computer that can
183 If you specify the ip as 0.0.0.0, that refers to all interfaces, so any computer that can
184 see yours can connect to the kernel.
184 see yours can connect to the kernel.
@@ -35,7 +35,7 version 0.11, these have been removed. Please see the new ``%gui``
35 magic command or :ref:`this section <gui_support>` for details on the new
35 magic command or :ref:`this section <gui_support>` for details on the new
36 interface, or specify the gui at the commandline::
36 interface, or specify the gui at the commandline::
37
37
38 $ ipython gui=qt
38 $ ipython --gui=qt
39
39
40
40
41 Regular Options
41 Regular Options
@@ -59,7 +59,7 All options with a [no] prepended can be specified in negated form
59 See :ref:`Matplotlib support <matplotlib_support>`
59 See :ref:`Matplotlib support <matplotlib_support>`
60 for more details.
60 for more details.
61
61
62 ``autocall=<val>``
62 ``--autocall=<val>``
63 Make IPython automatically call any callable object even if you
63 Make IPython automatically call any callable object even if you
64 didn't type explicit parentheses. For example, 'str 43' becomes
64 didn't type explicit parentheses. For example, 'str 43' becomes
65 'str(43)' automatically. The value can be '0' to disable the feature,
65 'str(43)' automatically. The value can be '0' to disable the feature,
@@ -83,11 +83,11 All options with a [no] prepended can be specified in negated form
83 ``--[no-]banner``
83 ``--[no-]banner``
84 Print the initial information banner (default on).
84 Print the initial information banner (default on).
85
85
86 ``c=<command>``
86 ``--c=<command>``
87 execute the given command string. This is similar to the -c
87 execute the given command string. This is similar to the -c
88 option in the normal Python interpreter.
88 option in the normal Python interpreter.
89
89
90 ``cache_size=<n>``
90 ``--cache_size=<n>``
91 size of the output cache (maximum number of entries to hold in
91 size of the output cache (maximum number of entries to hold in
92 memory). The default is 1000, you can change it permanently in your
92 memory). The default is 1000, you can change it permanently in your
93 config file. Setting it to 0 completely disables the caching system,
93 config file. Setting it to 0 completely disables the caching system,
@@ -100,7 +100,7 All options with a [no] prepended can be specified in negated form
100 Gives IPython a similar feel to the classic Python
100 Gives IPython a similar feel to the classic Python
101 prompt.
101 prompt.
102
102
103 ``colors=<scheme>``
103 ``--colors=<scheme>``
104 Color scheme for prompts and exception reporting. Currently
104 Color scheme for prompts and exception reporting. Currently
105 implemented: NoColor, Linux and LightBG.
105 implemented: NoColor, Linux and LightBG.
106
106
@@ -135,7 +135,7 All options with a [no] prepended can be specified in negated form
135 feature is off by default [which means that you have both
135 feature is off by default [which means that you have both
136 normal reload() and dreload()].
136 normal reload() and dreload()].
137
137
138 ``editor=<name>``
138 ``--editor=<name>``
139 Which editor to use with the %edit command. By default,
139 Which editor to use with the %edit command. By default,
140 IPython will honor your EDITOR environment variable (if not
140 IPython will honor your EDITOR environment variable (if not
141 set, vi is the Unix default and notepad the Windows one).
141 set, vi is the Unix default and notepad the Windows one).
@@ -144,12 +144,12 All options with a [no] prepended can be specified in negated form
144 small, lightweight editor here (in case your default EDITOR is
144 small, lightweight editor here (in case your default EDITOR is
145 something like Emacs).
145 something like Emacs).
146
146
147 ``ipython_dir=<name>``
147 ``--ipython_dir=<name>``
148 name of your IPython configuration directory IPYTHON_DIR. This
148 name of your IPython configuration directory IPYTHON_DIR. This
149 can also be specified through the environment variable
149 can also be specified through the environment variable
150 IPYTHON_DIR.
150 IPYTHON_DIR.
151
151
152 ``logfile=<name>``
152 ``--logfile=<name>``
153 specify the name of your logfile.
153 specify the name of your logfile.
154
154
155 This implies ``%logstart`` at the beginning of your session
155 This implies ``%logstart`` at the beginning of your session
@@ -160,7 +160,7 All options with a [no] prepended can be specified in negated form
160 can use this to later restore a session by loading your
160 can use this to later restore a session by loading your
161 logfile with ``ipython --i ipython_log.py``
161 logfile with ``ipython --i ipython_log.py``
162
162
163 ``logplay=<name>``
163 ``--logplay=<name>``
164
164
165 NOT AVAILABLE in 0.11
165 NOT AVAILABLE in 0.11
166
166
@@ -201,7 +201,7 All options with a [no] prepended can be specified in negated form
201 of nested data structures. If you like it, you can turn it on
201 of nested data structures. If you like it, you can turn it on
202 permanently in your config file (default off).
202 permanently in your config file (default off).
203
203
204 ``profile=<name>``
204 ``--profile=<name>``
205
205
206 Select the IPython profile by name.
206 Select the IPython profile by name.
207
207
@@ -263,7 +263,7 All options with a [no] prepended can be specified in negated form
263 IPython's readline and syntax coloring fine, only 'emacs' (M-x
263 IPython's readline and syntax coloring fine, only 'emacs' (M-x
264 shell and C-c !) buffers do not.
264 shell and C-c !) buffers do not.
265
265
266 ``TerminalInteractiveShell.screen_length=<n>``
266 ``--TerminalInteractiveShell.screen_length=<n>``
267 number of lines of your screen. This is used to control
267 number of lines of your screen. This is used to control
268 printing of very long strings. Strings longer than this number
268 printing of very long strings. Strings longer than this number
269 of lines will be sent through a pager instead of directly
269 of lines will be sent through a pager instead of directly
@@ -276,16 +276,16 All options with a [no] prepended can be specified in negated form
276 reason this isn't working well (it needs curses support), specify
276 reason this isn't working well (it needs curses support), specify
277 it yourself. Otherwise don't change the default.
277 it yourself. Otherwise don't change the default.
278
278
279 ``TerminalInteractiveShell.separate_in=<string>``
279 ``--TerminalInteractiveShell.separate_in=<string>``
280
280
281 separator before input prompts.
281 separator before input prompts.
282 Default: '\n'
282 Default: '\n'
283
283
284 ``TerminalInteractiveShell.separate_out=<string>``
284 ``--TerminalInteractiveShell.separate_out=<string>``
285 separator before output prompts.
285 separator before output prompts.
286 Default: nothing.
286 Default: nothing.
287
287
288 ``TerminalInteractiveShell.separate_out2=<string>``
288 ``--TerminalInteractiveShell.separate_out2=<string>``
289 separator after output prompts.
289 separator after output prompts.
290 Default: nothing.
290 Default: nothing.
291 For these three options, use the value 0 to specify no separator.
291 For these three options, use the value 0 to specify no separator.
@@ -304,7 +304,7 All options with a [no] prepended can be specified in negated form
304
304
305 ``--version`` print version information and exit.
305 ``--version`` print version information and exit.
306
306
307 ``xmode=<modename>``
307 ``--xmode=<modename>``
308
308
309 Mode for exception reporting.
309 Mode for exception reporting.
310
310
@@ -103,7 +103,7 calculation, we will need two top-level functions from :file:`pidigits.py`:
103
103
104 .. literalinclude:: ../../examples/newparallel/pidigits.py
104 .. literalinclude:: ../../examples/newparallel/pidigits.py
105 :language: python
105 :language: python
106 :lines: 41-56
106 :lines: 47-62
107
107
108 We will also use the :func:`plot_two_digit_freqs` function to plot the
108 We will also use the :func:`plot_two_digit_freqs` function to plot the
109 results. The code to run this calculation in parallel is contained in
109 results. The code to run this calculation in parallel is contained in
@@ -195,7 +195,7 simply start a controller and engines on a single host using the
195 :command:`ipcluster` command. To start a controller and 4 engines on your
195 :command:`ipcluster` command. To start a controller and 4 engines on your
196 localhost, just do::
196 localhost, just do::
197
197
198 $ ipcluster start n=4
198 $ ipcluster start --n=4
199
199
200 More details about starting the IPython controller and engines can be found
200 More details about starting the IPython controller and engines can be found
201 :ref:`here <parallel_process>`
201 :ref:`here <parallel_process>`
@@ -4,11 +4,6
4 Using MPI with IPython
4 Using MPI with IPython
5 =======================
5 =======================
6
6
7 .. note::
8
9 Not adapted to zmq yet
10 This is out of date wrt ipcluster in general as well
11
12 Often, a parallel algorithm will require moving data between the engines. One
7 Often, a parallel algorithm will require moving data between the engines. One
13 way of accomplishing this is by doing a pull and then a push using the
8 way of accomplishing this is by doing a pull and then a push using the
14 multiengine client. However, this will be slow as all the data has to go
9 multiengine client. However, this will be slow as all the data has to go
@@ -57,7 +52,7 The easiest approach is to use the `MPIExec` Launchers in :command:`ipcluster`,
57 which will first start a controller and then a set of engines using
52 which will first start a controller and then a set of engines using
58 :command:`mpiexec`::
53 :command:`mpiexec`::
59
54
60 $ ipcluster start n=4 elauncher=MPIExecEngineSetLauncher
55 $ ipcluster start --n=4 --elauncher=MPIExecEngineSetLauncher
61
56
62 This approach is best as interrupting :command:`ipcluster` will automatically
57 This approach is best as interrupting :command:`ipcluster` will automatically
63 stop and clean up the controller and engines.
58 stop and clean up the controller and engines.
@@ -68,14 +63,14 Manual starting using :command:`mpiexec`
68 If you want to start the IPython engines using the :command:`mpiexec`, just
63 If you want to start the IPython engines using the :command:`mpiexec`, just
69 do::
64 do::
70
65
71 $ mpiexec n=4 ipengine mpi=mpi4py
66 $ mpiexec n=4 ipengine --mpi=mpi4py
72
67
73 This requires that you already have a controller running and that the FURL
68 This requires that you already have a controller running and that the FURL
74 files for the engines are in place. We also have built in support for
69 files for the engines are in place. We also have built in support for
75 PyTrilinos [PyTrilinos]_, which can be used (assuming is installed) by
70 PyTrilinos [PyTrilinos]_, which can be used (assuming is installed) by
76 starting the engines with::
71 starting the engines with::
77
72
78 $ mpiexec n=4 ipengine mpi=pytrilinos
73 $ mpiexec n=4 ipengine --mpi=pytrilinos
79
74
80 Automatic starting using PBS and :command:`ipcluster`
75 Automatic starting using PBS and :command:`ipcluster`
81 ------------------------------------------------------
76 ------------------------------------------------------
@@ -110,7 +105,7 distributed array. Save the following text in a file called :file:`psum.py`:
110
105
111 Now, start an IPython cluster::
106 Now, start an IPython cluster::
112
107
113 $ ipcluster start profile=mpi n=4
108 $ ipcluster start --profile=mpi --n=4
114
109
115 .. note::
110 .. note::
116
111
@@ -19,7 +19,7 To follow along with this tutorial, you will need to start the IPython
19 controller and four IPython engines. The simplest way of doing this is to use
19 controller and four IPython engines. The simplest way of doing this is to use
20 the :command:`ipcluster` command::
20 the :command:`ipcluster` command::
21
21
22 $ ipcluster start n=4
22 $ ipcluster start --n=4
23
23
24 For more detailed information about starting the controller and engines, see
24 For more detailed information about starting the controller and engines, see
25 our :ref:`introduction <ip1par>` to using IPython for parallel computing.
25 our :ref:`introduction <ip1par>` to using IPython for parallel computing.
@@ -35,7 +35,7 the ``ip`` argument on the command-line, or the ``HubFactory.ip`` configurable i
35 If your machines are on a trusted network, you can safely instruct the controller to listen
35 If your machines are on a trusted network, you can safely instruct the controller to listen
36 on all public interfaces with::
36 on all public interfaces with::
37
37
38 $> ipcontroller ip=*
38 $> ipcontroller --ip=*
39
39
40 Or you can set the same behavior as the default by adding the following line to your :file:`ipcontroller_config.py`:
40 Or you can set the same behavior as the default by adding the following line to your :file:`ipcontroller_config.py`:
41
41
@@ -109,7 +109,7 The simplest way to use ipcluster requires no configuration, and will
109 launch a controller and a number of engines on the local machine. For instance,
109 launch a controller and a number of engines on the local machine. For instance,
110 to start one controller and 4 engines on localhost, just do::
110 to start one controller and 4 engines on localhost, just do::
111
111
112 $ ipcluster start n=4
112 $ ipcluster start --n=4
113
113
114 To see other command line options, do::
114 To see other command line options, do::
115
115
@@ -121,7 +121,7 Configuring an IPython cluster
121
121
122 Cluster configurations are stored as `profiles`. You can create a new profile with::
122 Cluster configurations are stored as `profiles`. You can create a new profile with::
123
123
124 $ ipython profile create --parallel profile=myprofile
124 $ ipython profile create --parallel --profile=myprofile
125
125
126 This will create the directory :file:`IPYTHONDIR/profile_myprofile`, and populate it
126 This will create the directory :file:`IPYTHONDIR/profile_myprofile`, and populate it
127 with the default configuration files for the three IPython cluster commands. Once
127 with the default configuration files for the three IPython cluster commands. Once
@@ -162,7 +162,7 The mpiexec/mpirun mode is useful if you:
162
162
163 If these are satisfied, you can create a new profile::
163 If these are satisfied, you can create a new profile::
164
164
165 $ ipython profile create --parallel profile=mpi
165 $ ipython profile create --parallel --profile=mpi
166
166
167 and edit the file :file:`IPYTHONDIR/profile_mpi/ipcluster_config.py`.
167 and edit the file :file:`IPYTHONDIR/profile_mpi/ipcluster_config.py`.
168
168
@@ -174,7 +174,7 There, instruct ipcluster to use the MPIExec launchers by adding the lines:
174
174
175 If the default MPI configuration is correct, then you can now start your cluster, with::
175 If the default MPI configuration is correct, then you can now start your cluster, with::
176
176
177 $ ipcluster start n=4 profile=mpi
177 $ ipcluster start --n=4 --profile=mpi
178
178
179 This does the following:
179 This does the following:
180
180
@@ -219,7 +219,7 The PBS mode uses the Portable Batch System (PBS) to start the engines.
219
219
220 As usual, we will start by creating a fresh profile::
220 As usual, we will start by creating a fresh profile::
221
221
222 $ ipython profile create --parallel profile=pbs
222 $ ipython profile create --parallel --profile=pbs
223
223
224 And in :file:`ipcluster_config.py`, we will select the PBS launchers for the controller
224 And in :file:`ipcluster_config.py`, we will select the PBS launchers for the controller
225 and engines:
225 and engines:
@@ -253,7 +253,7 to specify your own. Here is a sample PBS script template:
253 cd $PBS_O_WORKDIR
253 cd $PBS_O_WORKDIR
254 export PATH=$HOME/usr/local/bin
254 export PATH=$HOME/usr/local/bin
255 export PYTHONPATH=$HOME/usr/local/lib/python2.7/site-packages
255 export PYTHONPATH=$HOME/usr/local/lib/python2.7/site-packages
256 /usr/local/bin/mpiexec -n {n} ipengine profile_dir={profile_dir}
256 /usr/local/bin/mpiexec -n {n} ipengine --profile_dir={profile_dir}
257
257
258 There are a few important points about this template:
258 There are a few important points about this template:
259
259
@@ -288,7 +288,7 The controller template should be similar, but simpler:
288 cd $PBS_O_WORKDIR
288 cd $PBS_O_WORKDIR
289 export PATH=$HOME/usr/local/bin
289 export PATH=$HOME/usr/local/bin
290 export PYTHONPATH=$HOME/usr/local/lib/python2.7/site-packages
290 export PYTHONPATH=$HOME/usr/local/lib/python2.7/site-packages
291 ipcontroller profile_dir={profile_dir}
291 ipcontroller --profile_dir={profile_dir}
292
292
293
293
294 Once you have created these scripts, save them with names like
294 Once you have created these scripts, save them with names like
@@ -324,7 +324,7 connections on all its interfaces, by adding in :file:`ipcontroller_config`:
324
324
325 You can now run the cluster with::
325 You can now run the cluster with::
326
326
327 $ ipcluster start profile=pbs n=128
327 $ ipcluster start --profile=pbs --n=128
328
328
329 Additional configuration options can be found in the PBS section of :file:`ipcluster_config`.
329 Additional configuration options can be found in the PBS section of :file:`ipcluster_config`.
330
330
@@ -349,7 +349,7 nodes and :command:`ipcontroller` can be run remotely as well, or on localhost.
349
349
350 As usual, we start by creating a clean profile::
350 As usual, we start by creating a clean profile::
351
351
352 $ ipython profile create --parallel profile=ssh
352 $ ipython profile create --parallel --profile=ssh
353
353
354 To use this mode, select the SSH launchers in :file:`ipcluster_config.py`:
354 To use this mode, select the SSH launchers in :file:`ipcluster_config.py`:
355
355
@@ -374,7 +374,7 The controller's remote location and configuration can be specified:
374 # note that remotely launched ipcontroller will not get the contents of
374 # note that remotely launched ipcontroller will not get the contents of
375 # the local ipcontroller_config.py unless it resides on the *remote host*
375 # the local ipcontroller_config.py unless it resides on the *remote host*
376 # in the location specified by the `profile_dir` argument.
376 # in the location specified by the `profile_dir` argument.
377 # c.SSHControllerLauncher.program_args = ['--reuse', 'ip=*', 'profile_dir=/path/to/cd']
377 # c.SSHControllerLauncher.program_args = ['--reuse', '--ip=*', '--profile_dir=/path/to/cd']
378
378
379 .. note::
379 .. note::
380
380
@@ -390,7 +390,7 on that host.
390
390
391 c.SSHEngineSetLauncher.engines = { 'host1.example.com' : 2,
391 c.SSHEngineSetLauncher.engines = { 'host1.example.com' : 2,
392 'host2.example.com' : 5,
392 'host2.example.com' : 5,
393 'host3.example.com' : (1, ['profile_dir=/home/different/location']),
393 'host3.example.com' : (1, ['--profile_dir=/home/different/location']),
394 'host4.example.com' : 8 }
394 'host4.example.com' : 8 }
395
395
396 * The `engines` dict, where the keys are the host we want to run engines on and
396 * The `engines` dict, where the keys are the host we want to run engines on and
@@ -403,7 +403,7 a single location:
403
403
404 .. sourcecode:: python
404 .. sourcecode:: python
405
405
406 c.SSHEngineSetLauncher.engine_args = ['profile_dir=/path/to/profile_ssh']
406 c.SSHEngineSetLauncher.engine_args = ['--profile_dir=/path/to/profile_ssh']
407
407
408 Current limitations of the SSH mode of :command:`ipcluster` are:
408 Current limitations of the SSH mode of :command:`ipcluster` are:
409
409
@@ -471,12 +471,12 can do this:
471
471
472 * Put :file:`ipcontroller-engine.json` in the :file:`~/.ipython/profile_<name>/security`
472 * Put :file:`ipcontroller-engine.json` in the :file:`~/.ipython/profile_<name>/security`
473 directory on the engine's host, where it will be found automatically.
473 directory on the engine's host, where it will be found automatically.
474 * Call :command:`ipengine` with the ``file=full_path_to_the_file``
474 * Call :command:`ipengine` with the ``--file=full_path_to_the_file``
475 flag.
475 flag.
476
476
477 The ``file`` flag works like this::
477 The ``file`` flag works like this::
478
478
479 $ ipengine file=/path/to/my/ipcontroller-engine.json
479 $ ipengine --file=/path/to/my/ipcontroller-engine.json
480
480
481 .. note::
481 .. note::
482
482
@@ -248,75 +248,6 capabilities based authentication model, in conjunction with SSH tunneled
248 TCP/IP channels, address the core potential vulnerabilities in the system,
248 TCP/IP channels, address the core potential vulnerabilities in the system,
249 while still enabling user's to use the system in open networks.
249 while still enabling user's to use the system in open networks.
250
250
251 Other questions
252 ===============
253
254 .. note::
255
256 this does not apply to ZMQ, but I am sure there will be questions.
257
258 About keys
259 ----------
260
261 Can you clarify the roles of the certificate and its keys versus the FURL,
262 which is also called a key?
263
264 The certificate created by IPython processes is a standard public key x509
265 certificate, that is used by the SSL handshake protocol to setup encrypted
266 channel between the controller and the IPython engine or client. This public
267 and private key associated with this certificate are used only by the SSL
268 handshake protocol in setting up this encrypted channel.
269
270 The FURL serves a completely different and independent purpose from the
271 key pair associated with the certificate. When we refer to a FURL as a
272 key, we are using the word "key" in the capabilities based security model
273 sense. This has nothing to do with "key" in the public/private key sense used
274 in the SSL protocol.
275
276 With that said the FURL is used as an cryptographic key, to grant
277 IPython engines and clients access to particular capabilities that the
278 controller offers.
279
280 Self signed certificates
281 ------------------------
282
283 Is the controller creating a self-signed certificate? Is this created for per
284 instance/session, one-time-setup or each-time the controller is started?
285
286 The Foolscap network protocol, which handles the SSL protocol details, creates
287 a self-signed x509 certificate using OpenSSL for each IPython process. The
288 lifetime of the certificate is handled differently for the IPython controller
289 and the engines/client.
290
291 For the IPython engines and client, the certificate is only held in memory for
292 the lifetime of its process. It is never written to disk.
293
294 For the controller, the certificate can be created anew each time the
295 controller starts or it can be created once and reused each time the
296 controller starts. If at any point, the certificate is deleted, a new one is
297 created the next time the controller starts.
298
299 SSL private key
300 ---------------
301
302 How the private key (associated with the certificate) is distributed?
303
304 In the usual implementation of the SSL protocol, the private key is never
305 distributed. We follow this standard always.
306
307 SSL versus Foolscap authentication
308 ----------------------------------
309
310 Many SSL connections only perform one sided authentication (the server to the
311 client). How is the client authentication in IPython's system related to SSL
312 authentication?
313
314 We perform a two way SSL handshake in which both parties request and verify
315 the certificate of their peer. This mutual authentication is handled by the
316 SSL handshake and is separate and independent from the additional
317 authentication steps that the CLIENT and SERVER perform after an encrypted
318 channel is established.
319
320 .. [RFC5246] <http://tools.ietf.org/html/rfc5246>
251 .. [RFC5246] <http://tools.ietf.org/html/rfc5246>
321
252
322 .. [OpenSSH] <http://www.openssh.com/>
253 .. [OpenSSH] <http://www.openssh.com/>
@@ -24,7 +24,7 To follow along with this tutorial, you will need to start the IPython
24 controller and four IPython engines. The simplest way of doing this is to use
24 controller and four IPython engines. The simplest way of doing this is to use
25 the :command:`ipcluster` command::
25 the :command:`ipcluster` command::
26
26
27 $ ipcluster start n=4
27 $ ipcluster start --n=4
28
28
29 For more detailed information about starting the controller and engines, see
29 For more detailed information about starting the controller and engines, see
30 our :ref:`introduction <ip1par>` to using IPython for parallel computing.
30 our :ref:`introduction <ip1par>` to using IPython for parallel computing.
@@ -350,9 +350,9 The built-in routing schemes:
350
350
351 To select one of these schemes, simply do::
351 To select one of these schemes, simply do::
352
352
353 $ ipcontroller scheme=<schemename>
353 $ ipcontroller --scheme=<schemename>
354 for instance:
354 for instance:
355 $ ipcontroller scheme=lru
355 $ ipcontroller --scheme=lru
356
356
357 lru: Least Recently Used
357 lru: Least Recently Used
358
358
@@ -204,7 +204,7 security keys. The naming convention for cluster directories is:
204 To create a new cluster profile (named "mycluster") and the associated cluster
204 To create a new cluster profile (named "mycluster") and the associated cluster
205 directory, type the following command at the Windows Command Prompt::
205 directory, type the following command at the Windows Command Prompt::
206
206
207 ipython profile create --parallel profile=mycluster
207 ipython profile create --parallel --profile=mycluster
208
208
209 The output of this command is shown in the screenshot below. Notice how
209 The output of this command is shown in the screenshot below. Notice how
210 :command:`ipcluster` prints out the location of the newly created cluster
210 :command:`ipcluster` prints out the location of the newly created cluster
@@ -257,7 +257,7 Starting the cluster profile
257 Once a cluster profile has been configured, starting an IPython cluster using
257 Once a cluster profile has been configured, starting an IPython cluster using
258 the profile is simple::
258 the profile is simple::
259
259
260 ipcluster start profile=mycluster n=32
260 ipcluster start --profile=mycluster --n=32
261
261
262 The ``-n`` option tells :command:`ipcluster` how many engines to start (in
262 The ``-n`` option tells :command:`ipcluster` how many engines to start (in
263 this case 32). Stopping the cluster is as simple as typing Control-C.
263 this case 32). Stopping the cluster is as simple as typing Control-C.
@@ -300,7 +300,7 Backwards incompatible changes
300 from the command-line with the same syntax as in a configuration file.
300 from the command-line with the same syntax as in a configuration file.
301
301
302 * The command line options ``-wthread``, ``-qthread`` and
302 * The command line options ``-wthread``, ``-qthread`` and
303 ``-gthread`` have been removed. Use ``gui=wx``, ``gui=qt``, ``gui=gtk``
303 ``-gthread`` have been removed. Use ``--gui=wx``, ``--gui=qt``, ``--gui=gtk``
304 instead.
304 instead.
305
305
306 * The extension loading functions have been renamed to
306 * The extension loading functions have been renamed to
General Comments 0
You need to be logged in to leave comments. Login now