A Runtime for the Compile-time (
This package provides an execution environment for compiler passes, enabling them to parallelize and distribute their workload efficiently.
Launching a Server
By default, a compiler will automatically start and connect to an attached
runtime server during initialization. In this mode, the compiler
starts up and shuts down the server automatically and transparently to
the end user. See
A server running in attached mode is limited to a single machine. If you
would like to parallelize BQSKit across multiple nodes over a network,
you can launch a server independently in detached mode. Here, you first
Manager processes on all machines.
Then link them all together by running a
DetachedServer process, which Compilers’
can connect to by passing the appropriate address in their constructor.
Upon installing BQSKit, two shell scripts are added to your environment that can spawn managers and detached servers:
Typically, you start managers first on all nodes in the desired cluster.
Then you can start the server with a comma-separated list of all managers
ip address and optionally ports. Once a server is started and has connected
to the requested managers, no more managers can be added. You can see
the -h option of each command or the
start_manager() entry points for
For more information on how to manage jobs submitted to a runtime server,
BQSKit Runtime Server in attached mode.
BQSKit Runtime Server in detached mode.
BQSKit Runtime Manager.
Entry point for a detached runtime server process.
Entry point for runtime manager processes.
Entry point for spawning a rank of runtime worker processes.
Parallelize Pass Computation
When developing a BQSKit compiler pass, you can hook into the active
runtime server through the
get_runtime() function. This returns a
RuntimeHandle, which you can use to submit, map, wait on, and
cancel tasks in the execution environment.
For more information on how to design a custom pass, see this (TODO, sorry, you can look at the source code of existing passes for a good example for the time being).
Return a handle on the active runtime.
A structural type capturing BQSKit Runtime capabilities.
An awaitable future.
Standard Logging Interface
This system uses the standard python logging module to provide a familiar logging interface. On client processes – the ones where you create the Compiler object – you can configure python loggers like normal before submitting tasks and have the entire system honor that configuration.