Communication Between Host and Accelerator Over Network
AssigneeGraphcore Limited
InventorsOla TORUDBAKKEN, Wei-Lin GUAY
Life of this patent
Estimating the term…
Abstract
A host system compiles a set of local programs which are provided over a network to a plurality of subsystems. By defining the synchronisation activity on the host, and then providing that information to the subsystems, the host can service a large number of subsystems. The defined synchronisation activity includes defining the synchronisation groups between which synchronisation barriers occur and the points during program execution at which data exchange with the host occurs. Defining synchronisation activity between the subsystems allows a large number of subsystems to be connecting whilst minimising the required exchanges with the host.
Claims29
A host system configured to interface over a network with a plurality of subsystems acting as work accelerators to the host system in accordance with local programs running on each of the subsystems, wherein the host system comprises at least one processor and at least one memory storing computer readable instructions,
- wherein the at least one processor of the host system is configured to execute the computer readable instructions to compile a set of local programs, each local program for running on a different one of the subsystems, wherein the step of compiling the set of local programs comprises defining a set of synchronisation groups, each synchronisation group comprising at least some of the subsystems,
- wherein each local program comprises:
- a set of compute instructions to perform, when executed by at least one processor of the respective subsystem, compute operations during one or more of a plurality of compute phases of the respective subsystem;
- and
- a set of data transfer instructions to, when executed by at least one processor of the respective subsystem, perform a plurality of barrier synchronisations at predefined points in the execution of the respective local program, wherein each of at least some of the barrier synchronisations is defined between one of the synchronisation groups, wherein at least one of the barrier synchronisations is a synchronisation requiring host involvement for which, in response to an initiator of data transfer provided to the host system by the respective subsystem, data exchange is performed between the respective subsystem and the host system,
- wherein the at least one processor of the host system is configured to, in response to each of the initiators of data transfer, exchange data over the network with one of the subsystems from which the initiator was received.
A subsystem configured to interface over a network with a host system, wherein the subsystem is configured to act as a work accelerator to the host system in accordance with a local program running on the subsystem, the subsystem comprising:
- at least one processor configured to execute the local program;
- and
- memory configured to store the local program, wherein the local program comprises:
- an indication of a synchronisation group for performing one or more of a plurality of barrier synchronisations, wherein the synchronisation group comprises the subsystem and a plurality of further subsystems;
- first instructions to perform a plurality of compute operations during one or more of a plurality of compute phases of the subsystem;
- and
- second instructions to perform the plurality of barrier synchronisations, wherein a first one of the barrier synchronisations has host involvement for which, following sending of an initiator of data transfer to the host system by the subsystem, data exchange is performed over the network between the subsystem and the host system.
A method implemented in a host system, the method comprising:
- interfacing over a network with a plurality of subsystems acting as work accelerators to the host system in accordance with local programs running on each of the subsystems;
- compiling the local programs for the subsystems, including defining barrier synchronisations to occur during running of the local programs on the subsystems, wherein each local program comprises:
- first instructions to perform compute operations during compute phases of a respective subsystem;
- and
- second instructions to participate in a plurality of the barrier synchronisations, wherein a first one of the plurality of barrier synchronisations employs host involvement for which, in response to an initiator of data transfer provided to the host system by the respective subsystem, data exchange is performed between the respective subsystem and the host system;
- and
- the method further comprising:
- exchanging data over the network with each one of the subsystems in response to respective initiators.
A non-transitory computer readable medium storing computer readable instructions, which when executed by a processor of a host system causes the processor to:
- interface over a network with a plurality of subsystems acting as work accelerators to the host system in accordance with local programs running on each of the subsystems;
- compile the local programs for the subsystems, including defining barrier synchronisations to occur during running of the local programs on the subsystems, wherein each local program comprises:
- first instructions to perform compute operations during compute phases of a respective subsystem;
- and
- second instructions to participate in a plurality of the barrier synchronisations, wherein a first one of the plurality of barrier synchronisations employs host involvement for which, in response to an initiator of data transfer provided to the host system by the respective subsystem, data exchange is performed between the respective subsystem and the host system;
- and
- exchange data over the network with each one of the subsystems in response to respective initiators.
A method implemented in a subsystem for a host system, the method comprising:
- receiving from a host system over a network, a local program;
- executing the local program;
- acting as a work accelerator to the host system in accordance with the local program, wherein the local program comprises an indication of a groups for performing one or more of a plurality of barrier synchronisations, wherein the group comprises the subsystem and a plurality of further subsystems;
- performing compute operations during a plurality of compute phases of the subsystem;
- performing the plurality of barrier synchronisations at points during execution of the local program, wherein a first one of the barrier synchronisations requires host involvement;
- and
- performing data exchange over the network with the host system for the first one of the barrier synchronisations, following sending of an initiator of data transfer to the host system.
A non-transitory computer readable medium storing computer readable instructions, which when executed by a processor of a subsystem causes the processor to:
- execute a local program received from a host system over a network;
- act as a work accelerator to the host system in accordance with the local program, wherein the local program comprises an indication of a group for performing one or more of a plurality of barrier synchronisations, wherein the group comprises the subsystem and a plurality of further subsystems;
- perform compute operations during a plurality of compute phases of the subsystem;
- perform the plurality of barrier synchronisations at points during execution of the local program, wherein a first one of the barrier synchronisations requires host involvement;
- and
- perform data exchange over the network with the host system for the first one of the barrier synchronisations, following sending of an initiator of data transfer to the host system.
Dependencies are inferred from the claim text.