Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • standalone - debugger launches executable containing user code in a separate process
  • attach - debugger attaches to running process executing user code

Sandbox

"Sandbox" - a directory, in which actor will be run. Before execution of user codes wrapped by FC2K generated actor, directory will be changed to "sandbox", and after actor finishes, current directory will be switched back to previous value. The name (path) of "sandbox" directory will be created automatically or specified by user in actor configuration dialog. 

Actor will use existing directory or will create it, if directory not exists. 

Typical usage: checkpointing, caching intermediate results,  usage of additional information (input, config files) not provided in workflow.

Wrapper API - current status

...

Code Block
def actor_name(integer0, integer1, core_profiles0, exec_type='ctypes', **kwargs):


Input

...

Argument can be

arguments required by user C++/F method

  • Number and an order of arguments must  be exactly the same as in user method
  • Types of arguments
    • IDS
    • Primitive type
    • Array
  • IDS
  • primitive type
  • array
    • of primitive types
    string
    • String

Execution type

  • Named argument (exec_type='').
  • Current values of exec_type :
    • ctypes - interactive execution (yes - this name is REALLY CONFUSING)
    • mpi_local - run as MPI job
    • dbg - to keep compatibility with obsolete 'debug' argument of wrapper

...

Additional arguments 

Auxiliary keyword arguments:

...

  • very long list of arguments
    • it is easy to make a mistake providing  incorrect number of arguments 
    • it is easy to make a mistake providing incorrect order of arguments
  • lack of important information, so many features are not handled:
    • no debug mode
    • MPI parameters - only number of nodes is specified
    • no batch mode  

Wrapper API - new design

only kwargs !!!!

def actor_name(**kwargs):

...

Assumptions:

  • All input arguments (user method arg and info determining how to launch job ) 'structured' within classes
  • Classes will be defined for:
    • user code arguments - autogenerated
    • XML input parameters
    • diagnostic info
    • execution modes
    debug
    • return values
  • The order of arguments  (classes) will be arbitrary - implemented as arguments list (*args) or keyword arguments list (**kwargs)
  • All arguments (classes) will be optional. If object of given class will be not provided - default values will be used.

Benefits of proposed solution


Open points

  1. Sandbox:
    1. Do we need this feature?
  2. Alternative library:
    1. Do we need this feature?

...