##// END OF EJS Templates
Initial refactor of task dependency system....
Initial refactor of task dependency system. We are thinking about refactoring the task dependency system. Currently is is based on engine properties and a function sent with each task. In this commit, I have added a TaskRejectError that tasks can raise to indicate that the engine doesn't have the required dependencies. For now I have not removed any of the old stuff, but I have added warnings that we might remove the older *_prop* methods in IMultiEngine. See this ticket for more info: https://bugs.launchpad.net/bugs/361419

File last commit:

r1945:69ea8165
r1952:d68cab7f
Show More
__init__.py
125 lines | 4.3 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""Default kernel configuration."""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import os, sys
from os.path import join as pjoin
from IPython.external.configobj import ConfigObj
from IPython.config.api import ConfigObjManager
from IPython.genutils import get_ipython_dir, get_security_dir
default_kernel_config = ConfigObj()
# This will raise OSError if ipythondir doesn't exist.
security_dir = get_security_dir()
#-------------------------------------------------------------------------------
# Engine Configuration
#-------------------------------------------------------------------------------
engine_config = dict(
logfile = '', # Empty means log to stdout
furl_file = pjoin(security_dir, 'ipcontroller-engine.furl')
)
#-------------------------------------------------------------------------------
# MPI Configuration
#-------------------------------------------------------------------------------
mpi_config = dict(
mpi4py = """from mpi4py import MPI as mpi
mpi.size = mpi.COMM_WORLD.Get_size()
mpi.rank = mpi.COMM_WORLD.Get_rank()
""",
pytrilinos = """from PyTrilinos import Epetra
class SimpleStruct:
pass
mpi = SimpleStruct()
mpi.rank = 0
mpi.size = 0
""",
default = ''
)
#-------------------------------------------------------------------------------
# Controller Configuration
#-------------------------------------------------------------------------------
controller_config = dict(
logfile = '', # Empty means log to stdout
import_statement = '',
reuse_furls = False, # If False, old furl files are deleted
engine_tub = dict(
ip = '', # Empty string means all interfaces
port = 0, # 0 means pick a port for me
location = '', # Empty string means try to set automatically
secure = True,
cert_file = pjoin(security_dir, 'ipcontroller-engine.pem'),
),
engine_fc_interface = 'IPython.kernel.enginefc.IFCControllerBase',
engine_furl_file = pjoin(security_dir, 'ipcontroller-engine.furl'),
controller_interfaces = dict(
# multiengine = dict(
# controller_interface = 'IPython.kernel.multiengine.IMultiEngine',
# fc_interface = 'IPython.kernel.multienginefc.IFCMultiEngine',
# furl_file = 'ipcontroller-mec.furl'
# ),
task = dict(
controller_interface = 'IPython.kernel.task.ITaskController',
fc_interface = 'IPython.kernel.taskfc.IFCTaskController',
furl_file = pjoin(security_dir, 'ipcontroller-tc.furl')
),
multiengine = dict(
controller_interface = 'IPython.kernel.multiengine.IMultiEngine',
fc_interface = 'IPython.kernel.multienginefc.IFCSynchronousMultiEngine',
furl_file = pjoin(security_dir, 'ipcontroller-mec.furl')
)
),
client_tub = dict(
ip = '', # Empty string means all interfaces
port = 0, # 0 means pick a port for me
location = '', # Empty string means try to set automatically
secure = True,
cert_file = pjoin(security_dir, 'ipcontroller-client.pem')
)
)
#-------------------------------------------------------------------------------
# Client Configuration
#-------------------------------------------------------------------------------
client_config = dict(
client_interfaces = dict(
task = dict(
furl_file = pjoin(security_dir, 'ipcontroller-tc.furl')
),
multiengine = dict(
furl_file = pjoin(security_dir, 'ipcontroller-mec.furl')
)
)
)
default_kernel_config['engine'] = engine_config
default_kernel_config['mpi'] = mpi_config
default_kernel_config['controller'] = controller_config
default_kernel_config['client'] = client_config
config_manager = ConfigObjManager(default_kernel_config, 'IPython.kernel.ini')