...
- 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
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
- 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
- Sandbox:
- Do we need this feature?
- Alternative library:
- Do we need this feature?
...