1. Use cases:
1.1. Wrapper modes:
- interactive - user code is run directly from wrapper
- batch - user executable is sent to a queue
1.2. Type of execution
User code can be:
- Sequential
- Parallel:
- MPI, and/or
- OpenMP
1.3. Debugging modes:
- standalone - debugger launches executable containing user code in a separate process
- attach - debugger attaches to running process executing user code
2. Arguments passed to wrapper - current status
def actor_name(
integer0,
integer1,
exec_type='ctypes',
**kwargs):
2.1. User code arguments (IN/OUT)
Argument can be
- IDS
- primitive type
- array of primitive types
- string
2.2. Execution type
BP: IMHO it should be removed and defined in other way, as execution modes requires additional set of info
Current values of exec_type
:
ctypes
- interactive execution (yes - this name is REALLY MISLEADING)- mpi_local
- kwargs: mpi_processes
dbg
- kwargs: dbgmode
3. Arguments passed to wrapper - new
only kwargs !!!!
def actor_name(**kwargs):
All arguments will be stored in data holding objects and wrapper will check what is defined inside kwargs