Skip to content

How does ... work?

Mingyu Fan edited this page Oct 7, 2021 · 1 revision

Notes about how components of ARTIQ work

Scheduler

Scheduler keeps queues of experiments. An experiment can be submitted through one of the following ways:

  • Through the command line artiq_run argument (artiq.frontend.artiq_run): It seems that it does not support pipelines or priorities. This does not go through the actual scheduler, and is likely only useful for fast code testing. Following discussion does not consider this option.
  • Through the scheduler device in an experiment (artiq.master.worker_impl.Scheduler). This is a wrapper on the actual scheduler for use in an experiment.
  • Through a connection to the actual scheduler (artiq.master.scheduler.Scheduler). The experiment explorer in artiq_dashboard uses this scheduler. The function to call is submit.

When submitting an experiment to the scheduler, it queues a Run in a RunPool of a Pipeline (all of them in artiq.master.scheduler). Each Run has a Worker (artiq.master.worker.Worker). Actions (build, prepare, run, analyze) in the Worker is called when appropriate. These Worker actions calls the corresponding actions in artiq.master.worker_impl.main through sicopy.pipe_ipc.AsyncioParentComm and sicopy.pipe_ipc.ChildComm. worker_impl actually builds the experiment and calls the corresponding actions in the experiment.