Patent ID: 12223358

DETAILED DESCRIPTION

Methods, apparatuses, and systems that may allow accelerator resources to be shared with node resources that may be located within a rack or a pod by using a low-latency switch may be disclosed herein. In embodiments, each accelerator resource may be coupled with one node resource at a given time. In embodiments, an accelerator resource may be a Field Programmable Gate Array (FPGA), Graphical Processing Unit (GPU), an Application Specific Integrated Circuit (ASIC), Input/Output (I/O) accelerator, or other resource. In embodiments, an accelerator resource may implement a memory or other cache. In embodiments, a node resource may be a CPU.

Data center operations that include multiple data center racks may benefit from the flexibility to add, remove, or move connections of accelerator resources from one node resource to another node resource within a data center rack or a pod without physical intervention from an operator. In embodiments, accelerator resources, when connected with a node resource, may involve coherency and memory extensions. I/O accelerators may have load-store semantics.

Coherency extensions allow the accelerators to cache the system memory hosted by the node, enabling higher performance at a lower power. Memory extensions enable a node resource to access the memory hosted by the accelerator, in a way similar to system memory, thereby enabling better sharing between the node and the accelerator for better performance. Load-store semantics may allow a CPU or device to access memory-mapped resources directly as a load command (e.g., read) or as a store command (e.g., write).

In legacy implementations, it is challenging to share an accelerator resource among multiple node resources when the node resources may belong to different coherency domains. This may be due to tight coupling of resources in a coherency domain and fault isolation requirements across domains. Disadvantages of these legacy approaches may include limiting certain computing tasks to specific node resources that may have existing required functionality (i.e. existing coupled accelerator resources). Other disadvantages may include a data center that may be overprovisioned with resources to prepare for a worst-case computing scenario task or other operational requirement. This may result in an excess of deployed accelerator resources and resulting underutilization of the accelerator resources in a data center.

These and other challenges may be overcome by allowing accelerator resources and node resources to be connected using one or more interconnect switches to create a switchable path from a node resource to an accelerator resource. In embodiments, reconfiguring the switchable path may include hot-removing an accelerator resource from a connected node resource and then hot-adding the accelerator resource to the new node resource, using the interconnect switch and a resource manager. In embodiments, the connection between the node resources and accelerator resources may be changed via one or more software commands to the interconnect switch. In embodiments, no physical devices (e.g. accelerator resources) need to be physically moved.

In the following description, various aspects of the illustrative implementations are described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that embodiments of the present disclosure may be practiced with only some of the described aspects. For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of the illustrative implementations. However, it will be apparent to one skilled in the art that embodiments of the present disclosure may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative implementations.

In the following description, reference is made to the accompanying drawings that form a part hereof, wherein like numerals designate like parts throughout, and in which is shown by way of illustration embodiments in which the subject matter of the present disclosure may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.

For the purposes of the present disclosure, the phrase “A and/or B” means (A), (B), or (A and B). For the purposes of the present disclosure, the phrase “A, B, and/or C” means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B, and C).

The description may use perspective-based descriptions such as top/bottom, in/out, over/under, and the like. Such descriptions are merely used to facilitate the discussion and are not intended to restrict the application of embodiments described herein to any particular orientation.

The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “including,” “having,” and the like, as used with respect to embodiments of the present disclosure, are synonymous.

The terms “coupled with” and “coupled to” and the like may be used herein. “Coupled” may mean one or more of the following. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements indirectly contact each other, but yet still cooperate or interact with each other, and may mean that one or more other elements are coupled or connected between the elements that are said to be coupled with each other. By way of example and not limitation, “coupled” may mean two or more elements or devices are coupled by electrical connections on a printed circuit board such as a motherboard, for example. By way of example and not limitation, “coupled” may mean two or more elements/devices cooperate and/or interact through one or more network linkages such as wired and/or wireless networks. By way of example and not limitation, a computing apparatus may include two or more computing devices “coupled” on a motherboard or by one or more network linkages.

Various operations are described as multiple discrete operations in turn, in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent.

FIG.1is a diagram of an example implementation of a switch to connect node resources with accelerator resources, in accordance with various embodiments. Diagram100shows an interconnect switch102that may be managed by a resource manager104. In embodiments, the resource manager104may be a part of the interconnect switch102. In embodiments, the resource manager104may be external to but coupled with the interconnect switch102. The interconnect switch102may use a FlexBus™ interconnect protocol or other protocol to support data on a Peripheral Component Interconnect Express (PCIe) bus or other bus.

One or more node resources106a-106dmay be coupled with the interconnect switch102or coupled with the resource manager104. A node resource may be a CPU. A node resource may also be multiple CPUs connected using coherency links. In embodiments, one or more accelerator resources108a-108dmay be connected to the interconnect switch102. In embodiments, accelerators may include FPGAs, GPUs, ASICs, I/O accelerators, or other resources. In embodiments, accelerator resources108a-108dmay be used as a cache for a node resource106a-106d. Links105a-105dmay respectively connect node resources106a-106dto the interconnect switch102and links109a-109dmay respectively connect accelerator resources108a-108dto the interconnect switch102.

In configurations, a node resource106a-106dand accelerator resource108a-108dmay be connected to a plurality (not shown) of interconnect switches102that may be jointly managed by the resource manager104. In embodiments, each of the plurality of interconnect switches102may be bit-sliced or hierarchical to allow for a higher radix switching across the higher number of nodes and accelerators.

A bit-sliced switch implementation may be realized by having multiple physical interconnect switches102each dealing with a different sub-set of lanes of the PCIe bus or other bus. For example, if each of the links105a-105d,109a-109dhave 16 lanes, a switch with 8 links (radix=8), as shown in diagram100will need to be able to handle 128 lanes. If we need to extend that to 64 Links (radix=64) and a physical switch can only handle 128 Lanes, we can have 8 of these physical interconnect switches102forming one logical switch handling the connectivity across the 64 Links. For example, a first physical interconnect switch102may handle lanes 0 and 1 of each of the links105a-105d,109a-109d, the second physical interconnect switch (not shown) handles lanes 2 and 3 of each of the links105a-105d,109a-109d, and so on. This may build a higher radix switch (the one that handles 64 links rather than 8 links) while not extending the distance between the node and the accelerator.

Another approach for extending the switching radix is by using hierarchical switching (not shown) where different node resources106a-106dmay connect to different interconnect switches and the interconnect switches are connected through another layer of interconnect switches. In embodiments, a combination of bit-sliced and hierarchical switching may be used to extend the switching radix. These approaches may be used to provide connectivity between nodes and resources (such as accelerators) in a pod, which is a collection of racks. A rack is a physical enclosure where multiple nodes and accelerators may be hosted.

Turning back to diagram100, resource manager104may determine that one of the node resources106a-106dis to be connected with one of the accelerators resources108a-108d. The resource manager104may receive requests from various nodes106a-106dneeding resources and may respond to the requests by allocating an accelerator resource from the resources108a-108dto the requesting node. These requests and responses may be sent using standard manageability or networking resources (not shown) that support communication between a node resource106a-106dand the resource manager104.

For example, the resource manager104may receive a request to configure the interconnect switch102to directly connect a node resource106awith an accelerator resource108c. This configuration may be done entirely through software, for example by sending a command to one or more multiplexers such as multiplexers207a1-207h1ofFIG.2(described below) within the interconnect switch102.

Continuing the example, the resource manager104may determine that accelerator resource108cmay be already connected to another node resource106d. The resource manager104may cause a disconnect, or a hot-remove, of the previously connected accelerator resource108cfrom the node resource106d. In embodiments, before the accelerator resource108cmay be hot-removed, system software that may be running in the node resource106dand the accelerator resource108cmay quiesce data traffic between the accelerator resource108cand the node resource106dusing mechanisms available within each of the resources. These mechanisms may include flushing caches of memory belonging to the other resource, ensuring all traffic between the accelerator resource108cand node resource106dis completed, and the like. Once the data traffic is quiesced, the system software may communicate with the resource manager104to initiate the hot-remove of accelerator resource108cand from node106d, which may involve disconnecting the connection between the corresponding link109cand link106dusing the interconnect switch102. Subsequently, the resource manager104may establish a connection between the links105a,109cbetween node resource106aand accelerator resource108cusing the interconnect switch102.

After the node resource106aand the accelerator resource108care connected, configuration information may be exchanged between the node resource106aand the accelerator resource108c. The node resource106a-106dmay communicate with the interconnect switch102using a switch interface106a1-106d1. In embodiments the node resource106a-106dmay communicate with the switch interface106a1-106d1using a PCIe port106a2-106d2, an Intel Accelerator Link (IAL) port106a3-106d3, or some other port (not shown).

Once the node resource106aand accelerator resource108care connected, the switch interface106a1may perform link training with the accelerator resource108cto coordinate and establish the connection to behave in a consistent manner. This link training may be accomplished using a Training Status State Machine (LTSSM).

After link training, a hot-add flow may begin in the node resource106awith notification orchestrated by the resource manager104. During the hot-add flow, the system software running in the host may discover the newly-added accelerator resource108cand may perform initialization and/or mapping so that the node resource106acan start using the accelerator resource108c. Once the connection through the interconnect switch102is established, the increased latency in communication between the node resource106aand accelerator resource108cmay be less than 10 nanoseconds (ns).

FIG.2is a diagram of an example interconnect switch including interconnect switch ports, in accordance with various embodiments. Diagram200may show an interconnect switch202, which may be similar to the interconnect switch102ofFIG.1. Links205a-205dmay be similar to links105a-105d, and links209a-209dmay be similar to links109a-109d. Links205a-205d,209a-209dmay each connected, respectively, through connections between interconnect switch ports207a-207h. The connections may be managed by resource manager204, which may be similar to resource manager104ofFIG.1.

Each of the interconnect switch ports207a-207h, which are described in further detail inFIG.3, respectively include a mux207a1-207h1. Each mux207a1-207h1may receive mux select information211from the resource manager204to indicate which one of a first set of muxes207a1-207d1is to be connected to a one of a second set of muxes207e1-207h1in order to establish a low-latency bypass path between one of links205a-205dand one of links209a-209d. In embodiments, muxes207a1-207d1in interconnect switch ports207a1-207d1associated with node resources106a-106dmay be connected with any other muxes207e1-207h1in interconnect switch ports207e1-207h1associated with accelerator resources108a-108d, and vice-versa.

In embodiments, the interconnect switch202may be similar to a low latency retimer. The resulting low-latency bypass paths may provide a dramatic increase in speed between a connected node resource106a-106dand a connected accelerator resource108a-108d. Legacy implementations that connect a node resource and an accelerator resource using software paths or full hardware stacks to facilitate communication will encounter significant latency as the data packets traverse through the protocol stacks. Unlike legacy implementations, the interconnect switch102may have very low performance overhead by establishing a direct wired connection allowing for high communication speeds to support communication between a CPU and a I/O device, a cache, a GPU, or some other accelerator device.

FIG.3is a diagram of an example implementation of an interconnect switch port, in accordance with various embodiments. Diagram307ashows details of an example interconnect switch port which may be similar to interconnect switch port207aofFIG.2. Diagram307amay represent any interconnect switch port207a-207h. Input may be received through link305a1, and output may be sent through link305a2. Links305a1,305a2may be the same physical wire or bus, and may be similar to link205athat may couple the interconnect switch port307awith a switch interface106a1of a node resource106a. Link305a1may include data received from a node resource over link205a, and link305a2may include data to be sent to a node resource over link205a. In other embodiments where the interconnect switch port is connected to an accelerator resource port such as resource port209a, then link305a1may indicate data received from accelerator resource108aover link209a, and link305a2may indicate data to be sent to accelerator resource108aover link209a.

Receive (Rx) block processing330may receive data over link305aand convert the data for use within the interconnect switch port307a. For example, Rx block processing330may include converting the received data from a serial to a parallel format and performing data alignment, decoding, descrambling, and/or buffering. Additional functions may also be performed. Data from Rx Block Processing330may be used by the Control Block332to perform functions related to LTSSM link training as discussed above in addition to other functionality such as monitoring traffic and switching.

Data resulting from Rx Block Processing330as well as data resulting from the Control Block332may be combined. The Port Broadcast334function may take this combined data and broadcast it to all other interconnect switch ports207a-207h. For example, if the interconnect switch port307ais associated with a node resource106a-106d, then Port Broadcast334may broadcast a copy of the data to the input of all muxes207e1-207h1associated respectively with interconnect switch ports207e-207hof accelerator resources108a-108d. If the interconnect switch port307ais associated with an accelerator resource108a-108d, then Port Broadcast334may broadcast a copy of the data to the input of all muxes207a1-207d1associated respectively with interconnect switch ports207a-207dof node resources106a-106d. Similarly, control block information from Control Block332, which may include LTSSM information, may be broadcast to other LTSSMs using LTSSM Broadcast336.

The mux307a1, which may be similar to muxes207a1-207h1ofFIG.2, may receive data broadcast from all of or a plurality of other interconnect switch ports207a-207h. For example, if the mux307a1is associated with a node resource106a-106d, then the mux307a1may receive data from each of the interconnect switch ports207e-207hassociated respectively with accelerator resources108a-108d. If the mux207a1is associated with an accelerator resource108a-108d, then the mux307a1may receive data from each of the interconnect switch ports207a-207dassociated respectively with node resources106a-106d.

Mux select information311, which may be similar to mux select information211ofFIG.2, is provided by the resource manager204, which may be outside of interconnect switch port307a. Mux select information311may indicate to the mux307awhich of the Received broadcast data from other interconnect switch ports313from the other interconnect switch ports207a-207d, or207e-207hthat the mux307ashould receive data from.

The received data may then be processed by Transmit (Tx) Circuits338and sent as output data305a2back to either the node resource106a-106dor the accelerator resource108a-108dto which the interconnect switch port307ais associated. In addition, the received data that may be associated with LTSSM communications may be received by the Control Block332. The Tx circuits338may perform the parallel to serial conversion of data along with applying the appropriate Tx Equalization values agreed to during initial link training.

FIG.4is a block diagram that illustrates a process for implementing managing connections between node resources and accelerator resources using an interconnect switch, in accordance with various embodiments. In embodiments, the resource manager104, the interconnect switch102, node resources106a-106d, switch interfaces106a1-106d1,108a1-108d1, and accelerator resources108a-108dofFIG.1may perform a portion of, or may perform one or more processes such as the process400.

At block402, the process may include receiving an indication of a node resource of a plurality of node resources and an indication of an accelerator resource of a plurality of accelerator resources to connect to a node resource. The resource manager104may maintain a directory of node resources106a-106dand accelerator resources108a-108dand a list of which accelerator resources are currently connected to which node resources.

A node resource106a-106dmay send a request to the resource manager104to connect to an available accelerator resource or to a specific accelerator resource, depending on requirements of the node resource. A node resource106a-106dmay be a CPU or may be multiple CPUs connected using coherency links. In embodiments, node resources106a-106dmay belong in different coherency domains, and may be located in different racks or pods. In embodiments, the resource manager104may run on a single computer, or may be decentralized across multiple computers, depending on the configuration of the one or more interconnect switches102.

At block404, the process may include, if the indicated accelerator resource is connected to another node of the plurality of nodes, transmitting, to a circuit switch, one or more hot-remove commands. In embodiments, the resource manager104may check its directory to determine if the indicated accelerator resource is connected to another node. If the requested accelerator resource is already connected, then the resource manager104may transmit a hot-remove command to the interconnect switch102. In embodiments, the hot-remove command may be a sequence of instructions to disconnect the connection between another node resource and the indicated accelerator resource. Prior to disconnecting the connection, the data traffic between the indicated accelerator resource and the other node resource may be quiesced as described above. In embodiments, the one or more commands may be to one or more interconnect switch ports207a-207hand to respective muxes207a1-207h1to stop receiving broadcast data from other interconnect switch ports.

At block406, the process may include transmitting to the switch one or more hot-add commands. In embodiments, the one or more hot-add commands may be to connect the indicated node with the indicated accelerator resource. This may include sending one or more commands to one or more interconnect switch ports207a-207h, as described above, within the interconnect switch102, to connect the indicated node resource and the indicated accelerator resource. This may include the resource manager204sending mux select211commands to individual muxes207a1-207h1to indicate to the individual muxes from which interconnect switch port207a-207hthe mux should start receiving data.

In embodiments, once the indicated node resource and the indicated accelerator resource are connected, the connection may be configured to enable data to be communicated over the connection. In embodiments, this may be referred to as link training and the subsequent hot-add flow. In embodiments, this may be done through LTSSM as described above so that bits can be physically exchanged between a node resource106a-106dand the connected accelerator resource108a-108d.

FIG.5illustrates an example computing device suitable for use to practice aspects of the present disclosure, in accordance with various embodiments. The example computing device of diagram500may be suitable to practice the functions associated with diagrams100,200,300, and400. In embodiments, diagram500may be used to implement one or more resource managers104.

As shown, computing device500may include one or more processors502, each having one or more processor cores, and system memory504. The processor502may include any type of unicore or multi-core processors. Each processor core may include a central processing unit (CPU), and one or more level of caches. The processor502may be implemented as an integrated circuit. The computing device500may include mass storage devices506(such as diskette, hard drive, volatile memory (e.g., dynamic random access memory (DRAM)), compact disc read only memory (CD-ROM), digital versatile disk (DVD) and so forth). In general, system memory504and/or mass storage devices506may be temporal and/or persistent storage of any type, including, but not limited to, volatile and non-volatile memory, optical, magnetic, and/or solid state mass storage, and so forth. Volatile memory may include, but not be limited to, static and/or dynamic random access memory. Non-volatile memory may include, but not be limited to, electrically erasable programmable read only memory, phase change memory, resistive memory, and so forth.

The computing device500may further include input/output (I/O) devices508such as a display, keyboard, cursor control, remote control, gaming controller, image capture device, and communication interfaces510(such as network interface cards, modems, infrared receivers, transceivers, radio receivers (e.g., Bluetooth), and so forth). I/O devices508may be suitable for communicative connections with an interconnect switch102ofFIG.1, a plurality of interconnect switches (not shown), or some other device necessary for implementing the functionalities coupling a node resource to an accelerator resource with reference toFIGS.1-4.

In embodiments, communication interfaces510may include communication chips (not shown) that may be configured to operate the device500in accordance with wired or with wireless protocols.

The above-described computing device500elements may be coupled to each other via system bus512, which may represent one or more buses. In the case of multiple buses, they may be bridged by one or more bus bridges (not shown). Each of these elements may perform its conventional functions known in the art. In particular, system memory504and mass storage devices506may be employed to store a working copy and a permanent copy of the programming instructions implementing the operations and functionalities associated with the resource manager104, generally shown as computational logic522. Computational logic522may be implemented by assembler instructions supported by processor(s)502or high-level languages that may be compiled into such instructions.

In embodiments, the Computational Logic522may contain a resource manager module350, which may perform one or more of the functions associated with diagrams100,200,300, and400.

The permanent copy of the programming instructions may be placed into mass storage devices506in the factory, or in the field, though, for example, a distribution medium (not shown), such as a compact disc (CD), or through communication interfaces310(from a distribution server (not shown)).

FIG.6is a diagram illustrating computer readable media having instructions for practicing managing connections between node resources and accelerator resources using an interconnect switch, in accordance with various embodiments. Diagram600may illustrate computer readable media602having instructions for practicing the above-described techniques, or for programming/causing systems and devices to perform the above-described techniques, in accordance with various embodiments. In some embodiments, such computer readable media602may be included in a memory or storage device, which may be transitory or non-transitory, of the computing device500ofFIG.5. In embodiments, instructions604may include assembler instructions supported by a processing device, or may include instructions in a high-level language, such as C, that can be compiled into object code executable by the processing device. In some embodiments, a persistent copy of the computer readable instructions604may be placed into a persistent storage device in the factory or in the field (through, for example, a machine-accessible distribution medium (not shown)). In some embodiments, a persistent copy of the computer readable instructions604may be placed into a persistent storage device through a suitable communication pathway (e.g., from a distribution server).

The corresponding structures, material, acts, and equivalents of all means or steps plus function elements in the claims below are intended to include any structure, material or act for performing the function in combination with other claimed elements are specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill without departing from the scope and spirit of the disclosure. The embodiment was chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure for embodiments with various modifications as are suited to the particular use contemplated.

EXAMPLES

Examples, according to various embodiments, may include the following.

Example 1 may be a resource manager, comprising: one or more processors; a resource manager module (RMM) communicatively coupled to the one or more processors, wherein the RMM is to: receive an indication of a node resource of a plurality of node resources and an indication of an accelerator resource of a plurality of accelerator resources to connect to the node resource; if the indicated accelerator resource is connected to another node resource of the plurality of node resources, then transmit, to an interconnect switch, one or more hot-remove commands; and transmit, to the interconnect switch, one or more hot-add commands.

Example 2 may include the resource manager of example 1, wherein the RMM is to track connections respectively of the plurality of accelerator resources to the plurality of node resources and to cause the interconnect switch to connect the indicated accelerator resource of the plurality of accelerator resources to the indicated node resource of the plurality of node resources.

Example 3 may include the resource manager of example 1, wherein the one or more hot-remove commands are to cause the interconnect switch to hot-remove the indicated accelerator resource from the another node resource.

Example 4 may include the resource manager of example 3, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to cause data traffic on a connection between the indicated accelerator resource and the another node resource to become quiescent.

Example 5 may include the resource manager of example 3, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to sever the connection between the indicated accelerator resource and the another node resource.

Example 6 may include the resource manager of example 1, wherein the one or more hot-add commands are to cause the interconnect switch to hot-add the indicated accelerator resource to the indicated node resource.

Example 7 may include the resource manager of any one of examples 1-6, wherein to hot-add the indicated accelerator resource to the indicated node resource further includes to: establish, via the interconnect switch, a connection between the indicated accelerator resource and the indicated node resource; configure, via the interconnect switch, the indicated accelerator resource to communicate with the indicated node resource over the established connection; and configure, via the interconnect switch, the indicated node resource to communicate with the indicated accelerator resource over the established connection.

Example 8 may include the resource manager of example 7, wherein a time duration between receipt by the interconnect switch of the one or more commands to hot-add the indicated accelerator resource to the indicated node resource and an active established connection between the indicated accelerator resource and the indicated node resource is less than 10 nanoseconds (ns).

Example 9 may include the resource manager of example 8, wherein an active established connection between the indicated accelerator resource and the indicated node resource includes data flow between the indicated accelerator resource and the indicated node resource.

Example 10 may include the resource manager of any one of examples 1-6, wherein the interconnect switch is a low-latency bypass path that includes a first and a second plurality of ports, each of the first set of ports includes a multiplexer with a direct connection to each of the second plurality of ports, and wherein the interconnect switch receives commands from the RMM to hot-add or hot-remove connections between one of the first set of plurality of ports and one of the second set of the plurality of ports.

Example 11 may include the resource manager of example 10, wherein one or more of the first set of ports are connected respectively to one or more of the plurality of accelerator resources and one or more of the second set of ports are connected respectively to one or more of the plurality of node resources.

Example 12 may include the resource manager of any one of examples 1-6, wherein the plurality of accelerator resources includes a Field Programmable Gate Array (FPGA), a Graphical Processor Unit (GPU), or an Application Specific Integrated Circuit (ASIC).

Example 13 may include the resource manager of any one of examples 1-6, wherein the plurality of node resources includes a Central Processing Unit (CPU) or a System on a Chip (SOC).

Example 14 may include the resource manager of any one of examples 1-6, wherein the indicated node resource is a plurality of CPUs coupled using coherency links.

Example 15 may include the resource manager of any one of examples 1-6, wherein the indicated accelerator resource is a cache for the indicated node resource.

Example 16 may include the resource manager of example 1, wherein some of the plurality of node resources are in different coherency domains.

Example 17 may include the resource manager of any one of examples 1-6, wherein some of the plurality of accelerator resources are associated with different coherency domains.

Example 18 may include the resource manager of example 1, wherein the indicated node resource includes a Peripheral Component Interconnect Express (PCIe) port or an Intel Accelerator Link (IAL) port.

Example 19 may include the resource manager of example 1, wherein the resource manager is located within the interconnect switch.

Example 20 may include the resource manager of example 1, wherein the interconnect switch is a plurality of interconnect switches.

Example 21 may include the resource manager of any one of examples 1-20, wherein the indicated node resource and the indicated accelerator resource are in different racks.

Example 22 may include the resource manager of any one of examples 1-20, wherein the indicated node resource and the indicated accelerator resource are in different pods.

Example 23 may be a method to manage resources, comprising: receiving an indication of a node resource of a plurality of node resources and an indication of an accelerator resource of a plurality of accelerator resources to connect to the node resource; if the indicated accelerator resource is connected to another node resource of the plurality of node resources, then transmitting, to an interconnect switch, one or more hot-remove commands; and transmitting, to the interconnect switch, one or more hot-add commands.

Example 24 may include the method of example 23, further comprising tracking connections respectively of the plurality of accelerator resources to the plurality of node resources.

Example 25 may include the method of example 23, further comprising causing the interconnect switch to connect the indicated accelerator resource of the plurality of accelerator resources to the indicated node resource of the plurality of node resources.

Example 26 may include the method of example 23, wherein the one or more hot-remove commands are to cause the interconnect switch to hot-remove the indicated accelerator resource from the another node resource.

Example 27 may include the method of example 26, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to cause data traffic on a connection between the indicated accelerator resource and the another node resource to become quiescent.

Example 28 may include the method of example 26, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to sever the connection between the indicated accelerator resource and the another node resource.

Example 29 may include the method of example 23, wherein the one or more hot-add commands are to cause the interconnect switch to hot-add the indicated accelerator resource to the indicated node resource.

Example 30 may include the method of example 29, wherein to hot-add the indicated accelerator resource to the indicated node resource further includes: establishing, by the interconnect switch, a connection between the indicated accelerator resource and the indicated node resource; configuring, by the interconnect switch, the indicated accelerator resource to communicate with the indicated node resource over the established connection; and configuring, by the interconnect switch, the indicated node resource to communicate with the indicated accelerator resource over the established connection.

Example 31 may include the method of example 30, wherein a time duration between receipt by the interconnect switch of the one or more commands to hot-add the indicated accelerator resource to the indicated node resource and an active established connection between the indicated accelerator resource and the indicated node resource is less than 10 nanoseconds (ns).

Example 32 may include the method of example 31, wherein an active established connection between the indicated accelerator resource and the indicated node resource includes data flow between the indicated accelerator resource and the indicated node resource.

Example 33 may include the method of example 23, wherein the interconnect switch is a low-latency bypass path that includes a first and a second plurality of ports, each of the first set of ports includes a multiplexer with a direct connection to each of the second plurality of ports; and further comprising receiving, by the interconnect switch, commands to hot-add or hot-remove connections between one of the first set of plurality of ports and one of the second set of the plurality of ports.

Example 34 may include the method of example 33, wherein one or more of the first set of ports are connected respectively to one or more of the plurality of accelerator resources and one or more of the second set of ports are connected respectively to one or more of the plurality of node resources.

Example 35 may include the method of example 23, wherein the plurality of accelerator resources includes a Field Programmable Gate Array (FPGA), a Graphical Processor Unit (GPU), or an Application Specific Integrated Circuit (ASIC).

Example 36 may include the method of example 23, wherein the plurality of node resources includes a Central Processing Unit (CPU) or a System on a Chip (SOC).

Example 37 may include the method of example 23, wherein the indicated node resource is a plurality of CPUs coupled using coherency links.

Example 38 may include the method of example 23, wherein the indicated accelerator resource is a cache for the indicated node resource.

Example 39 may include the method of example 23, wherein some of the plurality of node resources are in different coherency domains.

Example 40 may include the method of example 23, wherein some of the plurality of accelerator resources are associated with different coherency domains.

Example 41 may include the method of example 23, wherein the indicated node resource includes a Peripheral Component Interconnect Express (PCIe) port or an Intel Accelerator Link (IAL) port.

Example 42 may include the method of example 23, wherein the method is performed within the interconnect switch.

Example 43 may include the method of example 23, wherein the interconnect switch is a plurality of interconnect switches.

Example 44 may include the method of any one of examples 23-43, wherein the indicated node resource and the indicated accelerator resource are in different racks.

Example 45 may include the method of any one of examples 23-43, wherein the indicated node resource and the indicated accelerator resource are in different pods.

Example 46 may be a resource manager apparatus, comprising: means for receiving an indication of a node resource of a plurality of node resources and an indication of an accelerator resource of a plurality of accelerator resources to connect to the node resource; if the indicated accelerator resource is connected to another node resource of the plurality of node resources, then means for transmitting, to an interconnect switch, one or more hot-remove commands; and means for transmitting, to the interconnect switch, one or more hot-add commands.

Example 47 may include the apparatus of example 46, further comprising means for tracking connections respectively of the plurality of accelerator resources to the plurality of node resources.

Example 48 may include the apparatus of example 46, further comprising means for causing the interconnect switch to connect the indicated accelerator resource of the plurality of accelerator resources to the indicated node resource of the plurality of node resources.

Example 49 may include the apparatus of example 46, wherein the one or more hot-remove commands are to cause the interconnect switch to hot-remove the indicated accelerator resource from the another node resource.

Example 50 may include the apparatus of example 49, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to cause data traffic on a connection between the indicated accelerator resource and the another node resource to become quiescent.

Example 51 may include the apparatus of example 49, wherein to hot-remove the indicated accelerator resource from the another node resource further includes to sever the connection between the indicated accelerator resource and the another node resource.

Example 52 may include the apparatus of example 46, wherein the one or more hot-add commands are to cause the interconnect switch to hot-add the indicated accelerator resource to the indicated node resource.

Example 53 may include the apparatus of example 52, wherein to hot-add the indicated accelerator resource to the indicated node resource further includes: establishing, by the interconnect switch, a connection between the indicated accelerator resource and the indicated node resource; configuring, by the interconnect switch, the indicated accelerator resource to communicate with the indicated node resource over the established connection; and configuring, by the interconnect switch, the indicated node resource to communicate with the indicated accelerator resource over the established connection.

Example 54 may include the apparatus of example 53, wherein a time duration between receipt by the interconnect switch of the one or more commands to hot-add the indicated accelerator resource to the indicated node resource and an active established connection between the indicated accelerator resource and the indicated node resource is less than 10 nanoseconds (ns).

Example 55 may include the apparatus of example 54, wherein an active established connection between the indicated accelerator resource and the indicated node resource includes data flow between the indicated accelerator resource and the indicated node resource.

Example 56 may include the apparatus of example 46, wherein the interconnect switch is a low-latency bypass path that includes a first and a second plurality of ports, each of the first set of ports includes a multiplexer with a direct connection to each of the second plurality of ports; and further comprising means for receiving, by the interconnect switch, commands to hot-add or hot-remove connections between one of the first set of plurality of ports and one of the second set of the plurality of ports.

Example 57 may include the apparatus of example 56, wherein one or more of the first set of ports are connected respectively to one or more of the plurality of accelerator resources and one or more of the second set of ports are connected respectively to one or more of the plurality of node resources.

Example 58 may include the apparatus of example 46, wherein the plurality of accelerator resources includes a Field Programmable Gate Array (FPGA), a Graphical Processor Unit (GPU), or an Application Specific Integrated Circuit (ASIC).

Example 59 may include the apparatus of example 46, wherein the plurality of node resources includes a Central Processing Unit (CPU) or a System on a Chip (SOC).

Example 60 may include the apparatus of example 46, wherein the indicated node resource is a plurality of CPUs coupled using coherency links.

Example 61 may include the apparatus of example 46, wherein the indicated accelerator resource is a cache for the indicated node resource.

Example 62 may include the apparatus of example 46, wherein some of the plurality of node resources are in different coherency domains.

Example 63 may include the apparatus of example 46, wherein some of the plurality of accelerator resources are associated with different coherency domains.

Example 64 may include the apparatus of example 46, wherein the indicated node resource includes a Peripheral Component Interconnect Express (PCIe) port or an Intel Accelerator Link (IAL) port.

Example 65 may include the apparatus of example 46, wherein the method is performed within the interconnect switch.

Example 66 may include the apparatus of example 46, wherein the interconnect switch is a plurality of interconnect switches.

Example 67 may include the apparatus of any one of examples 46-66, wherein the indicated node resource and the indicated accelerator resource are in different racks.

Example 68 may include the apparatus of any one of examples 46-66, wherein the indicated node resource and the indicated accelerator resource are in different pods.

Example 69 may be a system comprising: one or more processors; a resource manager module (RMM) communicatively coupled to the one or more processors, wherein the RMM is to: receive an indication of a node resource of a plurality of node resources and an indication of an accelerator resource of a plurality of accelerator resources to connect to the node resource; if the indicated accelerator resource is connected to another node resource of the plurality of node resources, then transmit, to an interconnect switch, one or more hot-remove commands; and transmit, to the interconnect switch, one or more hot-add commands; and the interconnect switch communicatively coupled to the RMM to provide a low-latency bypass path between the plurality of node resources and the plurality of accelerator resources comprising a first and a second plurality of ports, each of the first set of ports includes a multiplexer with a direct connection to each of the second plurality of ports; and wherein the interconnect switch is to receive one or more hot-remove commands to disconnect another node resource from the indicated accelerator resource or hot-add commands to connect the indicated node resource to the indicated accelerator resource.

Example 70 may include the system of example 69, wherein the RMM is to communicate directly with the plurality of multiplexers.

Example 71 may include the system of any one of examples 69-70, wherein one or more of the first set of ports are connected respectively to one or more of the plurality of accelerator resources and one or more of the second set of ports are connected respectively to one or more of the plurality of node resources.

Example 72 may include the system of example 69, wherein the plurality of accelerator resources includes a Field Programmable Gate Array (FPGA), a Graphical Processor Unit (GPU), or an Application Specific Integrated Circuit (ASIC).

Example 73 may include the system of example 69, wherein the plurality of node resources includes a Central Processing Unit (CPU) or a System on a Chip (SOC).

Example 74 may include the system of example 69, wherein the indicated node resource is a plurality of CPUs coupled using coherency links.

Example 75 may include the system of example 69, wherein the indicated accelerator resource is a cache for the indicated node resource.

Example 76 may include the system of example 69, wherein some of the plurality of node resources are in different coherency domains.

Example 77 may include the system of example 69, wherein some of the plurality of accelerator resources are associated with different coherency domains.

Example 78 may include the system of example 69, wherein the indicated node resource includes a Peripheral Component Interconnect Express (PCIe) port or an Intel Accelerator Link (IAL) port.

Example 79 may include the system of example 69, wherein the RMM module is located within the interconnect switch.

Example 80 may include the system of example 69, wherein the interconnect switch is a plurality of interconnect switches.

Example 81 may include the system of any one of examples 69-80, wherein the indicated node resource and the indicated accelerator resource are in different racks.

Example 82 may include the system of any one of examples 69-80, wherein the indicated node resource and the indicated accelerator resource are in different pods.