Systems and methods for aggregating graphical processing unit network links
By aggregating GPU-to-GPU communication links with relay GPUs and network switches, the system optimizes data transfer speeds and GPU utilization, addressing bandwidth bottlenecks and reducing costs in GPU clusters.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-09-29
- Publication Date
- 2026-04-02
AI Technical Summary
Existing GPU clusters face bandwidth bottlenecks due to mismatches between the bandwidth of the PCIe bus and GPU memory interfaces, limiting data transfer speeds and overall GPU utilization efficiency.
Implement a system and method for aggregating GPU-to-GPU communication links using relay GPUs and network switches to dynamically manage bandwidth, allowing data to be relayed through available links, thereby optimizing data transfer and reducing bottlenecks.
Enhances GPU utilization efficiency by increasing data transfer speeds, reducing costs per unit work, and allowing more processing tasks to be performed without relying on proprietary hardware advancements.
Smart Images

Figure CN2024122094_02042026_PF_FP_ABST
Abstract
Description
SYSTEMS AND METHODS FOR AGGREGATING GRAPHICAL PROCESSING UNIT NETWORK LINKS
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This is the first application related to the present disclosure.FIELD
[0003] The description herein relates generally to graphical processing unit (GPU) cluster systems and methods. More particularly, the description relates to systems and methods for aggregating GPU network links.BACKGROUND
[0004] Wang et al., “Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters” , arXivLabs, July 27, 2024 (https: / / doi. org / 10.48550 / arXiv. 2307.12169) discloses a low-cost network architecture for training large language models (LLMs) at hyperscale. Optimal parallelization strategy of LLMs and a datacenter network design is tailored to LLM's unique communication pattern. LLM training generates sparse communication patterns in the network and, therefore, does not require any-to-any full-bisection network to complete efficiently. The design eliminates the spine layer in traditional GPU clusters. The rail-only network supports Mixture-of-Expert (MoE) models with all-to-all communication through forwarding.SUMMARY
[0005] Any and / or all aspects as described herein in any and / or all combinations.
[0006] According to an aspect, there is provided a system comprising: a plurality of graphical processing units (GPUs) with a plurality of "scale-up" GPU-to-GPU communication links between the GPUs forming a GPU-to-GPU communication network; a plurality of "scale-out" network links associated with each GPU; a network switch coupled to the scale-out network links and configured to relay data via the scale-out network links to the GPUs; each of the GPUs configured to execute instructions from a computer-readable medium. The instructions may comprise tracking a bandwidth of the scale-up communication links and the scale-out network links of the associated GPU; and relaying at least a portion of the data via the GPU-to-GPU communication network between the associated GPU and one or more other GPUs for communication with the network switch. The instructions may further comprise determining an available bandwidth of the network link for one or more relay GPUs. The instructions may further comprise reserving the available bandwidth on the relay GPUs. The system may further comprise one or more bidirectional serial communication links between the associated GPU and the network link. The bidirectional serial communication link may have less serial link bandwidth than a GPU-to-GPU bandwidth. The available bandwidth may be indicated by one or more tokens. The instructions may further comprise receiving a reservation message to reserve the available bandwidth from the other GPUs. The instructions may further comprise requesting at least a portion of the data from the network switch for the other GPUs. The instructions may further comprise transmitting a portion (or entirety) of the data to the at least one other GPU via the GPU-to-GPU network. The instructions may further comprise releasing the available bandwidth on the other GPUs once the portion (or entirety) of the data is transferred or the time window has expired.
[0007] According to an aspect, there is provided a network switch configured to relay data via a plurality of network links to and from a plurality of graphical processor units (GPUs) , the graphical processor units connected via a GPU-to-GPU communication network, the network switch comprising: a processor configured to execute instructions from a computer-readable medium, the instructions comprise: tracking a bandwidth of the network link associated with each of the graphical processor units; and relaying at least a portion of the data via the network link of at least one other graphical processor unit for relaying via the GPU-to-GPU communication network between the at least one other graphical processor unit and a graphical processor unit corresponding to an overutilized network link.
[0008] The instructions may further comprise determining an available bandwidth of the network link for the graphical processor units. The instructions may further comprise reserving the available bandwidth on the at least one other graphical processor unit. The network switch may further comprise at least one bidirectional serial communication link between the GPU and the network link. The bidirectional serial communication link may have less serial link bandwidth than a GPU-to-GPU communication link bandwidth. The available bandwidth of the network link and / or the GPU-to-GPU communication link may be indicated by at least one token. The instructions may further comprise releasing the available bandwidth on the relay graphical processor units once the at least a portion of the data is transferred or the time window has expired.
[0009] According to another aspect, there is provided a method for relaying data to a graphical processing unit (GPU) with a plurality of GPU-to-GPU communication links between at least one relay graphical processor unit and the GPU. The method comprising: tracking a bandwidth of a network link of the GPU, the network link coupled to a network switch; and relaying at least a portion of the data via the GPU-to-GPU communication link between the GPU and the at least one relay graphical processor unit for communication with the network switch. The method may further comprise determining an available bandwidth of the network link for the relay graphical processor units. The method may further comprise reserving the available bandwidth on the relay graphical processor units.
[0010] According to an aspect, there is provided a device comprising a processor executing a plurality of instructions from a computer-readable memory, the instructions to configure the processor to perform any of the methods described herein.
[0011] According to an aspect, there is provided a computer-readable medium (or computer program product) storing computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform any of the methods described herein.BRIEF DESCRIPTION OF THE DRAWINGS
[0012] The aspects will now be described, by way of example, with reference to the attached Figures, wherein:
[0013] Figure 1 is a block diagram of a multiple Graphics Processing Unit (GPU) topology;
[0014] Figure 2 is a block diagram of the multiple GPU topology demonstrating a transmission of data from a source GPU relaying through a relay GPU to a scale-out network;
[0015] Figure 3 is a block diagram of the multiple GPU topology demonstrating a reception of data from the scale-out network by a destination GPU via the relay GPU;
[0016] Figure 4 is a block diagram of the multiple GPU topology demonstrating remote direct memory access (RDMA) support demonstrating the reception of data from the scale-out network by the destination GPU via the relay GPU;
[0017] Figure 5 is a block diagram of the multiple GPU topology demonstrating remote direct memory access (RDMA) support demonstrating the transmission of data from the source GPU relaying through the relay GPU to the scale-out network;
[0018] Figure 6 is a block diagram of the multiple GPU topology demonstrating RDMA termination demonstrating the reception of data from the scale-out network by the destination GPU via the relay GPU;
[0019] Figure 7 is a block diagram of the multiple GPU topology demonstrating RDMA termination demonstrating the transmission of data from the source GPU relaying through the relay GPU to the scale-out network;
[0020] Figure 8 is a block diagram demonstrating a computing structure for a top-of-rack network switch configured to execute instructions; and
[0021] Figure 9 is a flowchart demonstrating a process for relaying data to and from a GPU using one or more relay GPUs.DETAILED DESCRIPTION
[0022] As described herein with reference to FIGS. 1 to 8, the aspects may tasks involving Graphics Processing Unit (GPU) -accelerated computing via a GPU cluster 100, 400, 600 may involve transferring large amounts of data to and from a memory 116 of one or more graphical processing units (GPUs) 114. Some such examples that involve large amounts of data to be transferred may be in large language models (LLMs) training and inference, artificial intelligence storage products, computer vision, network intrusion detection systems (IDS) , radio frequency (RF) spectrum analysis, Radio Detection and Ranging (RADAR) spatial imaging, and other scientific and industrial applications that capture data at rates exceeding 100 Gigabytes per second.
[0023] The GPU cluster 100, 400, 600 may process different types of content, such as voice, data, video, and / or text, through different processing methods. Additionally, the GPU cluster 100, 400, 600 may operate by allocating and / or sharing resources among its constituent elements. The GPU cluster 100, 400, 600 may provide other services and applications such as, but not limited to, earth monitoring, remote sensing, passive sensing and positioning, navigation and tracking, autonomous delivery and mobility and the like. One or more artificial intelligence (AI) engines may execute on one or more of the GPU clusters 100, 400, 600.
[0024] As shown in FIG. 1, an external storage 160 may transmit and / or receive data over a network 150, such as a dedicated scale-out network for the cluster, a local-area-network and / or the Internet, to a top-of-rack network switch 110. The top-of-rack network switch 110 may communicate with one or more communication interfaces 112 (e.g. network interface cards or NICs) via a network link 108 at a specific network bandwidth, for example, of 800 Gbit / s. Each of the NICs 112 may be coupled to an associated graphical processing unit 114 via a bus 102. In other words, each of the associated graphical processing units 114 may have a corresponding network link 108. The bus 102 may comprise a bidirectional serial communication link. In this aspect, the bus 102 is a Peripheral Component Interconnect Express (PCIe) bus and comprises sixteen Generation 5 PCIe lanes from the NIC 112 to the GPU 114 resulting in a theoretical serial link bandwidth of 504 Gbit / sec, excluding overhead. Each of the GPUs 114 may be coupled to a GPU memory 116. In this aspect, the GPU memory 116 may be a GPU High Bandwidth Memory (HBM) and may have a theoretical bandwidth of 26,800 Gbit / sec. Each of the GPUs 116 may have a GPU-to-GPU communication network 106 comprising at least one GPU-to-GPU communication link and in this aspect, may have a theoretical GPU-to-GPU communication network bandwidth of 4,800 Gbit / sec.
[0025] A rate at which the data can be transferred may be limited by the bandwidth of the bus 102 supported by the GPU 114. In many instances, the bandwidth of the bus 102 may be significantly smaller than the bandwidth of a memory interface 104 for the memory 116 of the GPU 114. For example, the theoretical bandwidth of the HBM of 26, 800 Gbit / sec is almost two orders of magnitude higher than the theoretical bandwidth of 504 Gbit / sec the PCIe lanes to the NIC 112. A faster NIC 112, for example, with a bandwidth of 800 Gbit / sec, may not resolve the bandwidth mismatch as the throughput is limited by the bandwidth of the PCIe bus 102. The difference in bandwidth may result in bottlenecks thereby reducing a GPU utilization efficiency due to slow speeds of transferring the data from an external storage 160 to the GPU memory 116, transferring data from the GPU memory 116 to the external storage 160, and / or storing one or more GPU state checkpoints. These bottlenecks may also limit data transfer bandwidth to GPUs in other clusters over the network 150. When the network bandwidth to GPU memory 116 is increased, the time that GPUs 114 spend sending and receiving the data may be reduced allowing for more processing tasks to be performed. The increased GPU utilization may reduce a cost of the GPU cluster 100 by allowing the same amount of work to be performed by fewer GPUs 114 and / or may allow the GPU cluster 100 to perform more work thereby reducing a cost per unit work.
[0026] Some other approaches may be to increase the bandwidth of the PCIe bus 102 such as moving from PCIe generation 5 to PCIe generation 6. Other approaches may be to add one or more proprietary high-speed links to the GPU 114, such as Nvidia’s C2C NVLink or AMD’s Infinity Fabric. Nevertheless, progress of the PCIe standard has been relatively slow compared to these proprietary high-speed links. Although the proprietary high-speed communication links may provide increased performance, the proprietary nature makes these technologies undesirable as providers may use these communication links as a competitive barrier that prevents other vendors from being able to achieve similar bandwidths. As described herein, there is provided system and methods that may provide improved performance without necessarily depending on advancements in underlying hardware and / or proprietary technologies.
[0027] FIG. 2 demonstrates a transmission of the data stored within the GPU memory 116a from a source GPU 114a to the external storage 160. The source GPU 114a may determine that its respective NIC 112a network link is overutilized (e.g. an overutilized communication interface) and may relay at least a portion of the data on the GPU-to-GPU communication network 106 to at least one relay graphical processing unit 114b. The relay of the data may involve one or more relay paths 210 on the GPU-to-GPU communication network 106. The GPU 114b may transmit the relayed data 210 via its respective NIC 112b to the top-of-rack network switch 110. The network switch 110 may form a dynamic link aggregation 202 of the NICs 112a, 112b involved in the data transfer. The link aggregation may involve combining two or more separate network links 112a, 112b such that the aggregated link appears as one single network link with a throughput equal to a sum of the combined links. The network switch 110 may aggregate the directly transmitted data 206 with the relayed data 212 to form the aggregated data 204 that may correspond to the original data 208 and / or may perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0028] In one aspect, each of the GPUs 114 may track the bandwidth of the network link associated with their respective network interface 112. For example, the GPU 114a may track the bandwidth of the network link associated with network interface 112a. When the GPU 114 has available bandwidth, the GPU 114 may provide an indicator of an amount of the available bandwidth on the GPU-to-GPU communication network 106. In one aspect, the GPUs 114 may periodically poll the other relay GPUs 114 and update the available bandwidth for each of the other relay GPUs 114. In another aspect, the other relay GPUs 114 may push an update to the other relay GPUs 114 regarding their available bandwidth. In yet another aspect, when the GPU 114 has available bandwidth, the GPU 114 may make available one or more tokens on the GPU-to-GPU communication network 106. A quantity of the tokens may be proportional to the amount of the available bandwidth on its respective NIC 112. In another aspect, the GPU 114 may make available one or more tokens on the GPU-to-GPU communication network 106 associated with an available GPU-to-GPU communication network bandwidth, which may be reserved in a similar manner to that described below.
[0029] When the source GPU 114a determines its respective NIC 112a network link is overutilized or determines the NIC 112a network link will be overutilized based on the amount of data to be transmitted from the HBM 116a, the source GPU 114a may reserve the available bandwidth from one or more of the potential relay GPUs 114b-n via the GPU-to-GPU communication network 106. In some aspects, the source GPU 114a may select the relay GPU 114b-n based on its available bandwidth. In one example, the source GPU 114a may send a reservation message to the relay GPU 112b to reserve the available bandwidth. In another example, the source GPU 114a may reserve the one or more tokens from other GPUs 114b-n with the reservation message. The source GPU 114a may determine that the NIC 112a network link is overutilized by reserving its local tokens until no more of the local tokens are available and then subsequently begin reserving tokens from other relay GPUs 114b-n. When there are no more tokens available on the GPU-to-GPU communication network 106, the lack of tokens indicates that the available bandwidth for the NICs 112 network link has been reserved.
[0030] When the source GPU 114a has reserved the available bandwidth from the relay GPU 114b, the source GPU 114a may logically split the source data into one or more blocks. The source GPU 114a may allocate each block to an available token. The source GPU 114a may transfer some of the blocks (e.g. directly transmitted data 206) directly to the network switch 110 via its respective NIC 112a and / or some of the blocks (e.g. relay data 210) to the relay GPU 114b via the GPU-to-GPU communication network 106. The relay GPU 114b may temporarily store or buffer the relay data 210 in its respective GPU memory 116b. The relay GPU 114b may transmit the relay data 210 via its respective NIC 112b to the network switch 110. When the desired blocks have been successfully transmitted to the network switch 110, the source GPU 114a may release the token. In another aspect, the relay GPU 114b may release the token in response to a release message from the source GPU 114a, such as including a token identifier transmitted with each block, once the block has been transmitted to the network switch 110.
[0031] FIG. 3 demonstrates a reception of the data from the external storage 160 to a destination GPU 114a for storing within the GPU memory 116a. The network switch 110 may track a utilization of each NIC 112 network link and determine when any of the NICs 112 network links is overutilized (e.g. by measuring network link utilization, interface queue length, and / or other indications of backpressure) . In this example, the network switch 110 may start queuing data to be sent to the NIC 112a of the GPU 114a. When this queuing occurs, the network switch 110 may direct at least a portion of the queued data (and / or data received from the external storage 160) to the NICs 112b-n of the other GPUs 114b-n for relaying over the GPU-to-GPU communication network 106 to the destination GPU 114a. The network switch 110 may form a dynamic link aggregation 202 of the respective NICs 112. The network switch 110 may select a relay GPU based on its available bandwidth.
[0032] In one example, the network switch 110 may prepend, append, and / or modify packet header contents to indicate an address of the destination GPU 114a for each block of data sent to the relay GPUs 114b-n. Each of the GPUs 114 may be configured to automatically forward these addressed blocks of data to the destination GPU 114a over the GPU-to-GPU communication network 106. In another example, the network switch 110 may reserve the available bandwidth by sending the reservation message to the respective GPU 114 over their respective NIC 112. The reservation message may comprise reserving one or more of the tokens corresponding to the available bandwidth of the NIC 112 network link. The network switch 110 may associate each data block with a corresponding token for transmission to the GPU 114b. When the relay GPU 114b receives the data block (including the token association) , the relay GPU 114b may release the token associated with the blocks once the blocks are successfully received by the destination GPU 114a. In another aspect, the relay GPU 114b may release the token in response to a release message from the network switch 110, such as a message transmitted with each block indicating the token identifier, once the block has been transmitted to the destination GPU 114a.
[0033] The relay GPU 114b may temporarily store or buffer the relay data 310 in its respective GPU memory 116b. The relay GPU 114b may transmit the relay data 310 via its respective GPU-to-GPU communication network 106 to the destination GPU 114a. The destination GPU 114a may aggregate the directly transmitted data 306 with the relayed data 312 to form the aggregated data 308 that may correspond to the original data 204 and / or may perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0034] In another aspect shown particularly in FIG. 4, a remote direct memory access (RDMA) -enabled GPU cluster 400 may have a similar structure to that as previously described with reference to FIG. 3. In the RDMA-enabled GPU cluster 400, one or more of the NICs 112 may be replaced with an RDMA network interface controller (RNIC) 412. The RNICs 412 may be compliant with one or more of RFC5040, RFC5041, RFC5044 of the Internet Engineering Task Force (IETF) and submitted thereto by the RDMA Consortium, the contents of which are herein explicitly incorporated by reference in their entirety. Each of the RNICs 412 may have direct memory access to the GPU memory 116 such that an incoming RDMA flow received by the RNIC 412 may directly write the received data into the GPU memory 116. The GPU 114 may not be involved in the transfer until the RNIC 412 is completed transferring the data.
[0035] The network switch 110 may track a utilization of each RDMA flow through each RNIC 412 and determine when any of the RNICs 412 network link is overutilized (e.g. by measuring network link utilization, interface queue length, and / or other indications of backpressure) . In this example, the network switch 110 may start queuing for the data to be sent to the RNIC 412a of the GPU 114a. When this queuing occurs, the network switch 110 may direct at least a portion of the queued data (and / or data received from the external storage 160) to the other RNICs 412b-n of the other GPUs 114b-n for relaying over the GPU-to-GPU communication network 106 to the destination GPU 114a. The network switch 110 may select the relay GPU 114b-n based on the amount of available bandwidth on its associated RNIC 412b-n network links. The network switch 110 may form a dynamic link aggregation 202 of the respective RNICs 112. The relay RNIC 412b may write the relay data 312 directly to the GPU memory 116b of the relay GPU 114b. When the RNIC 412b is completed writing the relay data 312, the GPU 114b may then send the data 314 from its GPU memory 116b to the GPU memory 116a of the destination GPU 114a via the GPU-to-GPU communication network 106. In another embodiment, the relay RNIC 412b writing the relay data 312 may trigger software on the relay GPU 114b that directly forwards the relay data 312 to GPU 114a as relay data 310 without local storage to GPU memory 116b of relay GPU 114b. In yet a further embodiment, when the relay RNIC 412b writes the relay data 312 to the GPU memory 116b, the relay GPU 114b may transparently forward writes to GPU memory 116a as part of an integrated multi-GPU memory subsystem.
[0036] In one example, the network switch 110 may modify or create RDMA sessions and messages to specify addresses on relay GPU 114b that may be forwarded to the destination GPU 114a. Each of the GPUs 114 may be configured to automatically forward these addressed blocks of data to the destination GPU 114a over the GPU-to-GPU communication network 106 while the RNIC 412b is completing the transfer. In another example, the network switch 110 may reserve the available bandwidth by sending the reservation message to the respective GPU 114 over their respective RNIC 412. The reservation message may comprise reserving one or more of the tokens corresponding to the available bandwidth of the RNIC 412 network link. The network switch 110 may append each token to a corresponding data block for transmission to the GPU 114b. When the relay GPU 114b receives the data block (including the token) , the relay GPU 114b may release the token associated with the block once the block is successfully received by the destination GPU 114a. In another aspect, the relay GPU 114b may release the token in response to a release message from the network switch 110, such as a message transmitted with each block indicating the token identifier, once the block has been transmitted to the destination GPU 114a.
[0037] The relay GPU 114b may transmit the relay data 310 via its respective GPU-to-GPU communication network 106 to the destination GPU 114a. The destination GPU 114a may aggregate the directly transmitted data 306 with the relayed data 312 to form the aggregated data 308 that may correspond to the original data 204 and / or may perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0038] FIG. 5 demonstrates an RDMA transmission of the data stored within the GPU memory 116a from the source GPU 114a to the external storage 160. The source GPU 114a may determine that its respective RNIC 412a network link is overutilized and may relay at least a portion of the data on the GPU-to-GPU communication network 106 to one or more relay GPUs 114b. The source GPU 114a may select the relay GPU 114b based on its available bandwidth. The relay of the data may involve one or more relay paths 210 on the GPU-to-GPU communication network 106. The GPU 114b may split the data to be sent over two or more RDMA sessions, and transmit the relayed data 210 via its respective RNIC 412b network link to the top-of-rack network switch 110. The network switch 110 may form a dynamic link aggregation 202 of the RNICs 412a, 412b involved in the data transfer. The link aggregation may involve combining two or more separate network links 412a, 412b such that the aggregated link appears as one single network link with a throughput equal to a sum of the combined links. The network switch 110 may aggregate the directly transmitted data 206 with the relayed data 212 to form the aggregated data 204 that may correspond to a single RDMA session containing all of the original data 208 and / or may pass through multiple parallel RDMA sessions and / or perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0039] In one aspect, each of the GPUs 114 may track the bandwidth of their respective RNIC 412 network link. For example, the GPU 114a may track the bandwidth of the RNIC 412a network link. When the GPU 114 has available bandwidth, the GPU 114 may provide an indicator of an amount of the available bandwidth on the GPU-to-GPU communication network 106. In one aspect, the GPUs 114 may periodically poll the other GPUs 114 and update the available bandwidth for each of the other GPUs 114. In another aspect, the other GPUs 114 may push an update to the other GPUs 114 regarding their available bandwidth. In yet another aspect, when the GPU 114 has available bandwidth, the GPU 114 may make available one or more tokens on the GPU-to-GPU communication network 106. A quantity of the tokens may be proportional to the amount of the available bandwidth on its respective RNIC 412 network link.
[0040] When the source GPU 114a determines its respective RNIC 412a network link is overutilized or determines the RNIC 412a network link will be overutilized based on the amount of data to be transmitted from the HBM 116a, the source GPU 114a may reserve the available bandwidth from one or more of the relay GPUs 114b-n via the GPU-to-GPU communication network 106. In one example, the source GPU 114a may send a reservation message to the relay GPU 112b to reserve the available bandwidth. In another example, the source GPU 114a may reserve the one or more tokens from other GPUs 114b-n with the reservation message. The source GPU 114a may determine that the RNIC 412a network link is overutilized by reserving its local tokens until no more of the local tokens are available and then subsequently begin reserving tokens from other GPUs 114b-n. When there are no more tokens available on the GPU-to-GPU communication network 106, the lack of tokens indicates that the available bandwidth for the RNICs 412 network link has been reserved.
[0041] When the source GPU 114a has reserved the available bandwidth from the relay GPU 114b, the source GPU 114a may logically split the source data into one or more RDMA sessions that can be performed in parallel. The source GPU 114a may allocate each of the tokens to one of the sessions. The RNIC 412a of the source GPU 114a may transfer some of the blocks (e.g. directly transmitted data 206) directly to the network switch 110 and / or the source GPU 114a may transfer some of the blocks (e.g. relay data 210) to the relay GPU 114b via the GPU-to-GPU communication network 106. The relay GPU 114b may temporarily store or buffer the relay data 210 in its respective GPU memory 116b, or may rely on software on the relay GPU 114b to read relay data 210 on-demand. An alternative aspect may transparently forward reads to GPU memory 116a as part of an integrated multi-GPU memory subsystem. The RNIC 412b of the relay GPU 114b may transmit the relay data 210 directly from the GPU memory 116b to the network switch 110. When each message has been successfully transmitted to the network switch 110, the source GPU 114a may release the token associated with the block. In another aspect, the relay GPU 114b may release the token in response to a release message from the source GPU 114a, such as including a token identifier transmitted with each block, once the block has been transmitted to the network switch 110.
[0042] In some aspects as shown in FIG. 6, the GPU cluster 600 may have an RDMA termination 602 operating within the network switch 110. The network switch 110 may be coupled to the GPUs 114 using the bus 102. In this aspect, each bus 102 comprises sixteen PCIe lanes from the network switch 110 to the GPU 114 resulting in a theoretical bandwidth of 504 Gbit / sec. Other aspects may have a larger number or fewer PCIe lanes. As the network switch 110 is configured to perform the RDMA termination 602, the NICs 112 and / or RNICs 412 are not present in this GPU cluster 600. For a transfer to the destination GPU 114a, the network switch 110 may directly store the received data from the external storage 160 to the GPU memory 116 of the destination GPU 114a. For a transfer from the source GPU 114a, the network switch 110 may directly retrieve the data from the GPU memory 116 of the source GPU 114a.
[0043] The network switch 110 may monitor the bus 102 to each of the GPUs 114 and determine when any of the buses 102 is overutilized. The network switch 110 may form a dynamic link aggregation 202 of the respective buses 102a, 102b. The network switch 110 may write the relay data 312 directly to the GPU memory 116b of the relay GPU 114b, where writing the relay data 312 may trigger software on the relay GPU 114b to directly forward the relay data 312 to GPU 114a as relay data 310 without local storage to GPU memory 116b of relay GPU 114b. In yet a further embodiment, when the network switch 110 writes the relay data 312 to the GPU memory 116b, the relay GPU 114b may transparently forward writes to GPU memory 116a as part of an integrated multi-GPU memory subsystem.
[0044] In one example, the network switch 110 may re-write the destination memory address to correspond to the destination GPU 114a for each block of data stored in the GPU memory 116b. Each of the GPUs 114 may be configured to automatically forward these addressed blocks of data to the destination GPU 114a over the GPU-to-GPU communication network 106 during the transfer. In another example, the network switch 110 may reserve the available bandwidth by sending the reservation message to the respective GPU 114 over their respective bus 102. The reservation message may comprise reserving one or more of the tokens corresponding to the available bandwidth of the bus 102. The network switch 110 may append each token to a corresponding data block stored within the GPU memory 116b. When the relay GPU 114b receives the data block (including the token) , the relay GPU 114b may release the token associated with the block once the block is successfully received by the destination GPU 114a. In another aspect, the relay GPU 114b may release the token in response to a release message from the network switch 110, such as a message transmitted with each block indicating the token identifier, once the block has been transmitted to the destination GPU 114a.
[0045] The relay GPU 114b may transmit the relay data 310 via its respective GPU-to-GPU communication network 106 to the destination GPU 114a. The destination GPU 114a may aggregate the directly transmitted data 306 with the relayed data 312 to form the aggregated data 308 that may correspond to the original data 204 and / or may perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0046] Turning to FIG. 7, an RDMA transmission of the data stored within the GPU memory 116a from the source GPU 114a to the external storage 160 is shown for the GPU cluster 600. The source GPU 114a may determine that its respective bus 102a is overutilized and may relay at least a portion of the data on the GPU-to-GPU communication network 106 to one or more relay GPUs 114b. The source GPU 114a may select the relay GPU 114b based on its amount of available bandwidth. The relay of the data may involve one or more relay paths 210 on the GPU-to-GPU communication network 106. The GPU 114b may transmit the relayed data 210 via its bus 102b to the top-of-rack network switch 110. The network switch 110 may form a dynamic link aggregation 202 of the buses 102a, 102b involved in the data transfer. The network switch 110 may aggregate the directly transmitted data 206 with the relayed data 212 to form the aggregated data 204 that may correspond to the original data 208 and / or may perform other in-network packet buffering, packet re-ordering, protocol processing, protocol conversion, data processing, compression / decompression, etc.
[0047] In one aspect, each of the GPUs 114 may track the bandwidth of their respective bus 102. For example, the GPU 114a may track the bandwidth of the bus 102a. When the GPU 114 has available bandwidth, the GPU 114 may provide an indicator of an amount of the available bandwidth on the GPU-to-GPU communication network 106. In one aspect, the GPUs 114 may periodically poll the other GPUs 114 and update the available bandwidth for each of the other GPUs 114. In another aspect, the other GPUs 114 may push an update to the other GPUs 114 regarding their available bandwidth. In yet another aspect, when the GPU 114 has available bandwidth, the GPU 114 may make available one or more tokens on the GPU-to-GPU communication network 106. A quantity of the tokens may be proportional to the amount of the available bandwidth on its respective bus 102.
[0048] When the source GPU 114a determines its respective bus 102a is overutilized or determines the bus 102a will be overutilized based on the amount of data to be transmitted from the HBM 116a, the source GPU 114a may reserve the available bandwidth from one or more of the relay GPUs 114b-n via the GPU-to-GPU communication network 106. In one example, the source GPU 114a may send a reservation message to the relay GPU 112b to reserve the available bandwidth. In another example, the source GPU 114a may reserve the one or more tokens from other GPUs 114b-n with the reservation message. The source GPU 114a may determine that the bus 102a is overutilized by reserving its local tokens until no more of the local tokens are available and then subsequently begin reserving tokens from other GPUs 114b-n. When there are no more tokens available on the GPU-to-GPU communication network 106, the lack of tokens indicates that the available bandwidth for the buses 102 has been reserved.
[0049] When the source GPU 114a has reserved the available bandwidth from the relay GPU 114b, the source GPU 114a may logically split the source data into one or more blocks. The source GPU 114a may allocate each of the tokens to one of the blocks. The network switch 110 may transfer some of the blocks (e.g. directly transmitted data 206) directly from the GPU memory 116a and / or the source GPU 114a may transfer some of the blocks (e.g. relay data 210) to the relay GPU 114b via the GPU-to-GPU communication network 106. The relay GPU 114b may temporarily store or buffer the relay data 210 in its respective GPU memory 116b. The network switch 110 may transfer the relay data 210 directly from the GPU memory 116b to the external storage 160. When each block has been successfully transmitted to the network switch 110, the source GPU 114a may release the token associated with the block. In another aspect, the relay GPU 114b may release the token in response to a release message from the source GPU 114a, such as including a token identifier transmitted with each block, once the block has been transmitted to the network switch 110.
[0050] As shown in FIG. 8, the network switch 110 may comprise one or more processors 802 configured to execute instructions from one or more memories 804. The memory 804 is configured to store instructions used to perform operations described herein. The memory 804 may also be configured to store data that is used, generated, or collected by the network switch 110. For example, the memory 804 can store software instructions or modules configured to implement some or all the functionalities and / or operations described herein and that which are executed by the one or more processors 802.
[0051] The memory 804 is configured to store at least a part of the corresponding computer program instructions and / or data. In an example, the one or more processors 802 execute the computer program instructions stored in the memory 804 to implement related operations (for example, inputting, outputting, receiving, and transmitting) in the method embodiments disclosed herein. In some implementations, the memory 804 being configured to store the corresponding computer program instructions and / or data may mean that the memory 804 is configured to store all the corresponding computer program instructions and / or data for execution by the one or more processors 802. In some implementations, the memory 804 being configured to store the corresponding computer program instructions and / or data may mean that the memory 804 is configured to store a part of the corresponding computer program instructions and / or data. For example, the part of the corresponding computer program instructions and / or data may include computer program instructions and / or data that need to be currently executed by the one or more processors 802. Thus, the memory 804 may store different parts of computer program instructions and / or data for a plurality of times for the one or more processors 802 to perform related operations in the methods disclosed herein.
[0052] For clarity and to avoid overcrowding the illustration, only a single downstream transceiver 806, upstream transceiver 808, processor 802, and memory 804 are illustrated for simplicity, but the network switch 110 may include one or more other components.
[0053] The processor 802 may be coupled to one or more downstream transceivers 806 and / or one or more upstream transceivers 808. In some aspects, the downstream transceivers 806 may be wired or wireless and likewise the upstream transceivers 808 may be wired or wireless. In the wireless aspects, the transceivers 806, 808 may be coupled to one or more antennas. For clarity, no antennas are illustrated. In some implementations, the transceivers 806, 808 may be separate transmitters and receivers. The transceivers 806, 808 are configured to modulate data or other content for transmission by one or more antennas, the network interface controller (NIC) 112, or the bus 102. The transceivers 806, 808 may also be configured to demodulate data or other content received by the one or more antennas, NIC 112, and / or bus 102. A transceiver may include any suitable structure for generating signals for wireless or wired transmission and / or for processing signals received through wireless or wired communication. Each antenna includes any suitable structure for transmitting and / or receiving wireless or wired signals. The transceivers 806, 808 are configured to process signals and execute one or more communication protocols.
[0054] As a communication interface, the transceivers 806, 808 are configured to implement communication with another component. For example, the transceivers 806, 808 may communicate a signal with other apparatus / system such as a radio frequency processing apparatus, or processor system. The communication includes transmitting signal (or data, information) to another component or device, or receiving signal from another component or device. “Transmitting” includes outputting the signal to a component or device that is directly or indirectly coupled to the interface circuit (transmitting unit) . “Receiving” includes inputting or obtaining a signal from a component or device that is directly or indirectly coupled to the interface circuit (receiving unit) . Optionally, to reduce a load of the one or more processors 802, a baseband signal processing circuit may be also disposed to implement processing of at least a part of baseband signals, including signal demodulation, modulation, encoding, decoding, or the like.
[0055] The processor 802 may be configured to perform (or control the network switch 110 to perform) operations (or methods) described herein as being performed by the network switch 110. Although not illustrated, in some implementations, the processor 802 may either be a part of the downstream transceivers 806 and / or a part of the upstream transceivers 808. Although not illustrated, in some implementations, the memory 804 may be a part of the processor 802.
[0056] The processor 802, along with the processing components of the downstream transceivers 806 and the upstream transceivers 808 may each be implemented by one or more processors 802 that may be the same or different. These processors 802 are configured to execute instructions stored in a memory (such as in the memory 804) .
[0057] The processor 802 may be configured to perform other network side processing operations. In some implementations, the processor 802 may generate signaling data, to configure one or more parameters of the network switch 110 and / or one or more parameters of another network switch 110. Any signaling data generated by the processor 802 is sent by the downstream transceivers 806 and / or the upstream transceivers 808. The network switch 110 may further include a memory 804 that is configured to store instructions for performing the operations described herein. The memory 804 may also store data that is used, generated, or collected by the network switch 110. For example, the memory 804 can store software instructions or modules configured to implement some or all of the functionalities and / or implementations described herein and that which are executed by the processor 804.
[0058] The network switch 110 may be a communication device or an apparatus implemented in a communication device. For example, the network switch 110 may be an integrated circuit, which in some instances may be referred to as a chip, a modem, a modem chip, a baseband chip, or a baseband processor. In some implementations, one or more integrated circuits can be packaged into a system-on-chip, a system-in-package, or a multi-chip module. The network switch 110 can include one or more integrated circuits and other discrete components.
[0059] Turning to FIG. 9, a process 900 for relaying data to a graphical processing unit (GPU) 114 with a plurality of GPU-to-GPU communication links 106 between at least one relay graphical processor unit and the GPU is shown. The process tracks a bandwidth of a network link of the GPU at step 902. The process at step 908 may relay at least a portion of the data via the GPU-to-GPU communication link between the GPU and the at least one relay graphical processor unit for communication with the network switch. In some aspects, the process may determine an available bandwidth of the communication interface for the at least one potential relay graphical processor unit (step 904) and may reserving the available bandwidth on the at least one other graphical processor unit (step 906) .
[0060] The GPU clusters 100, 400, 600 and / or the network switch 110 may include other components, not shown or described herein for the sake of clarity.
[0061] In some aspects, the GPUs 114 may receive update, methods, and / or instructions from the external storage 160 for execution thereon.
[0062] The GPU memory 116 is configured to store at least a part of corresponding computer program instructions and / or data. In an example, the GPUs 114 execute the computer program instructions stored in the memory 116 to implement related operations (for example, inputting, outputting, receiving, and transmitting) in the method embodiments disclosed herein. In some implementations, the memory 116 being configured to store the corresponding computer program instructions and / or data may mean that the memory 116 is configured to store the entire corresponding computer program instructions and / or data for execution by the one or more GPUs 114. In some implementations, the memory 116 being configured to store the corresponding computer program instructions and / or data may mean that the memory 116 is configured to store a part of the corresponding computer program instructions and / or data. For example, the part of the corresponding computer program instructions and / or data may include computer program instructions and / or data that need to be currently executed by the one or more GPUs 114. Thus, the memory 116 may store different parts of computer program instructions and / or data for a plurality of times for the one or more GPUs 114 to perform related operations in the methods disclosed herein.
[0063] It may be understood that the units in the GPU cluster 100, 400, 600 may be logical or functional. Each function may correspond to one functional unit, or two or more functions may be integrated into a single functional unit. In actual implementation, all or some of the units may be integrated into a single physical entity or may be distributed across different physical entities. In addition, the functional units may be implemented in the form of hardware, software, or a combination of hardware and software. Whether a function is implemented in the form of hardware or software depends on applications and design constraint conditions of the technical solutions. A person skilled in the art may use different methods to implement the described functions for specific applications, but it should not be considered that the implementation goes beyond the scope of this disclosure.
[0064] In an example, a functional unit in any one of the GPU clusters 100, 400, 600 may be configured as one or more integrated circuits for implementing the methods disclosed herein, for example, as one or more application-specific integrated circuits (application-specific integrated circuits, ASICs) , one or more central processing units (CPUs) , one or more microprocessors or microprocessor units (MPUs) , one or more microcontrollers or microcontroller units (MCUs) , one or more digital signal processors (DSPs) , one or more field programmable gate arrays (FPGAs) , or a combination of these.
[0065] In an example, the external storage unit 160 may include a random-access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, and / or a register.
[0066] A processor 802 or GPU 114 may be referred to as a processor system, an application processor, a baseband processor, a processor circuit, or a processor core. The processor 802 or GPU 114 may include one or a combination of one or more central processing units (CPUs) , one or more digital signal processors (DSPs) , one or more microprocessors (microprocessor units, MPUs) , one or more microcontrollers (microcontroller units, MCUs) , one or more graphics processing units (GPUs) , one or more field programmable gate arrays (FPGAs) , one or more artificial intelligence processors (AI processors) , or one or more neural network processing units (NPUs) .
[0067] Memory 116, 804 may include one or more of the following storage media: a random access memory (RAM) , a static random access memory (static RAM, SRAM) , a dynamic random access memory (dynamic RAM, DRAM) , a phase-change memory (PCM) , a resistive random access memory (resistive RAM, ReRAM) , a magneto-resistive random access memory (magneto-resistive RAM, MRAM) , a ferroelectric random access memory (ferroelectric RAM, FRAM) , a cache, a register, a read-only memory (ROM) , a flash memory (flash memory) , an erasable programmable read-only memory (erasable programmable ROM, EPROM) , a hard disk, and the like. In an example, computer program instructions used to execute embodiments may be stored in a non-volatile memory, for example, at least a part of a memory or storage unit (for example, one or more of a ROM, a flash memory, an EPROM, or a hard disk) . When a terminal runs, a part or all of corresponding computer program instructions may be loaded to a memory that has a higher transmission speed with the processor, for example, at least a part of a memory or a storage unit (for example, one or more of a RAM, an SRAM, a DRAM, a PCM, a RERAM, an MRAM, a FRAM, a cache, or a register) , so that the processor executes the computer program instructions to perform the steps in the method embodiments disclosed herein.
[0068] Although the description uses the term “network switch” and “top-of-rack network switch” , the person skilled in the art on review of the present description would understand that the techniques may be applied to any type of network switch or router.
[0069] Although the description refers to elements by number (i.e. NIC 112, GPU 114, HBM 116) , the description of these elements may apply equally when the description refers to a particular element, such as NIC 112a-n, GPU 114a-n, and / or HBM 116a-n, and vice versa.
[0070] Although the description shows the external storage 160 connected to the top-of-rack network switch 110 via the network 150, other aspects may have the external storage 160 connected directly to the top-of-rack network switch 110 with a NIC 112 coupled between the external storage 160 and the top-of-rack network switch 110. In some aspects, the external storage 160 may be directly connected to the network switch 110 by a bus 102.
[0071] In the present disclosure, the terms “a” or “an” are defined to mean “at least one” , that is, these terms do not exclude a plural number of items, unless stated otherwise.
[0072] In the present disclosure, terms such as “substantially” , “generally” and “about” , which modify a value, condition, or characteristic of a feature of an example aspect, should be understood to mean that the value, condition, or characteristic is defined within tolerances that are acceptable for the proper operation of the example aspect for its intended application.
[0073] In the present disclosure, unless stated otherwise, the terms “connected” and “coupled” , and derivatives and variants thereof, refer herein to any structural or functional connection or coupling, either direct or indirect, between two or more elements. For example, the connection or coupling between the elements can be acoustical, mechanical, optical, electrical, thermal, logical, or any combinations thereof.
[0074] In the present disclosure, expressions such as “match” , “matching” and “matched” , including variants and derivatives thereof, are intended to refer herein to a condition in which two or more elements are either the same or within some predetermined tolerance of each other. That is, these terms are meant to encompass not only “exactly” or “identically” matching the two elements but also “substantially” , “approximately” or “subjectively” matching the two or more elements, as well as providing a higher or best match among a plurality of matching possibilities.
[0075] In the present disclosure, the expression “based on” is intended to mean “based at least partly on” , that is, this expression can mean “based solely on” or “based partially on” , and so should not be interpreted in a limited manner. More particularly, the expression “based on” could also be understood as meaning “depending on” , “representative of” , “indicative of” , “associated with” or similar expressions.
[0076] In the present disclosure, the terms "system" and "network" may be used interchangeably in different embodiments of this application. "At least one" means one or more, and "a plurality of" means two or more. The term "and / or" describes an association relationship of associated objects and indicates that three relationships may exist. For example, A and / or B may indicate the following three cases: Only A exists, both A and B exists, and only B exists, where A and B may be singular or plural. The character " / " indicates an "or" relationship between associated objects. "At least one of the following items (pieces) " or a similar expression thereof indicates any combination of these items, including a single item (piece) or any combination of a plurality of items (pieces) . For example, "at least one of A, B, or C" includes: only A; only B; only C; A and B; A and C; B and C; or A, B, and C, and "at least one of A, B, and C" may also be understood as including: only A; only B; only C; A and B; A and C; B and C; or A, B, and C. In addition, unless otherwise specified, ordinal numbers such as "first" and "second" in embodiments of this application are used to distinguish between a plurality of objects, and are not used to limit a sequence, a time sequence, priorities, or importance of the plurality of objects.
[0077] A person skilled in the art should understand that embodiments of this application may be provided as a method, an apparatus (or system) , computer-readable storage medium, or a computer program product. Therefore, this application may use a form of a hardware-only aspect, a software-only aspect, or an aspect with a combination of software and hardware. Moreover, this application may use a form of a computer program product that is implemented on one or more computer-usable storage media (including but not limited to a disk memory, an optical memory, and the like) that include computer-usable program code.
[0078] This application is described with reference to the flowcharts and / or block diagrams of the method, the device (system) , and the computer program product according to this application. Computer program instructions may be used to implement each process and / or each block in the flowcharts and / or the block diagrams and a combination of a process and / or a block in the flowcharts and / or the block diagrams. The computer program instructions may be provided for a general-purpose computer, a dedicated computer, an embedded processor, or a processor of another programmable data processing device and enable a machine to execute the instructions. When executed by any computer or the processor of a programmable data processing device, the instructions cause the apparatus to implement specific functions as described in one or more procedures in the flowcharts and / or one or more blocks in the block diagrams. The computer program instructions may alternatively be stored in a computer-readable memory that can indicate a computer or another programmable data processing device to work in a specific manner, so that the instructions stored in the computer-readable memory generate an artifact that includes an instruction apparatus. The instruction apparatus implements a specific function in one or more procedures in the flowcharts and / or one or more blocks in the block diagrams.
[0079] The computer program instructions may alternatively be loaded onto a computer or another programmable data processing device, so that a series of operations and steps are performed on the computer or another programmable device, so that computer-implemented processing is generated. Therefore, the instructions executed on the computer or on another programmable device provide steps for implementing specific functions as described in one or more procedures in the flowcharts and / or one or more blocks in the block diagrams.
[0080] A person skilled in the art can make various modifications and variations to this application without departing from the scope of this disclosure. This disclosure is intended to cover these modifications and variations of this application if they fall within the scope of protection defined by the following claims and their equivalent technologies.
Claims
1.A system comprising:a plurality of graphical processing units (GPUs) with a GPU-to-GPU communication network between the graphical processing units;a plurality of network links communicating with an associated graphical processing unit;a network switch coupled to the network links and configured to provide data via the network links to the graphical processing units; andthe graphical processing units configured to execute instructions from a computer-readable medium, the instructions comprise:relaying at least a portion of the data via the GPU-to-GPU communication network between the associated graphical processing units and at least one other graphical processing unit for communication with the network switch.2.The system according to claim 1, wherein the instructions further comprise: determining an available bandwidth of at least one of the network links for the at least one other graphical processing unit; and reserving the available bandwidth on the at least one other graphical processing unit.3.The system according to claim 1, further comprising: at least one bidirectional serial communication link between the associated graphical processing unit and at least one of the network links; and the bidirectional serial communication link has less serial link bandwidth than a GPU-to-GPU communication network bandwidth.4.The system according to claim 2, wherein the available bandwidth of the network link is indicated by at least one token.5.The system according to claim 1, wherein an available GPU-to-GPU communication network bandwidth is indicated by at least one token.6.The system according to claim 4, wherein a quantity of the at least one token is proportional to the available bandwidth.7.The system according to claim 2, wherein the instructions further comprise: receiving a reservation message to reserve the available bandwidth from the at least one other graphical processing unit.8.The system according to claim 7, wherein the instructions further comprise: requesting at least some of the data from the network switch for the at least one other graphical processing unit.9.The system according to claim 8, wherein the instructions further comprise: transmitting the at least some of the data to the at least one other graphical processing unit via the GPU-to-GPU communication network.10.The system according to claim 8, wherein the instructions further comprise: releasing the available bandwidth on the at least one other graphical processing unit once the at least some of the data is transferred.11.A network switch configured to provide data via a plurality of network links to and from a plurality of graphical processor units (GPUs) , the graphical processor units connected via a GPU-to-GPU communication network, the network switch comprising:a processor configured to execute instructions from a computer-readable medium, the instructions comprise:relaying at least a portion of the data via the network link of at least one other graphical processor unit to relay via the GPU-to-GPU communication network between the at least one other graphical processor unit and a graphical processor unit corresponding to an overutilized network link.12.The network switch according to claim 11, wherein the instructions further comprise: determining an available bandwidth of at least one of the network links for the at least one other graphical processor unit; and reserving the available bandwidth on the at least one other graphical processor unit.13.The network switch according to claim 11, further comprising: at least one bidirectional serial communication link between at least one of the graphical processing units and at least one of the network links; and the at least one bidirectional serial communication link has less serial link bandwidth than a GPU-to-GPU communication network bandwidth.14.The network switch according to claim 12, wherein the available bandwidth of the network link is indicated by at least one token.15.The network switch according to claim 11, wherein an available GPU-to-GPU communication network bandwidth is indicated by at least one token.16.The network switch according to claim 14, wherein a quantity of the at least one token is proportional to the available bandwidth.17.The network switch according to claim 12, wherein the instructions further comprise: releasing the available bandwidth on the at least one other graphical processor unit once the at least some of the data is transferred.18.A method for relaying data to a graphical processing unit (GPU) with a GPU-to-GPU communication network between at least one relay graphical processor unit and the graphical processing unit, the method comprising:tracking a bandwidth of a network link of the graphical processing unit, the network link coupled to a network switch; andrelaying at least a portion of the data via the GPU-to-GPU communication network between the graphical processing unit and the at least one relay graphical processor unit for communication with the network switch.19.The method according to claim 18 further comprising: determining an available bandwidth of the network link for the at least one relay graphical processor unit; and reserving the available bandwidth on the at least one relay graphical processor unit.20.A system comprising:a graphical processing unit configured to execute instructions from a computer-readable medium, the instructions comprise:reserving an available bandwidth on at least one relay graphical processing unit; andrelaying data via a GPU-to-GPU communication network between the graphical processing unit and the at least one relay graphical processing unit for communication with a network switch.