---
# System prepended metadata

title: Iris Scheduler

---

# Iris Scheduler
16 Feb 2022

## IRIS Questions

IRIS URLs
* https://iris-programming.readthedocs.io/en/latest/architecture.html#execution-model
* https://iris-programming.com/


1. write transition table for different scheduler states (AR: BJ, AY, SL)
    * tasks satisfied?
    * data satisfied?
    * when does device selection complete?

1. Investigate other formalisms (AR: NM, MM)
    1. STAR-PU formalisms? 
    1. Ompss formalisms?
    1. Cilk formalisms?

1. Is there a check in place on data dependencies being created before going from `TASK_NONE -> TASK_QUEUED/TASK_SUBMITTED`?

1. Evaluate the pending data policy, does it transfer only the memory buffers associated with the task that's submitted or pick up all of them?

## HUNTER

### DAG Representation

```
Class DAG():

    self.graph
    """
    NX Graph Properties:
        - Nodes must have 'size'
        - Edge must have 'data' to represent data size.
    """

    reset()
    
    get_runtime(task, accelerator)
    
    get_communication_time(task, from_accelerator, to_accelerator) # Still to be added
    
    get_num_accelerators()
    
    get_accelerators()
    
    get_task_name()
    
    get_kernel_name()
    
    get_accelerator_name()
```

### Schedule Representation
```
class Schedule():

    get_makespan()
    
    get_schedule()
        Returns array of schedule items
```

```
class ScheduleItem():

    Task
    
    Accelerator

    Start
    
    End
```