Data transmission method and computing cluster
By establishing cache space indication information between the graphics processing units of the computing cluster, detecting and transmitting data in real time, the problem of low data transmission efficiency between the graphics processing units is solved, and more efficient data transmission and bandwidth utilization is achieved.
Patent Information
- Application Number
- CN202411945331.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-12-26
- Publication Date
- 2025-04-18
AI Technical Summary
In the computing cluster, when data transmission between graphics processing units is transmitted, the receiver causes congestion due to excessive data, resulting in reduced data transmission efficiency. Especially when processing large-scale model computing tasks, the receiver's path congestion causes other paths to be unable to be fully utilized, greatly reducing the data transmission efficiency.
In the computing cluster, by establishing cache space indication information between the two graphics processing units, the empty space indication information of the data transmission path is detected in real time, and the cache space indication information is generated and sent, so that the sender can determine and transmit data based on the free path identification of the receiver.
By timely sensing the receiver's data transmission path fullness, ensuring that data is transmitted without congestion on the receiver, improving the efficiency of data transmission and the utilization of inter-chip interconnection bandwidth, reducing the data transmission efficiency caused by data loss and path congestion.
Smart Images

Figure CN119847679A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to but is not limited to the field of computer technology, and in particular to a data transmission method and a computing cluster. Background Art
[0002] Computing clusters are usually composed of multiple graphics processing units, which work together to handle large-scale and complex computing tasks. When data is exchanged between any two graphics processing units, the receiving party will be congested due to the excessive amount of data received, resulting in reduced data transmission efficiency. Especially when processing computing tasks of large-scale models, the receiving party will have one path congested, resulting in the inability to fully utilize other paths, which greatly reduces data transmission efficiency. Summary of the invention
[0003] In view of this, the embodiments of the present disclosure at least provide a data transmission method and a computing cluster.
[0004] The technical solution of the embodiment of the present disclosure is implemented as follows:
[0005] On the one hand, an embodiment of the present disclosure provides a data transmission method including: in response to the presence of at least two graphics processing units in a computing cluster that send and receive data, establishing cache space indication information between the at least two graphics processing units; one of the two graphics processing units acts as a receiver and the other acts as a sender; obtaining the receiver's cache space indication information; the cache space indication information includes multiple receiving path identifiers; the receiving path identifier is used to indicate that the corresponding data transmission path is idle; based on the receiver's cache space indication information and the sending path identifier of the target data to be transmitted, determining whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0006] On the one hand, an embodiment of the present disclosure provides a data transmission method including: in response to the existence of at least two graphics processing units in a computing cluster that send and receive data, establishing cache space indication information between the at least two graphics processing units; one of the two graphics processing units acts as a receiver and the other acts as a sender; real-time detection of the empty and full conditions of their own data transmission paths; based on a receiving path identifier of an idle data transmission path, generating cache space indication information; and sending the cache space indication information to a sender so that the sender transmits data based on the cache space indication information.
[0007] On the other hand, an embodiment of the present disclosure provides a computing cluster, in which at least two graphics processing units are present in the computing cluster to send and receive data, and cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units is used as a receiver and the other is used as a sender;
[0008] The receiving party is used to detect the empty or full status of its own data transmission path in real time; generate buffer space indication information based on the receiving path identification of the idle data transmission path; and send the buffer space indication information to the sending party;
[0009] The sender is used to obtain the cache space indication information of the receiver; based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0010] On the other hand, an embodiment of the present disclosure provides an electronic device, including a memory and a processor, wherein the memory stores a computer program that can be executed on the processor, and when the processor executes the program, some or all of the steps in the above method are implemented.
[0011] On the other hand, an embodiment of the present disclosure provides a computer-readable storage medium having a computer program stored thereon, which implements part or all of the steps in the above method when executed by a processor.
[0012] On the other hand, an embodiment of the present disclosure provides a computer program, including a computer-readable code. When the computer-readable code is executed in an electronic device, a processor in the electronic device executes some or all of the steps for implementing the above method.
[0013] On the other hand, an embodiment of the present disclosure provides a computer program product, which includes a non-transitory computer-readable storage medium storing a computer program, and when the computer program is read and executed by a computer, it implements some or all of the steps in the above method.
[0014] In the disclosed embodiment, cache space indication information is established between two graphics processing units that are performing data exchange; thus, based on the cache space indication information, the empty or full status of the data transmission path of the receiving party can be clearly perceived in a timely manner, and the receiving party can be clearly informed of the existence of an idle data transmission path. Based on the cache space indication information of the receiving party and the sending path identifier of the target data, it is determined whether the receiving party has a target data transmission path, so as to transmit the target data to the destination address through the target data transmission path; thus, when the receiving party is not congested (has a target data transmission path), the target data is sent to ensure that the target data can be received by the receiving party, so that each transmitted data can be effectively received, thereby maximizing the communication efficiency, improving the utilization rate of the inter-chip interconnection bandwidth, and greatly reducing data loss and the situation where the receiving party has path congestion resulting in low data transmission efficiency.
[0015] It should be understood that the above general description and the following detailed description are merely exemplary and explanatory, and are not intended to limit the technical solutions of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The drawings herein are incorporated into the specification and constitute a part of the specification. These drawings illustrate embodiments consistent with the present disclosure and are used to illustrate the technical solutions of the present disclosure together with the specification.
[0017] Figure 1 A schematic diagram of an implementation process of a data transmission method provided in an embodiment of the present disclosure Figure 1 ;
[0018] Figure 2 An interactive diagram of a data transmission method provided by an embodiment of the present disclosure Figure 1 ;
[0019] Figure 3 A schematic diagram of an implementation process of a data transmission method provided in an embodiment of the present disclosure Figure 2 ;
[0020] Figure 4 A schematic diagram of an implementation process of a data transmission method provided in an embodiment of the present disclosure Figure 3 ;
[0021] Figure 5 A schematic diagram of an implementation process of a data transmission method provided in an embodiment of the present disclosure Figure 4 ;
[0022] Figure 6 An interactive diagram of a data transmission method provided by an embodiment of the present disclosure Figure 2 ;
[0023] Figure 7 An interactive diagram of a data transmission method provided by an embodiment of the present disclosure Figure 3 ;
[0024] Figure 8 An interactive diagram of a data transmission method provided by an embodiment of the present disclosure Figure 4 ;
[0025] Fig. 9 An interactive diagram of a data transmission method provided by an embodiment of the present disclosure Figure 5 ;
[0026] Fig.10 A hardware entity schematic diagram of an electronic device provided in an embodiment of the present disclosure. DETAILED DESCRIPTION
[0027] In order to make the purpose, technical solutions and advantages of the present disclosure clearer, the technical solutions of the present disclosure are further elaborated in detail below in conjunction with the drawings and embodiments. The described embodiments should not be regarded as limiting the present disclosure. All other embodiments obtained by ordinary technicians in the field without making creative work are within the scope of protection of the present disclosure.
[0028] In the following description, reference is made to “some embodiments”, which describe a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0029] The terms "first / second / third" involved are merely used to distinguish similar objects and do not represent a specific ordering of the objects. It is understandable that "first / second / third" can be interchanged with a specific order or sequence where permitted so that the embodiments of the present disclosure described herein can be implemented in an order other than that illustrated or described herein.
[0030] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those commonly understood by those skilled in the art to which the present disclosure belongs. The terms used herein are only for the purpose of describing the present disclosure and are not intended to limit the present disclosure.
[0031] In order to better understand the data transmission method provided by the embodiment of the present disclosure, the solution in the related art is first described below.
[0032] Computing clusters achieve parallel computing by assigning computing tasks to different graphics processing units, thereby improving data processing efficiency. Computing clusters can more efficiently complete complex computing tasks such as training and reasoning of machine learning models. Graphics processing units can refer to chips, and communication between multiple chips generally uses high-speed Serdes communication technology. However, the communication overhead between multiple chips will become a bottleneck for the overall computing power, and retransmission waste will be caused to avoid data loss.
[0033] Especially in the application scenarios of large-scale models, the bandwidth requirements are very high. The receiver must be connected to the local high-bandwidth communication network. When the receiver's buffer faces multi-path arrival, one path is often congested, resulting in multiple paths not being fully utilized, greatly reducing data transmission efficiency.
[0034] To this end, an embodiment of the present disclosure provides a data transmission method, which can be executed by a sender.
[0035] like Figure 1 As shown, the method includes the following steps 101 to 103:
[0036] Step 101: In response to at least two graphics processing units in a computing cluster sending and receiving data, cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units serves as a receiver and the other as a sender.
[0037] A graphics processing unit refers to a device with data processing capabilities. In a feasible implementation, a graphics processing unit may include, but is not limited to, a chip, a silicon chip, or an integrated circuit (IC) and other devices with data processing capabilities. For example, a graphics processing unit may be a microprocessor, a memory chip including a random access memory (RAM) and a read-only memory (ROM), a logic chip, an analog chip, an application-specific integrated circuit (ASICs), etc.
[0038] The cache space indication information is used to characterize the idleness of the data transmission path of the receiver. In a feasible implementation, the cache space indication information at least includes: a sending path identifier of an idle data transmission path, so as to clearly know that the receiver currently has an idle data transmission path through the sending path identifier, which is convenient for data transmission. In addition, the cache space indication information may also include: an idle buffer corresponding to the sending path identifier, the address of the buffer, and the type of data that can be stored in the buffer, etc.
[0039] like Figure 2 As shown, when there is an idle data transmission path, the receiver sends the cache space indication information including the sending path identifier of the idle data transmission path to the sender; thus, the sender sends data to the receiver based on the cache space indication information.
[0040] For example, the buffer space indication information may be credit information. The implementation process of the credit mechanism is: when there is a buffer vacancy, the receiver will release credits information to the sender to inform the sender that data can be transmitted.
[0041] Step 102: Obtain cache space indication information of the receiver; the cache space indication information includes multiple receiving path identifiers; the receiving path identifier is used to indicate that the corresponding data transmission path is idle.
[0042] In some implementations, step 102 may be specifically implemented as follows: the receiver monitors the fullness or emptyness of its own data transmission path in real time, and sends the transmission path identifiers of idle data transmission paths to the sender in the form of credit information.
[0043] In some embodiments, the specific implementation method of step 102 can also be: when the sender has a data transmission demand, a request for obtaining cache space indication information is sent to the receiver; after receiving the acquisition request, the receiver sends the cache space indication information including a sending path identifier of an idle data transmission path to the receiver.
[0044] It should be noted that the existing credit mechanism only releases credit to the sender when the receiver has buffer space. The credit can only indicate that data can be transmitted at present, and cannot know the idle status of the data transmission path. However, the buffer space indication information in the embodiment of the present disclosure clearly includes the transmission path identifier of the idle data transmission path, which can clearly know which data transmission path can be used to transmit data.
[0045] Step 103: Based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0046] The target data refers to the data to be transmitted. The target data transmission path refers to the path for the receiver (receiver) to receive the target data. The sending path identifier refers to the path identifier of the target data at the sender. The path identifier is used to uniquely identify the corresponding data transmission path and to classify and manage the buffer. For example, the path identifier can be represented by tagi, where i is a positive integer.
[0047] In some implementations, if the multiple data transmission paths of the receiver are not divided according to the service type, the specific implementation of step 103 may be: determining that there is an idle data transmission path based on the cache space indication information; and selecting one from the idle data transmission paths as the target data transmission path. The selection method may include but is not limited to: a random selection method, a selection method based on the number of selections, a selection method based on the idle time length, and a polling selection method.
[0048] In some implementations, if the multiple data transmission paths of the receiving party are divided according to the service type, the specific implementation of step 103 may be: determining that there is an idle data transmission path based on the cache space indication information; and determining the target data transmission path from the idle data transmission paths based on the service type of the target data. In this case, the target data transmission path refers to a data transmission path that matches the service type of the target data.
[0049] In the disclosed embodiment, cache space indication information is established between two graphics processing units that are performing data exchange; thus, based on the cache space indication information, the empty or full status of the data transmission path of the receiving party can be clearly perceived in a timely manner, and the receiving party can be clearly informed of the existence of an idle data transmission path. Based on the cache space indication information of the receiving party and the sending path identifier of the target data, it is determined whether the receiving party has a target data transmission path, so as to transmit the target data to the destination address through the target data transmission path; thus, when the receiving party is not congested (has a target data transmission path), the target data is sent to ensure that the target data can be received by the receiving party, so that each transmitted data can be effectively received, thereby maximizing the communication efficiency, improving the utilization rate of the inter-chip interconnection bandwidth, and greatly reducing data loss and the situation where the receiving party has path congestion resulting in low data transmission efficiency.
[0050] The present disclosure provides a data transmission method, which can be performed by a sender. Figure 3 As shown, the method includes the following steps 301 to 304:
[0051] Step 301: In response to at least two GPUs in a computing cluster sending and receiving data, cache space indication information is established between the at least two GPUs; one of the two GPUs serves as a receiver and the other as a sender.
[0052] Step 302: Obtain cache space indication information of the receiver; the cache space indication information includes multiple receiving path identifiers; the receiving path identifier is used to indicate that the corresponding data transmission path is idle.
[0053] Here, the above steps 301 to 302 correspond to the above steps 101 to 102 respectively, and the specific implementation methods of the above steps 101 to 102 may be referred to during implementation.
[0054] Step 303: Generate a sending path identifier of the target data based on the destination address of the target data.
[0055] The receiving side may include multiple data transmission paths, and the multiple data transmission paths are all used to receive data sent from other graphics processing units.
[0056] In some embodiments, the multiple data transmission paths can be determined according to the hardware performance of the receiver. Further, the multiple data transmission paths can be determined according to the physical address of the receiver. For example, if the receiver contains a physical address of 0-100G, then 0-33G can be used as the first storage area, 34-66G as the second storage area, and 67-99G as the third storage area; the path transmitted to the first storage area is used as the first data transmission path, the path transmitted to the second storage area is used as the second data transmission path, and the path transmitted to the third storage area is used as the path identifier of the first data transmission path. The path identifier of the second data transmission path can be tag0, the path identifier of the second data transmission path can be tag1, and the path identifier of the third data transmission path can be tag2.
[0057] In some implementations, the data transmission path can be configured according to business requirements. For example, if the business requirements indicate that three data transmission paths are required to ensure efficient data transmission, then three data transmission paths can be configured in the receiver, and the path identifiers of the three data transmission paths are set to tag0, tag1, and tag2 respectively.
[0058] In some embodiments, the specific implementation method of step 303 may be: generating the sending path identifier based on the destination address of the target data through at least one identifier generation method in the identifier generator of the sender; the identifier generation method includes: an identifier generation method based on a hash function, an identifier generation method based on a mantissa, and an identifier generation method based on data interleaving combination.
[0059] Among them, an identifier generator is deployed in the sender, and the identifier generator is used to generate a path identifier corresponding to the target data, so as to transmit the target data through the data transmission path corresponding to the path identifier. The identifier generator can be represented as a destination tag. There are multiple identifier generation methods set in the identifier generator, and the multiple identifier generation methods may include but are not limited to: an identifier generation method based on a hash function, an identifier generation method based on a mantissa, and an identifier generation method based on data interleaving combination.
[0060] For example, a specific implementation method of generating a sending path identifier by using an identifier generation method based on a hash function may be: using a hash function to perform computation processing on a destination path of target data to obtain a sending path identifier of a fixed length.
[0061] For example, a specific implementation method of generating a sending path identifier using a digit-based identifier generation method may be: establishing an association relationship between the address digit and the path identifiers of different data transmission paths; searching for an association record with the same digit as the destination address from the association relationship, and using the path identifier in the association record as the sending path identifier.
[0062] For example, the specific implementation of generating the sending path identifier by using the identifier generation method based on data interleaving combination may be: interleaving the destination path of the target data to obtain the sending path identifier. The identifier generation method based on data interleaving combination may be an interleave method.
[0063] It should be noted that the ultimate goal of the identifier generator is to achieve load balancing of different data transmission paths in a short period of time. In layman's terms, when the identifier generator processes data in a short period of time, different path identifiers are obtained to evenly distribute the data in a short period of time to different data transmission paths.
[0064] In some implementations, if balanced traffic distribution can be achieved through one identification generation method, then the sending path identification corresponding to the target data can be generated by only one identification generation method. If balanced traffic distribution cannot be achieved through one identification generation method, then the sending path identification corresponding to the target data can be generated by two or more identification generation methods.
[0065] For example, the last digits of the data to be transmitted in a short time are all 0. At this time, the path identifiers obtained by the identifier generation method based on the last digit are the same. In this case, the identifier generation method based on the hash function can be used to divert the data to be transmitted in a short time again to ensure that different data is transmitted through different data transmission paths to achieve balanced diversion.
[0066] It should be noted that the data transmission path of any data to be transmitted can be determined by the identifier generator, so that the data can be diverted in advance on the sending side to improve the effectiveness of data transmission. In addition, the path identifier is only used for diversion and not for transmission, so that the utilization rate of the inter-chip interconnection bandwidth and the data transmission efficiency can be further improved.
[0067] Step 304: Based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0068] Here, the above steps 303 to 304 correspond to the above step 103, and the specific implementation of the above step 103 may be referred to during implementation.
[0069] In some implementations, step 304 may be implemented by steps 3041 to 3042 as follows:
[0070] Step 3041: Based on the buffer space indication information of the receiver, determine the receiving path identifier of an idle data transmission path in the receiver.
[0071] The receiving path identifier refers to an identifier of one or more idle data transmission paths at the receiving end.
[0072] Step 3042: When the idle receiving path identifier matches the sending path identifier, determine that the receiving party has the target data transmission path.
[0073] The receiving path identifier matches the sending path identifier, which means that the receiving path identifier contains the same path identifier as the sending path identifier, which means that the data transmission path allocated for the target data is idle, that is, the target data can be received by the receiver. The target data transmission path refers to the data transmission path corresponding to the sending path identifier.
[0074] In a feasible implementation manner, when there is a path identifier that is the same as the sending path identifier in the second path identifier, it is determined that the receiving party currently has a target data transmission path that can transmit the target data.
[0075] In some embodiments, after acquiring the target data, steps A1 to A3 may also be performed:
[0076] Step A1: Determine at least one first buffer in the buffer manager of the sender.
[0077] Here, the buffer manager is used to manage the buffer in the sender. The at least one first buffer refers to one or more buffers in the sender; the at least one first buffer can be divided according to the data transmission path to achieve flow distribution storage.
[0078] Step A2: Determine, from the at least one first buffer, at least one first target buffer that corresponds to the sending path identifier and is not in use.
[0079] The at least one first target buffer refers to one or more buffers in the sender that can meet the storage requirements of the target data.
[0080] In some embodiments, the specific implementation method of step A2 may be: determining at least one second buffer corresponding to the sending path identifier from the at least one first buffer; determining at least one unused third buffer from the at least one second buffer; and determining at least one first target buffer from the at least one third buffer based on the data volume of the target data and the data volume that can be stored in a single buffer.
[0081] In some implementations, step A2 may be implemented by steps A21 to A23 as follows:
[0082] Step A21: Based on the association relationship between the at least one first buffer and different path identifiers, determine at least one second buffer corresponding to the sending path identifier from the at least one first buffer.
[0083] The at least one second buffer refers to one or more buffers corresponding to the sending path identifier in the sender. The buffer has a corresponding relationship with the path identifier, that is, the buffer has a corresponding relationship with the data transmission path. Each path identifier can correspond to one or more buffers. The at least one first target buffer refers to one or more buffers where the target data is temporarily stored in the sender.
[0084] Each buffer may refer to an entry. Each entry may include an entry identifier (entry_id) and specific data (stat); wherein entry_id is used to uniquely identify the entry, for example, entry_id may be an identifier composed of multiple letters and / or numbers; stat is used to store the data itself. Then, the target data is stored in at least one first target buffer, that is, the target data is stored in the entry in at least one first target buffer.
[0085] In some embodiments, "step A21 may be implemented by: determining an association relationship between the at least one first buffer and different path identifiers; and determining the at least one second buffer from the at least one first buffer based on a match between the sending path identifier and the association relationship.
[0086] In a feasible implementation, a specific implementation of "determining the association relationship between the at least one first buffer and different path identifiers" may be: pre-dividing at least one first buffer in the sender according to the data transmission path of the receiver, associating the path identifiers of different data transmission paths with the corresponding first buffers, and obtaining the association relationship between at least one first buffer and different path identifiers.
[0087] In a feasible implementation, the specific implementation of "determining the at least one second buffer from the at least one first buffer based on the matching of the sending path identifier and the association relationship" may be: using the sending path identifier as a matching basis, searching for a path identifier matching the sending path identifier from the association relationship, and using one or more first buffers associated with the matching path identifier as at least one second buffer. For example, if the sending path identifier is tag0, then one or more buffers associated with tag0 in the association relationship are used as at least one second buffer.
[0088] Step A22: Based on the usage of the at least one second buffer, determine at least one unused third buffer from the at least one second buffer.
[0089] The at least one third buffer refers to one or more buffers that correspond to the sending path identifier in the sender and are not in use.
[0090] In some embodiments, the specific implementation method of step A22 may be: according to the buffer status table of the buffer manager, determining at least one unused third buffer from the at least one second buffer; the buffer status table includes the usage of the at least one first buffer; or, according to the status identifier of the at least one second buffer, determining at least one unused third buffer from the at least one second buffer; the status identifier represents the usage of the corresponding buffer.
[0091] In a feasible implementation, the buffer manager can maintain a buffer status table, which includes the usage status of at least one first buffer. Therefore, the usage status of each second buffer can be queried from the buffer status table to determine one or more unused second buffers and use them as at least one third buffer.
[0092] In a feasible implementation, the state identifier is used to identify the usage of the corresponding buffer. Therefore, one or more unused second buffers can be determined according to the state identifier of each second buffer and used as at least one third buffer.
[0093] Step A23: Determine the at least one first target buffer from the at least one third buffer based on the data volume of the target data and the data volume that can be stored in a single buffer.
[0094] Step A3: storing the target data into the at least one first target buffer.
[0095] In some embodiments, after step 304, steps 305 to 306 may also be performed:
[0096] Step 305: When the receiving party has the target data transmission path, based on the sending path identifier, retrieve the target data from the at least one first target buffer.
[0097] Step 306: Send the target data to the receiver, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0098] In the disclosed embodiment, cache space indication information is established between two graphics processing units that are performing data exchange; thus, based on the cache space indication information, the empty or full status of the data transmission path of the receiving party can be clearly perceived in a timely manner, and the receiving party can be clearly informed of the existence of an idle data transmission path. Based on the cache space indication information of the receiving party and the sending path identifier of the target data, it is determined whether the receiving party has a target data transmission path, so as to transmit the target data to the destination address through the target data transmission path; thus, when the receiving party is not congested (has a target data transmission path), the target data is sent to ensure that the target data can be received by the receiving party, so that each transmitted data can be effectively received, thereby maximizing the communication efficiency, improving the utilization rate of the inter-chip interconnection bandwidth, and greatly reducing data loss and the situation where the receiving party has path congestion resulting in low data transmission efficiency.
[0099] The present disclosure provides a data transmission method, which can be performed by a receiving party. Figure 4 As shown, the method includes the following steps 401 to 404:
[0100] Step 401: In response to at least two GPUs in a computing cluster sending and receiving data, cache space indication information is established between the at least two GPUs; one of the two GPUs serves as a receiver and the other as a sender.
[0101] Here, step 401 is similar to the aforementioned step 101, and the specific implementation method of the aforementioned step 101 may be referred to during implementation.
[0102] Step 402: Detect the empty or full status of the data transmission path in real time.
[0103] In some implementations, the empty and full conditions of the data transmission path of the receiving party can be monitored in real time through monitoring software. Alternatively, when any data transmission path is used to transmit data, the status mark of the data transmission path can be updated to be used in time, and after the data transmission of the data transmission path is completed, the status mark of the data transmission path can be updated to be unused in time; in this way, the empty and full conditions of the data transmission path can be monitored in real time through the status mark of any data transmission path.
[0104] Step 403: Generate cache space indication information based on the receiving path identifier of the idle data transmission path.
[0105] In some implementations, a specific implementation of "generating indication information based on the idle situation" may be: carrying a path identifier of an idle data transmission path in a credit, and using it as cache space indication information.
[0106] Step 404: Send the cache space indication information to the sender, so that the sender transmits data based on the cache space indication information.
[0107] In the disclosed embodiment, cache space indication information is established between two graphics processing units that are performing data exchange; in this way, the receiving party can send the receiving path identifier of the idle data transmission path to the sending party in the form of cache space indication information. As a result, the sending party can timely perceive the empty or full status of the receiving party's data transmission path, and clearly know that the receiving party has an idle data transmission path. Furthermore, when the receiving party is not congested (has a target data transmission path), the sending party sends the target data to ensure that the target data can be received by the receiving party, so that each transmitted data can be effectively received, thereby maximizing communication efficiency, improving the utilization rate of the inter-chip interconnection bandwidth, and greatly reducing data loss and the situation where the receiving party has path congestion resulting in low data transmission efficiency.
[0108] The present disclosure provides a data transmission method, which can be performed by a receiving party. Figure 5 As shown, the method includes the following steps 501 to 506:
[0109] Step 501: In response to at least two GPUs in a computing cluster sending and receiving data, cache space indication information is established between the at least two GPUs; one of the two GPUs serves as a receiver and the other as a sender.
[0110] Step 502: Detect the empty or full status of the data transmission path in real time.
[0111] Step 503: Generate cache space indication information based on the receiving path identifier of the idle data transmission path.
[0112] Step 504: Send the cache space indication information to the sender, so that the sender transmits data based on the cache space indication information.
[0113] Here, the above steps 501 to 504 correspond to the above steps 401 to 404 respectively, and the specific implementation methods of the above steps 401 to 404 may be referred to during implementation.
[0114] Step 505: Receive the target data to be transmitted sent by the sender.
[0115] Step 506: Transmit the target data to a destination address based on the receiving path identifier of the target data and the target data transmission path corresponding to the receiving path identifier.
[0116] In some implementations, step 506 may be implemented by steps 5061 to 5063 as follows:
[0117] Step 5061: Generate a receiving path identifier of the target data based on the destination address of the target data.
[0118] Here, the operation of the receiver generating a receiving path identifier of the target data based on the destination address of the target data is the same as the operation of the sender generating a sending path identifier of the target data based on the destination address of the target data. When implementing, reference may be made to the specific implementation in the aforementioned step 303.
[0119] The receiving path identifier is the same as the sending path identifier. In order to further improve the utilization rate of the inter-chip link, the sender does not transmit the sending path identifier when transmitting the target data. In this case, the receiver needs to generate the receiving path identifier corresponding to the target data based on the destination address of the target data in order to determine the path identifier corresponding to the target data.
[0120] In some embodiments, the specific implementation method of step 5061 may be: generating the receiving path identifier based on the destination address of the target data through at least one identifier generation method in the identifier generator of the receiving party; the configuration of the identifier generator of the receiving party is the same as that of the identifier generator of the sending party.
[0121] The receiver is deployed with the same identifier generator as the sender to ensure that the receiving path identifier generated by the receiver is the same as the sending path identifier generated by the sender, thereby ensuring the consistency of data diversion between the receiver and the sender.
[0122] Step 5062: Determine whether there is an idle target data transmission path corresponding to the receiving path identifier.
[0123] In some embodiments, the specific implementation method of step 5062 may be: determining multiple data transmission paths corresponding to the receiving path identifier; detecting whether the multiple data transmission paths corresponding to the receiving path identifier are idle; and when there are multiple idle data transmission paths to be selected among the multiple data transmission paths, arbitrating the target data transmission path from the multiple data transmission paths to be selected.
[0124] In a feasible implementation, a path arbiter can be used to detect whether multiple data transmission paths corresponding to the received path identifier are idle; and when there are multiple idle data transmission paths to be selected among the multiple data transmission paths, a target data transmission path is arbitrated from the multiple data transmission paths to be selected.
[0125] The path arbiter is used to select data to be transmitted when there is an idle data transmission path. For example, when the first data transmission path is idle, the path arbiter can select data in the buffer corresponding to tag0 in the buffer manager for transmission.
[0126] Step 5063: Transmit the target data to the destination address through the target data transmission path.
[0127] In some embodiments, the data transmission method provided by the embodiments of the present disclosure further includes the following steps 507 to 508:
[0128] Step 507: When the target data is received, the target data is stored in at least one second target buffer corresponding to the receiving path identifier.
[0129] The at least one second target buffer refers to one or more buffers where the target data is temporarily stored in the receiving party.
[0130] In some embodiments, the specific implementation method of step 507 may be: determining at least one fourth buffer in the buffer manager of the receiver; the configuration of the buffer manager of the receiver and the buffer manager of the sender are the same; from the at least one fourth buffer, determining at least one second target buffer that corresponds to the sending path identifier and is not used; and storing the target data in the at least one second target buffer.
[0131] Here, the buffer manager is used to manage the buffer in the receiving party. The at least one fourth buffer refers to one or more buffers in the receiving party.
[0132] The receiver is deployed with the same buffer manager as the sender, so as to temporarily store the target data in the buffer in the same storage method, thereby ensuring the consistency of data diversion between the receiver and the sender.
[0133] In some embodiments, the specific implementation method of "determining at least one unused second target buffer corresponding to the sending path identifier from the at least one fourth buffer" may be: determining at least one fifth buffer corresponding to the sending path identifier from the at least one fourth buffer; determining at least one unused sixth buffer from the at least one fifth buffer; and determining the at least one second target buffer from the at least one sixth buffer based on the data volume of the target data and the data volume that can be stored in a single buffer.
[0134] At least one fifth buffer refers to one or more buffers corresponding to the sending path identifier in the receiving party. At least one sixth buffer refers to one or more buffers corresponding to the sending path identifier in the receiving party and not in use. At least one first target buffer refers to one or more buffers in the receiving party that can meet the storage requirements of the target data.
[0135] In some embodiments, a specific implementation method of "determining at least one fifth buffer corresponding to the sending path identifier from the at least one fourth buffer" may be: determining an association relationship between the at least one fourth buffer and different path identifiers; and determining the at least one fifth buffer from the at least one fourth buffer based on a match between the sending path identifier and the association relationship.
[0136] In a feasible implementation manner, a specific implementation manner of "determining the association relationship between the at least one fourth buffer and different path identifiers" may be: dividing the at least one fourth buffer in the receiving party according to the data transmission path of the receiving party itself, associating the path identifiers of different data transmission paths with the corresponding fourth buffers, and obtaining the association relationship between the at least one fourth buffer and the different path identifiers.
[0137] In a feasible implementation manner, a specific implementation manner of "determining the at least one fifth buffer from the at least one fourth buffer based on the matching of the sending path identifier and the association relationship" may be: using the sending path identifier as a matching basis, searching for a path identifier that matches the sending path identifier from the association relationship, and using one or more fourth buffers associated with the matching path identifier as at least one fifth buffer.
[0138] In some embodiments, a specific implementation method of "determining at least one unused sixth buffer from at least one fifth buffer" may be: determining at least one unused sixth buffer from at least one fifth buffer according to a buffer status table of a buffer manager; the buffer status table indicates whether at least one fourth buffer has been used; or determining at least one unused sixth buffer from at least one fifth buffer according to a status identifier of at least one fifth buffer; the status identifier indicates whether the corresponding buffer has been used.
[0139] In a feasible implementation, the buffer manager in the receiving party can also maintain a buffer status table, which includes the usage status of at least one fourth buffer. Therefore, the usage status of each fifth buffer can be queried from the buffer status table to determine one or more unused fifth buffers and use them as at least one sixth buffer.
[0140] In a feasible implementation, the state identifier is used to identify the usage of the corresponding buffer. Therefore, one or more unused fifth buffers can be determined according to the state identifier of each fifth buffer and used as at least one sixth buffer.
[0141] Step 508: When it is determined that there is an idle target data transmission path corresponding to the receiving path identifier, based on the receiving path identifier, the target data is retrieved from the at least one second target buffer to transmit the target data to the destination address through the target data transmission path.
[0142] In a feasible implementation, since the target data is stored in an entry of at least one second target buffer, when the target data transmission path is idle, the target data can be taken out from the entry of at least one second target buffer for transmission.
[0143] In the disclosed embodiment, cache space indication information is established between two graphics processing units that are performing data exchange; in this way, the receiving party can send the receiving path identifier of the idle data transmission path to the sending party in the form of cache space indication information. As a result, the sending party can timely perceive the empty or full status of the receiving party's data transmission path, and clearly know that the receiving party has an idle data transmission path. Furthermore, when the receiving party is not congested (has a target data transmission path), the sending party sends the target data to ensure that the target data can be received by the receiving party, so that each transmitted data can be effectively received, thereby maximizing communication efficiency, improving the utilization rate of the inter-chip interconnection bandwidth, and greatly reducing data loss and the situation where the receiving party has path congestion resulting in low data transmission efficiency.
[0144] The embodiment of the present disclosure provides a computing cluster, in which at least two graphics processing units are present in the computing cluster to send and receive data, and cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units is used as a receiver and the other is used as a sender;
[0145] The receiving party is used to detect the empty or full status of its own data transmission path in real time; generate cache space indication information based on the receiving path identifier of the idle data transmission path; and send the cache space indication information to the sending party;
[0146] The sender is used to obtain the cache space indication information of the receiver; based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
[0147] The computing cluster may be deployed on one electronic device or on multiple electronic devices. If the computing cluster is deployed on multiple electronic devices, the two graphics processing units for data interaction may be on the same electronic device or on different electronic devices, which is not limited in the embodiments of the present disclosure.
[0148] like Figure 6 As shown, the embodiment of the present disclosure provides an interactive process of data transmission:
[0149] Step 601: The receiving party monitors the empty or full status of its own data transmission path in real time.
[0150] Step 602: The receiver generates buffer space indication information based on the receiving path identifier of the idle data transmission path, and sends the buffer space indication information to the sender.
[0151] Step 603: When the sender obtains the target data, a sending path identifier corresponding to the target data is generated based on the destination address of the target data.
[0152] Step 604: The sender stores the target data in at least one first target buffer corresponding to the sending path identifier.
[0153] Step 605: When the sending party sends the target data to the receiving party, based on the cache space indication information, it is determined whether the receiving party currently has a target data transmission path for transmitting the target data to the destination address.
[0154] Step 606: When the receiving party currently has a target data transmission path, the sending party takes out the target data from at least one first target buffer and sends it to the receiving party.
[0155] Step 607: When the receiver receives the target data sent by the sender, the receiver generates a receiving path identifier of the target data based on the destination address of the target data.
[0156] Step 608: The receiver stores the target data in at least one second target buffer corresponding to the receiving path identifier.
[0157] Step 609: When a target data transmission path capable of receiving the target data is idle, the receiver takes the target data from at least one second target buffer and transmits the target data to the destination address through the target data transmission path.
[0158] The following describes the application of the data transmission method provided by the embodiment of the present disclosure in an actual scenario, taking the sender as the sender and the receiver as the receiver as an example.
[0159] The core principle of the disclosed embodiment is that the fullness or emptyness (idleness) of the data transmission path of the receiver is directly fed back to the sender through credit.
[0160] like Figure 7 As shown, the sender's deployment is as follows:
[0161] 1. Destination tag (identifier generator): Generates the corresponding path identifier (tag) based on the destination path of the data to be transmitted. In order to improve the utilization rate of the inter-chip interconnection bandwidth, the tag is not transmitted and is only used for buffer management classification.
[0162] Among them, the destination tag can adopt a variety of identification generation methods, such as: an identification generation method based on a hash function (hash), an identification generation method based on an interleave, etc., but the final effect is to achieve short-time balance between different data transmission paths as much as possible.
[0163] 2. Buffer manager: manages the queue of tags that can be generated by the tag generator. When a credit containing a tag number arrives, the data with the corresponding tag number is taken out for transmission. The data includes the destination address and data. The data is transmitted through high-speed Serdes. During implementation, the data is sent to the receiver through parallel-to-serial conversion using electrical signals, and the receiver obtains the original data through serial conversion.
[0164] Figure 7 The buffer manager shown in includes two buffers corresponding to tag0, one buffer corresponding to tag1, and three buffers corresponding to tag2.
[0165] like Figure 7 As shown, the receiver is deployed as follows:
[0166] 1. destination tag: The same identifier generator as the sender.
[0167] 2. Buffer manager: flexibly configure the buffer ratio of each tag number.
[0168] 3. Multi-path arbiter: Arbitrates the sending of data in the receiver's buffer based on the idleness of the destination path; determines whether there is path congestion by checking the buffer fullness of the path. For example, Figure 7 If path 0 is full and both path 1 and path 2 have an idle entry, round-robin arbitration is performed between tag 1 and tag 2, and the arbitrated tag is sent.
[0169] Specifically, Figure 8 As shown, the implementation process of the data transmission method provided by the embodiment of the present disclosure is as follows:
[0170] ① When the sender has data to be transmitted (target data), it first generates a destination path tag (sending path identifier) based on the destination address of the target data through its own destination tag, and then enters the sender's buffer manager.
[0171] ② The sender's buffer manager decides which tag data to send based on the tag information in the credit sent by the receiver, because the tag information in the credit at this time indicates that the receiver is not congested.
[0172] ③After the data is sent to the receiver, the destination path tag (receiving path identifier) is regenerated, because the destination path tag is not transmitted through the link, the purpose is to save link bandwidth. At the same time, it enters the reserved buffer position of the corresponding tag. Each tag has a reserved position and will not occupy each other.
[0173] ④、The multi-path arbiter decides which path to send data to based on the buffer fullness on the downstream path. If multiple paths are empty, it arbitrates one of the multiple paths and then selects the data of the entry with the corresponding tag from the receiver's buffer to send.
[0174] like Fig. 9 As shown in the figure, the implementation process of the credit channel is as follows:
[0175] 1. Send credits based on the idleness of the receiver's tags. For example, if both tag1 and tag2 have an idle buffer, then both credits carrying tag1 and tag2 will be sent to the sender.
[0176] 2. The sender's buffer manager takes out the data of the corresponding tag according to the received credit and transmits it to the receiver, which then sends it to the corresponding path through the receiver's arbitration.
[0177] The embodiments of the present disclosure include at least the following innovative features:
[0178] 1. The disclosed embodiment is a congestion-aware credit mechanism, a destination tag-based credit and buffer management mechanism, which can effectively improve the utilization of inter-link communication in multi-GPU high-bandwidth parallel computing scenarios.
[0179] 2. The tag generation mechanism on both the sender and the receiver side avoids the overhead of tag transmission between links and further improves the utilization rate.
[0180] The congestion-aware credit mechanism provided by the disclosed embodiment avoids the situation in which credits are blindly sent due to the absence of congestion information on the destination side, resulting in all data being sent to the congested path, causing data to be retained in the buffer, and thus no credit is available, the link is idle, and the transmission efficiency is reduced.
[0181] It should be noted that in the embodiments of the present disclosure, if the above-mentioned data transmission method is implemented in the form of a software function module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. Based on such an understanding, the technical solution of the embodiment of the present disclosure is essentially or the part that contributes to the relevant technology can be embodied in the form of a software product, which is stored in a storage medium and includes a number of instructions to enable an electronic device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the methods described in each embodiment of the present disclosure. The aforementioned storage medium includes: various media that can store program codes, such as a U disk, a mobile hard disk, a read-only memory (ROM), a disk or an optical disk. In this way, the embodiments of the present disclosure are not limited to any specific hardware, software or firmware, or any combination of hardware, software, and firmware.
[0182] An embodiment of the present disclosure provides an electronic device, including a memory and a processor, wherein the memory stores a computer program that can be run on the processor, and when the processor executes the program, some or all of the steps in the above method are implemented.
[0183] The embodiment of the present disclosure provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed by a processor, some or all of the steps in the above method are implemented. The computer-readable storage medium can be transient or non-transient.
[0184] An embodiment of the present disclosure provides a computer program, including a computer-readable code. When the computer-readable code is executed in an electronic device, a processor in the electronic device executes some or all of the steps for implementing the above method.
[0185] The present disclosure provides a computer program product, which includes a non-transitory computer-readable storage medium storing a computer program, and when the computer program is read and executed by a computer, some or all of the steps in the above method are implemented. The computer program product can be implemented specifically by hardware, software or a combination thereof. In some embodiments, the computer program product is specifically embodied as a computer storage medium, and in other embodiments, the computer program product is specifically embodied as a software product, such as a software development kit (SDK), etc.
[0186] It should be noted here that the description of the various embodiments above tends to emphasize the differences between the various embodiments, and the same or similar aspects can be referenced to each other. The description of the above device, storage medium, computer program and computer program product embodiments is similar to the description of the above method embodiment, and has similar beneficial effects as the method embodiment. For technical details not disclosed in the embodiments of the device, storage medium, computer program and computer program product disclosed in the present invention, please refer to the description of the method embodiment disclosed in the present invention for understanding.
[0187] It should be noted that Fig.10 is a schematic diagram of a hardware entity of an electronic device in an embodiment of the present disclosure, such as Fig.10 As shown, the hardware entity of the electronic device 1000 includes: a processor 1001, a communication interface 1002 and a memory 1003, wherein:
[0188] The processor 1001 generally controls the overall operation of the electronic device 1000 .
[0189] The communication interface 1002 enables the electronic device to communicate with other terminals or servers through a network.
[0190] The memory 1003 is configured to store instructions and applications executable by the processor 1001, and can also cache data to be processed or processed by the processor 1001 and each module in the electronic device 1000 (for example, image data, audio data, voice communication data, and video communication data), which can be implemented by flash memory (FLASH) or random access memory (Random Access Memory, RAM). Data transmission can be performed between the processor 1001, the communication interface 1002, and the memory 1003 through the bus 1004.
[0191] It should be understood that "one embodiment" or "an embodiment" mentioned throughout the specification means that specific features, structures or characteristics related to the embodiment are included in at least one embodiment of the present disclosure. Therefore, "in one embodiment" or "in an embodiment" appearing throughout the specification does not necessarily refer to the same embodiment. In addition, these specific features, structures or characteristics can be combined in one or more embodiments in any suitable manner. It should be understood that in the various embodiments of the present disclosure, the size of the serial numbers of the above-mentioned steps / processes does not mean the order of execution. The execution order of each step / process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present disclosure. The serial numbers of the embodiments of the present disclosure are for description only and do not represent the advantages and disadvantages of the embodiments.
[0192] It should be noted that, in this article, the terms "include", "comprises" or any other variations thereof are intended to cover non-exclusive inclusion, so that a process, method, article or device including a series of elements includes not only those elements, but also other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of further restrictions, an element defined by the sentence "comprises a ..." does not exclude the existence of other identical elements in the process, method, article or device including the element.
[0193] In the several embodiments provided in the present disclosure, it should be understood that the disclosed devices and methods can be implemented in other ways. The device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as: multiple units or components can be combined, or can be integrated into another system, or some features can be ignored, or not executed. In addition, the coupling, direct coupling, or communication connection between the components shown or discussed can be through some interfaces, and the indirect coupling or communication connection of the devices or units can be electrical, mechanical or other forms.
[0194] The units described above as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units; they may be located in one place or distributed on multiple network units; some or all of the units may be selected according to actual needs to achieve the purpose of the present embodiment.
[0195] In addition, all functional units in the embodiments of the present disclosure may be integrated into one processing unit, or each unit may be separately configured as a unit, or two or more units may be integrated into one unit; the above-mentioned integrated units may be implemented in the form of hardware or in the form of hardware plus software functional units.
[0196] A person skilled in the art can understand that all or part of the steps of implementing the above method embodiment can be completed by hardware related to program instructions, and the aforementioned program can be stored in a computer-readable storage medium. When the program is executed, it executes the steps of the above method embodiment; and the aforementioned storage medium includes: mobile storage devices, read-only memories (ROM), magnetic disks or optical disks, etc., various media that can store program codes.
[0197] Alternatively, if the above-mentioned integrated unit of the present disclosure is implemented in the form of a software function module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present disclosure can essentially or in other words, the part that contributes to the relevant technology can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for an electronic device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the methods described in each embodiment of the present disclosure. The aforementioned storage medium includes: various media that can store program codes, such as mobile storage devices, ROMs, magnetic disks, or optical disks.
[0198] The above description is only an implementation mode of the present disclosure, but the protection scope of the present disclosure is not limited thereto. Any technician familiar with the technical field can easily think of changes or substitutions within the technical scope disclosed in the present disclosure, which should be included in the protection scope of the present disclosure.
Claims
1. A data transmission method, characterized in that: The data transmission method comprises: In response to the situation that at least two graphics processing units in the computing cluster send and receive data, cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units serves as a receiver and the other as a sender; Acquire cache space indication information of the receiver; the cache space indication information includes a plurality of receiving path identifiers; the receiving path identifier is used to indicate that a corresponding data transmission path is idle; Based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.
2. The data transmission method according to claim 1, characterized in that: The determining, based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, whether the receiver has a target data transmission path for transmitting the target data to the destination address includes: Based on the destination address of the target data, generating a sending path identifier of the target data; Based on the matching relationship between the buffer space indication information of the receiver and the sending path identifier, it is determined whether the receiver has the target data transmission path.
3. The data transmission method according to claim 2, characterized in that: The step of generating a sending path identifier of the target data based on the destination address of the target data includes: The sending path identifier is generated based on the destination address of the target data through at least one identifier generation method in the identifier generator of the sender; the identifier generation method includes: an identifier generation method based on a hash function, an identifier generation method based on a mantissa, and an identifier generation method based on data interleaving combination.
4. The data transmission method according to claim 2, characterized in that: The determining whether the receiving party has the target data transmission path based on the matching relationship between the buffer space indication information of the receiving party and the sending path identifier includes: Determine, based on the cache space indication information of the receiver, a receiving path identifier of an idle data transmission path in the receiver; When the idle receiving path identifier matches the sending path identifier, it is determined that the receiving party has the target data transmission path.
5. The data transmission method according to any one of claims 1 to 4, characterized in that: The data transmission method further comprises: determining at least one first buffer in a buffer manager of the sender; Determine, from the at least one first buffer, at least one first target buffer corresponding to the sending path identifier and not in use; The target data is stored in the at least one first target buffer.
6. The data transmission method according to claim 5, characterized in that: The step of determining, from the at least one first buffer, at least one first target buffer corresponding to the sending path identifier and not in use, comprises: Based on the association relationship between the at least one first buffer and different path identifiers, determining at least one second buffer corresponding to the sending path identifier from the at least one first buffer; Based on the usage of the at least one second buffer, determining at least one unused third buffer from the at least one second buffer; The at least one first target buffer is determined from the at least one third buffer based on the data amount of the target data and the data amount that can be stored in a single buffer.
7. The data transmission method according to claim 6, characterized in that: The step of determining at least one unused third buffer zone from the at least one second buffer zone based on the usage of the at least one second buffer zone comprises: Determine at least one unused third buffer from the at least one second buffer according to a buffer status table of the buffer manager; the buffer status table includes usage of the at least one first buffer; or At least one unused third buffer zone is determined from the at least one second buffer zone according to a status identifier of the at least one second buffer zone; the status identifier represents a usage status of the corresponding buffer zone.
8. The data transmission method according to claim 5, characterized in that: The data transmission method further comprises: In a case where the receiving party has the target data transmission path, taking out the target data from the at least one first target buffer based on the sending path identifier; The target data is sent to the receiver, so that the receiver transmits the target data to the destination address based on the target data transmission path.
9. A data transmission method, characterized in that: The data transmission method comprises: In response to the situation that at least two graphics processing units in the computing cluster send and receive data, cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units serves as a receiver and the other as a sender; Real-time detection of the empty and full status of its own data transmission path; Generate buffer space indication information based on a receiving path identifier of an idle data transmission path; The cache space indication information is sent to the sender, so that the sender transmits data based on the cache space indication information.
10. The data transmission method according to claim 9, characterized in that: The data transmission method further comprises: Receiving target data to be transmitted sent by the sender; The target data is transmitted to a destination address based on a receiving path identifier of the target data and a target data transmission path corresponding to the receiving path identifier.
11. The data transmission method according to claim 10, characterized in that: The transmitting the target data to the destination address based on the receiving path identifier of the target data and the target data transmission path corresponding to the receiving path identifier includes: Based on the destination address of the target data, generating a receiving path identifier of the target data; Determine an idle target data transmission path corresponding to the receiving path identifier; The target data is transmitted to the destination address through the target data transmission path.
12. The data transmission method according to claim 11, characterized in that: The generating, based on the destination address of the target data, a receiving path identifier corresponding to the target data includes: The receiving path identifier is generated based on the destination address of the target data by at least one identifier generation method in the identifier generator of the receiving party; the configuration of the identifier generator of the receiving party is the same as that of the identifier generator of the sending party.
13. The data transmission method according to claim 11, characterized in that: The determining that there is an idle target data transmission path corresponding to the receiving path identifier includes: Determine multiple data transmission paths corresponding to the receiving path identifier; Detecting whether multiple data transmission paths corresponding to the receiving path identifier are idle; In the case that there are a plurality of idle data transmission paths to be selected among the plurality of data transmission paths, the target data transmission path is arbitrated from the plurality of data transmission paths to be selected.
14. The data transmission method according to any one of claims 10 to 13, characterized in that: The data transmission method further comprises: When receiving the target data, storing the target data in at least one second target buffer corresponding to the receiving path identifier; When it is determined that there is an idle target data transmission path corresponding to the receiving path identifier, the target data is retrieved from the at least one second target buffer based on the receiving path identifier, so as to transmit the target data to the destination address through the target data transmission path.
15. The data transmission method according to claim 14, characterized in that: The storing the target data into at least one second target buffer corresponding to the receiving path identifier includes: Determining at least one fourth buffer in the buffer manager of the receiver; the configuration of the buffer manager of the receiver and the buffer manager of the sender are the same; Determine, from the at least one fourth buffer, at least one second target buffer corresponding to the sending path identifier and not in use; The target data is stored in the at least one second target buffer.
16. A computing cluster, characterized in that: In the case where there are at least two graphics processing units in the computing cluster sending and receiving data, cache space indication information is established between the at least two graphics processing units; one of the two graphics processing units serves as a receiver and the other as a sender; The receiving party is used to detect the empty or full status of its own data transmission path in real time; generate cache space indication information based on the receiving path identifier of the idle data transmission path; and send the cache space indication information to the sending party; The sender is used to obtain the cache space indication information of the receiver; based on the cache space indication information of the receiver and the sending path identifier of the target data to be transmitted, determine whether the receiver has a target data transmission path for transmitting the target data to the destination address, so that the receiver transmits the target data to the destination address based on the target data transmission path.