Method and system for data transmission in a polymeric communication

CN117785499BActive Publication Date: 2026-09-18HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211160846.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-09-22
Publication Date
2026-09-18
Estimated Expiration
2042-09-22

AI Technical Summary

Technical Problem

[0003]本申请实施例提供了一种聚合通信中的数据传输方法以及系统,能够节约非连续数据在不同进程之间传输的时间,从而解决了通信环节耗时巨大的问题,突破了分布式计算的性能瓶颈

Benefits of technology

[0003] This application provides a data transmission method and system in aggregated communication, which can save the time spent transmitting discontinuous data between different processes, thereby solving the problem of huge time consumption in the communication process and breaking through the performance bottleneck of distributed computing. The technical solution is as follows:

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117785499B_ABST
    Figure CN117785499B_ABST
Patent Text Reader

Abstract

The application provides a data transmission method and system in a polymeric communication, and belongs to the field of distributed computing. The method comprises the following steps: a first computing device acquires a sending index table of the first computing device, the sending index table being used to indicate information of a second computing device corresponding to each data block in a plurality of data blocks to be sent by the first computing device, the information of the second computing device indicating a computing device receiving each data block; the first computing device sends the plurality of data blocks to the plurality of second computing devices respectively according to the sending index table; and the plurality of second computing devices receive the plurality of data blocks respectively, and the data block received by each second computing device is a continuous data block. The data transmission process does not need to copy the data block, saves the transmission time of the non-continuous data block between different processes, thereby solving the problem that the communication link is time-consuming, and breaking through the performance bottleneck of distributed computing.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of distributed computing, and in particular to a data transmission method and system in aggregated communication. Background Technology

[0002] With the development of information technology, aggregated communication plays an increasingly important role in the field of distributed computing. Aggregated communication enables many-to-many (all-to-all) data transmission between different processes in distributed computing. In related technologies, contiguous data can be directly transmitted between different processes in a many-to-many manner; however, for non-contiguous data, copying is required to merge it before it can be transmitted between different processes in a many-to-many manner. However, in many distributed computing scenarios, the data that needs to be transmitted between different processes is non-contiguous, and the current aggregated communication method, which involves copying before transmission, is extremely time-consuming, making the communication link a bottleneck in distributed computing. Summary of the Invention

[0003] This application provides a data transmission method and system in aggregated communication, which can save the time spent transmitting discontinuous data between different processes, thereby solving the problem of huge time consumption in the communication process and breaking through the performance bottleneck of distributed computing. The technical solution is as follows:

[0004] In a first aspect, a data transmission method in aggregated communication is applied to a computing system comprising multiple computing devices. The method includes: a first computing device among the multiple computing devices acquiring a transmission index table, the transmission index table indicating information of a second computing device corresponding to each data block in a plurality of data blocks to be transmitted by the first computing device, the information of the second computing device indicating the computing device receiving each data block, the number of the second computing devices being N, where N is a positive integer greater than or equal to 2; the first computing device transmitting the plurality of data blocks to the N second computing devices respectively according to the transmission index table; and the N second computing devices respectively receiving the plurality of data blocks, wherein the data blocks received by each second computing device are consecutive data blocks.

[0005] Among them, continuous data blocks refer to continuous data. Compared with discrete data, continuous data can be sent without further data copying and integration, which shortens the time required for data transmission.

[0006] In the above method, the first computing device sends each data block to be sent to the corresponding second computing device based on the sending index table. The data blocks do not need to be copied before sending, which allows the second computing device to receive consecutive data blocks and shortens the time required for data transmission.

[0007] Optionally, the N second computing devices include the first computing device. The first computing device also sends data to itself when sending data, thereby ensuring device utilization and computational integrity.

[0008] Optionally, each second computing device is assigned a number. The first computing device sends the plurality of data blocks to the N second computing devices according to the transmission index table. This includes the first computing device determining the order in which it sends the plurality of data blocks to the N second computing devices based on the transmission index table and its own number, wherein the first computing device sends the data blocks to itself first. When sending data, each first computing device first sends data to itself, and then sends data to the next computing device starting from that first computing device, thereby avoiding data transmission conflicts.

[0009] Optionally, the sending index table includes multiple rows, each indicating the first storage location of X data blocks to be sent to a second computing device on the first computing device, where X is a positive integer greater than or equal to 1;

[0010] The first computing device sends the plurality of data blocks to the N second computing devices according to the transmission index table, comprising: for any second computing device, the first computing device obtains the first storage location of X data blocks to be sent from the row corresponding to the second computing device in the transmission index table, obtains the X data blocks from the first storage location on the first computing device, and sends the X data blocks to the second computing device. In some embodiments, the transmission index table may use rows to indicate information about the second computing devices. For example, the first row is used to indicate the first storage location of the data block to be sent to the second computing device numbered 1, the second row is used to indicate the first storage location of the data block to be sent to the second computing device numbered 2, and so on. In other embodiments, the transmission index table may use a column to store the number of the computing device, thereby using the corresponding row to indicate the first storage location of the data block to be sent to the second computing device. For example, the first column of the first row stores the number 1, the first row is used to indicate the first storage location of the data block to be sent to the second computing device numbered 1, the second row is used to indicate the first storage location of the data block to be sent to the second computing device numbered 2, and so on.

[0011] Optionally, the method further includes: the second computing device obtaining a receiving index table for the second computing device, the receiving index table being used to indicate information of the first computing device corresponding to Y data blocks received by the second computing device, where Y is a positive integer greater than or equal to 1; the N second computing devices respectively receiving the plurality of data blocks includes: the second computing device storing the data blocks sent by the first computing device respectively according to the receiving index table.

[0012] In the above method, the second computing device can continuously receive data blocks from the same first computing device through the receiving index table, thereby receiving consecutive data blocks. This eliminates the need for the first computing device to perform data copying operations during transmission, saving time spent on data transmission.

[0013] Optionally, the receiving index table includes the second storage location of Y data blocks on the second computing device and information about the first computing device corresponding to the Y data blocks received by the second computing device. The second computing device stores the data blocks sent by the first computing device according to the receiving index table, including: the second computing device receiving the data blocks from the first computing device; the second computing device obtaining the second storage location for storing the data blocks from the row corresponding to the first computing device in the receiving index table based on the first computing device; and the second computing device storing the data blocks in the second storage location.

[0014] Optionally, the receiving index table can also indicate the amount of data to be received. Different amounts of data can be sent to different second computing devices, and the second computing device can allocate an appropriate amount of memory space for the received data according to the size of the data, thus avoiding the waste of memory space.

[0015] In a second aspect, a computing system is provided, comprising a plurality of computing devices for performing the methods provided in the first aspect or any alternative manner thereof.

[0016] Thirdly, a computer-readable storage medium is provided that stores at least one instruction, which is read by a processor to cause a computing device to perform the method provided in the first aspect or any alternative method of the first aspect.

[0017] Fourthly, a computer program product is provided, comprising computer instructions stored in a computer-readable storage medium. A processor of a computing device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computing device to perform the method provided in the first aspect or any alternative method of the first aspect. Attached Figure Description

[0018] Figure 1 This is a schematic diagram of a full-protocol aggregation communication process provided in an embodiment of this application;

[0019] Figure 2 This is a schematic diagram of a many-to-many aggregation communication process provided in an embodiment of this application;

[0020] Figure 3This is a system architecture diagram of a computing system provided in an embodiment of this application;

[0021] Figure 4 This is a schematic diagram of the structure of a computing device provided in an embodiment of this application;

[0022] Figure 5 This is a schematic diagram illustrating an application scenario provided in an embodiment of this application;

[0023] Figure 6 This is a flowchart of a method for constructing a sending index table provided in an embodiment of this application;

[0024] Figure 7 This is a schematic diagram illustrating a process for constructing a sending index table according to an embodiment of this application;

[0025] Figure 8 This is a flowchart of a method for constructing a receiving index table provided in an embodiment of this application;

[0026] Figure 9 This is a schematic diagram illustrating a process for constructing a sending index table according to an embodiment of this application;

[0027] Figure 10 This is a flowchart illustrating a data transmission method in aggregated communication provided in an embodiment of this application;

[0028] Figure 11 This is a structural block diagram of a data transmission device in aggregated communication provided in an embodiment of this application;

[0029] Figure 12 This is a structural block diagram of a data transmission device in aggregated communication provided in an embodiment of this application. Detailed Implementation

[0030] To make the objectives, technical solutions, and advantages of this application clearer, the embodiments of this application will be described in further detail below with reference to the accompanying drawings.

[0031] This application relates to collective communication technology for computing systems. For ease of understanding, the relevant concepts in collective communication technology are introduced below.

[0032] Aggregate communication refers to the global data migration and global control operations among a group of processors in a multi-computer system. Common aggregation communication methods include broadcast, barrier synchronization, reduce, scatter, gather, all-gather, all-scatter, all-reduce, and all-to-all. Based on the data flow direction, aggregation communication methods can be divided into rooted and non-rooted communication. Rooted aggregation communication refers to communication where messages originate from or are injected into a specific node; these methods mainly include broadcast, gather, scatter, and reduce. Non-rooted aggregation communication refers to communication where messages do not originate from or will be injected into a specific node; these methods mainly include all-gather, all-scatter, all-reduce, many-to-many, and barrier synchronization.

[0033] The above-mentioned aggregation communication methods will be introduced in detail below.

[0034] Broadcasting: Broadcasting refers to transmitting data from one node in a communication to every other node in the communication. For example, if node A has data 'a', and the nodes participating in the communication are node A, node B, and node C, after node A broadcasts, nodes A, B, and C all receive data 'a'.

[0035] Rail fence synchronization: Rail fence synchronization refers to a process running on a node that may involve multiple threads that need to cooperate to complete a task. This requires coordination between the threads. A rail fence is like a meeting point in the program. When a thread needs to wait for other threads, it can run to the rail fence. Once all threads have reached the rail fence, the rail fence is removed, thus synchronizing the threads.

[0036] Reduction: Reduction refers to reducing data across multiple nodes and storing the result on the root node. For example, if node A is the root node of nodes B and C, and node A has data 'a', node B has data 'b', and node C has data 'c', after reduction, the result is data 'a + data b + data c', and node A will store data 'a + data b + data c'.

[0037] Distributed processing: Distributed processing refers to splitting the data on a node and having the split data blocks stored on other nodes participating in the communication. For example, node A splits the data on node B into three data blocks: data block a1, data block a2, and data block a3. Node A sends data block a1 to node B, data block a2 to node B, and data block a3 to node C, so that data block a1 is stored on node A, data block a2 is stored on node B, and data block a3 is stored on node C.

[0038] Collection: Collection refers to aggregating data from multiple participating nodes to the root node, thereby synchronizing the local data of each node to the designated root node. For example, node A is the root node of nodes B and C. Node A has data 'a', node B has data 'b', and node C has data 'c'. After node A performs collection, node A obtains data 'a', data 'b', and data 'c'.

[0039] Full collection: Full collection refers to aggregating data from multiple nodes participating in communication onto each of those nodes, thereby synchronizing the local data of each node to all of them. For example, node A has data 'a', node B has data 'b', and node C has data 'c'. After performing a full collection, nodes A, B, and C will all have data 'a', data 'b', and data 'c'.

[0040] Fully distributed: Fully distributed means that the data on each of multiple nodes is split into blocks, and the other nodes participating in the communication store the split data blocks. For example, after node A splits the data on node B, it gets data blocks a1, a2, and a3. After node B splits the data on node C, it gets data blocks b1, b2, and b3. After node C splits the data on node C, it gets data blocks c1, c2, and c3. Node A sends data block a1 to node A, data block a2 to node B, and data block a3 to node C. Node B sends data block b1 to node A, data block b2 to node B, and data block b3 to node C. Node C sends data block c1 to node A, data block c2 to node B, and data block c3 to node C. This allows data blocks a1, b1, and c1 to be stored on node A, data blocks a2, b2, and c2 to be stored on node B, and data blocks a3, b3, and c3 to be stored on node C.

[0041] Full reduction: Full reduction refers to reducing data across multiple nodes, ensuring that each node retains the reduced result. For example... Figure 1 As shown, Figure 1 This is a schematic diagram of a full-protocol aggregation communication process provided in an embodiment of this application. Figure 1 Taking a process running on a single node, with each process corresponding to a rank, as an example, the full reduction is achieved by summing the data on different nodes. Rank 0 has data in0, rank 1 has data block in1, rank 2 has data block in2, and rank 3 has data block in3. After reduction, data blocks in0, in1, in2, and in3 result in out. The reduction result out is obtained on rank 0, rank 1, rank 2, and rank 3. out equals out0 + out1 + out2 + out3.

[0042] Many-to-many: Each node exchanges data with every other node. For example... Figure 2 As shown, Figure 2 This is a flowchart illustrating a many-to-many aggregated communication method provided in an embodiment of this application. Taking one process running on one computing node, with each process corresponding to a unique identifier, this flowchart illustrates a many-to-many aggregated communication method. Figure 2 As shown, taking rank0 as an example, rank0 first stores its own data block to be sent into the sending buffer. The data block sent from rank0 to rank0 is denoted as in. 00 The data block sent from rank0 to rank1 is denoted as in. 01 ,in 00 It contains all the data blocks that rank0 needs to send to rank0, in 01 It contains all the data blocks that rank0 needs to send to rank1, and so on. rank0 receives in 00 After that, in 00 The 0th block of its receive buffer is stored and denoted as out. 00 Rank 1 receives in 01 After that, in 01 The 0th block of its receive buffer is stored and denoted as out. 10 The process for sending data blocks to other ranks is similar. To avoid multiple ranks sending data blocks to the same rank at the same time, each rank needs to send data blocks in sequence. For example, rank0 sends data blocks to rank1, rank2, and rank3 first; rank2 sends data blocks to rank2 first, then to rank3, rank0, and rank1. The order in which other ranks send data blocks is similar.

[0043] The following describes a system architecture for a computing system provided by an embodiment of this application.

[0044] This application provides a system architecture diagram of a computing system, such as... Figure 3 As shown, Figure 3 This is a system architecture diagram of a computing system provided in an embodiment of this application. The computing system includes multiple computing devices 301 and multiple network devices 302. The multiple computing devices 301 include a first computing device and a second computing device. The first computing device is used to send data blocks, and the second computing device is used to receive and store the data blocks sent by the first computing device. The second computing device includes the first computing device. The network device 302 is used to forward data blocks transmitted between the computing devices. This network device can be a switch or a router. Based on the above-described aggregated communication method, the first computing device and the second computing device can interact with each other through this aggregated communication method. For example, distributed computing involves multiple iterations. In each iteration, the first computing device and the second computing device need to interact with each other through a many-to-many aggregated communication method to obtain the data blocks required for this iteration.

[0045] The computing device 301 and the network device 302 communicate via a wired or wireless network. In some embodiments, the wireless or wired network uses standard communication technologies and / or protocols. The network is typically the Internet, but can be any network, including but not limited to local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), mobile, wired or wireless networks, private networks, or any combination of virtual private networks. In some embodiments, the computing device 301 and the network device 302 communicate peer-to-peer (P2P) communication based on the remote procedure call protocol (RPC). In some embodiments, the computing device 301 and the network device 302 use technologies and / or formats including Hypertext Markup Language (HTML), Extensible Markup Language (XML), etc., to represent data blocks exchanged over the network. In addition, conventional encryption technologies such as Secure Sockets Layer (SSL), Transport Layer Security (TLS), Virtual Private Network (VPN), and Internet Protocol Security (IPsec) can be used to encrypt all or some of the links. In other embodiments, custom and / or dedicated data communication technologies can be used to replace or supplement the aforementioned data communication technologies.

[0046] The structure of the aforementioned computing device 301 is described below.

[0047] like Figure 4 As shown, Figure 4 This is a schematic diagram of the structure of a computing device provided in an embodiment of this application. The computing device 301 can be a host, server, or personal computer, etc. The computing device 301 can be implemented using a general bus architecture.

[0048] The computing device 301 includes at least one processor 401, a communication bus 402, a memory 403, and at least one communication interface 404.

[0049] Processor 401 may be, for example, a general-purpose central processing unit (CPU), a network processor (NP), a graphics processing unit (GPU), a neural-network processing unit (NPU), a data processing unit (DPU), a microprocessor, or one or more integrated circuits for implementing the embodiments of this application. For example, processor 301 includes an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof. A PLD may be, for example, a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.

[0050] The communication bus 402 is used to transmit information between the aforementioned components. The communication bus 402 can be divided into an address bus, a data bus, a control bus, etc. For ease of representation, Figure 4 The symbol is represented by only one line, but this does not mean that there is only one bus or one type of bus.

[0051] Memory 403 may be, for example, read-only memory (ROM) or other types of static storage devices capable of storing static information and instructions; random access memory (RAM) or other types of dynamic storage devices capable of storing information and instructions; electrically erasable programmable read-only memory (EEPROM); compact disc read-only memory (CD-ROM) or other optical disc storage, optical disc storage (including compressed discs, laser discs, optical discs, digital versatile discs, Blu-ray discs, etc.); magnetic disk storage media or other magnetic storage devices; or any other medium capable of carrying or storing desired program code in the form of instructions or data structures and accessible by a computer, but not limited thereto. Memory 403 may exist independently and be connected to processor 401 via communication bus 402. Memory 403 may also be integrated with processor 401.

[0052] Communication interface 404 uses any transceiver-like device for communicating with other devices or communication networks. Communication interface 404 includes a wired communication interface and may also include a wireless communication interface. The wired communication interface may be, for example, an Ethernet interface. The Ethernet interface may be an optical interface, an electrical interface, or a combination thereof. The wireless communication interface may be a wireless local area network (WLAN) interface, a cellular network communication interface, or a combination thereof.

[0053] As one embodiment, processor 401 may include one or more CPUs, such as Figure 4 CPU0 and CPU1 are shown in the diagram.

[0054] As one embodiment, computing device 301 may include multiple processors, such as Figure 4 The processors 401 and 405 are shown. Each of these processors can be a single-core processor or a multi-core processor. Here, "processor" can refer to one or more devices, circuits, and / or processing cores used to process data (such as computer program instructions).

[0055] As one embodiment, computing device 301 may include multiple accelerators for performing computing tasks, such as Figure 4 Accelerators 406 and 407 are shown. An accelerator includes a processing unit and memory, as well as a matching network interface card (NIC) for communication between accelerators of different computing devices, such as... Figure 4 As shown, accelerator 406 includes a processing unit 4061, memory 4062, and network card 4063, while accelerator 407 includes a processing unit 4071, memory 4072, and network card 4073. Accelerators 406 and 407 communicate via an internal high-speed link, and accelerator 406 is connected to processor 401 via a high-speed serial computer expansion bus standard (Peripheral Component Interconnect Express, PCIe).

[0056] As one embodiment, the computing device 301 may further include an output device and an input device. The output device communicates with the processor 401 and can display information in various ways. For example, the output device may be a liquid crystal display (LCD), a light-emitting diode (LED) display device, a cathode ray tube (CRT) display device, or a projector, etc. The input device communicates with the processor 401 and can receive user input in various ways. For example, the input device may be a mouse, a keyboard, a touchscreen device, or a sensing device, etc.

[0057] In some embodiments, memory 403 is used to store program code 408 for executing the scheme of this application, and processor 401 can execute the program code 408 stored in memory 403. That is, computing device 301 can implement the data transmission method in aggregated communication provided in the method embodiment through processor 401 and program code 408 in memory 403.

[0058] The aforementioned computing device can be used to calculate model parameters in distributed training of large models. In some embodiments, the computing device can be used for training recommendation models with embedding layers and training large models with mixture of experts (MoE) layers.

[0059] In scenarios where recommendation models with embedding layers are being trained, the input samples are typically sparse matrices containing a large number of zero elements. The embedding layer is used to preprocess the input samples, mapping discrete data blocks to continuous data blocks, thereby reducing the dimensionality of the samples while preserving their features. Model training is then performed based on the dimensionality-reduced embedding vectors, involving multiple iterations during the training process. Figure 5 As shown, Figure 5This is a schematic diagram of an application scenario provided by an embodiment of this application. Each computing device stores a portion of the embedding vectors. Before each iteration, the computing devices need to communicate with each other through a many-to-many aggregation communication method to obtain the embedding vectors required for this iteration.

[0060] In scenarios involving training large models with MoE layers, the model is deployed across different computing devices. Each device stores a subset of weights (tokens) required for computation. These weights are a set of floating-point numbers that serve as the main parameters of the neural network, participating in computation during model training and being updated during backpropagation. Depending on the input samples, each computing device needs to use different weights for computation. Before each iteration, the computing devices also need to communicate with each other via many-to-many aggregation communication to obtain the weights required for that iteration.

[0061] In both application scenarios described above, the data blocks required by each computing device in each iteration are determined by the gating model. After each iteration, the gating model checks the data blocks on the computing device to determine which computing device should be responsible for computing the data blocks in the next iteration, and which data blocks the computing device needs to use in the next iteration.

[0062] In the two application scenarios mentioned above, the data blocks to be sent to the same second computing device may be discontinuous in the sending buffer. The first computing device needs to copy the data blocks to merge them together for data transmission. This data copying process is extremely time-consuming, becoming a bottleneck in distributed computing. Therefore, to address the problems in many-to-many aggregation communication in the above application scenarios, this application proposes a data transmission method in aggregation communication. An index scatter gather list (iSGL) is constructed for each computing device, including a sending index table (send_isgl) and a receiving index table (recv_isgl). The first computing device sends data blocks to the second computing device according to the sending index table, and the second computing device receives and stores the data blocks according to the receiving index table. This data transmission process eliminates the need for data block copying, saving time spent transmitting discontinuous data blocks across different processes. This solves the problem of excessive time consumption in the communication process, overcomes the performance bottleneck of distributed computing, and improves the performance of many-to-many aggregation communication by 50% and end-to-end communication by more than 13%.

[0063] The following sections describe the construction process of the sending index table and the receiving index table, as well as the data transmission process based on the index table, in the embodiments of this application.

[0064] First, the process of constructing the sending index table in the embodiments of this application will be introduced. Figure 6 This is a flowchart of a method for constructing a sending index table provided in an embodiment of this application, such as... Figure 6 As shown, taking the method as an example where the method is executed by the first computing device among the above-mentioned multiple computing devices, the method includes the following steps 601 to 603.

[0065] 601. The first computing device acquires transmission information, which includes the first storage location information of the data block to be transmitted and the information of the second computing device.

[0066] The first storage location information refers to the storage location of the data block to be sent in the transmit buffer of the first computing device. The second computing device information refers to which second computing device the data block to be sent to.

[0067] The information to be sent is determined by a gating model. The model training process involves multiple iterations. Before each iteration, the first computing device inputs a data block into the gating model. Based on the input data block, the gating model determines the information of the second computing device corresponding to that data block and the first storage location information on the first computing device. In the scenario of training a recommendation model with an embedding layer, the data block input to the gating model includes the embedding vector stored on the first computing device. In the scenario of training a large model with a MoE layer, the data block input to the gating model includes the weights stored on the first computing device.

[0068] In some embodiments, the first storage location information is the offset value of the data block to be sent in the send buffer of the first computing device. In other embodiments, the first storage location information is the starting address of the data block to be sent in the send buffer of the first computing device. This application embodiment does not limit this.

[0069] 602. The first computing device creates an empty list, where each line of the empty list indicates a second computing device.

[0070] The total length of the empty list is equal to the total number of data blocks to be sent by the first computing device. For example, if there are n data blocks to be sent, the total length of the empty list is n, which carries the first storage location information of the n data blocks to be sent. This first storage location information indicates the corresponding first storage location, where n is a positive integer. The number of rows in the empty list is equal to the number of second computing devices corresponding to the data blocks to be sent by the first computing device. The columns of the empty list represent the maximum number of data blocks that the first computing device can send to the corresponding second computing device. For example, position L in the empty list... ijThis is used to store the first storage location information of the j-th data block to be sent to the second computing device i in the first computing device's send buffer.

[0071] In the above embodiments, a row in the empty list is used to indicate the second computing device of the data block to be sent. In some embodiments, a column in the empty list is used to indicate the second computing device. The column stores the identification information of each second computing device. The identification information is the number of the second computing device, or the identity ID of the second computing device, or the Internet protocol address (IP) corresponding to the second computing device. This application embodiment does not limit this.

[0072] 603. Based on the transmission information, the first computing device stores the first storage location information of the data block to be transmitted into the list position corresponding to the second computing device in the empty list.

[0073] The process by which the first computing device stores the first storage location information of the data block to be sent into the list position corresponding to the second computing device in the empty list includes: starting from the first data block to be sent by the first computing device, finding the corresponding row in the empty list based on the identification information of the second computing device of the data block; storing the first storage location information corresponding to the data block into the corresponding row; repeating the above steps for the remaining data blocks to be sent until the first storage location information of all data blocks to be sent is stored into the corresponding list position in the empty list.

[0074] The following explanation uses a computing system with three computing devices as an example to illustrate steps 601 to 603 above. Figure 7 As shown, Figure 7 This is a schematic diagram illustrating a data transmission index table construction process provided in an embodiment of this application. One process runs on a computing device, and the three processes are numbered rank0, rank1, and rank2, respectively. Each rank has six data blocks to be transmitted. Combined with... Figure 7The left-middle diagram illustrates this process, using rank0 as the first computing device and rank0, rank1, and rank2 as the second computing devices, with the first storage location information as the offset value. The first computing device first creates an empty 3-row, 2-column list. Then, starting with the data block in the transmission buffer with an offset of 0, it iterates through the data blocks in the transmission buffer. The iteration process is as follows: For the second computing device that is the transmission target of the data block with an offset of 0 in the transmission buffer of rank0, rank0 corresponds to row 0 of the transmission index table. The first computing device first finds row 0 and then stores the offset value 0 in column 0 of row 0 of the transmission index table. For the second computing device that is the transmission target of the data block with an offset of 1, rank1 first finds row 1 and then stores the offset value 1 in column 0 of row 1 of the transmission index table. This process is repeated for the remaining data blocks in rank0 until the entire transmission is completed. The example above uses rank0 as an example to illustrate the construction process of the transmission index table; the process for constructing the transmission index table for other ranks is similar.

[0075] In the above example, the number of data blocks corresponding to each second computing device can be the same or different; that is, the length of each row in the sending index table can be different. This application embodiment does not limit the number of data blocks corresponding to each second computing device, nor does it limit the number of data blocks sent by each first computing device to the second computing device.

[0076] In steps 601 to 603 above, the transmission index table is constructed based on a newly created empty list. In some embodiments, the transmission index table can be constructed based on an existing list. This list may have been constructed by the first computing device for the previous iteration. When constructing the current transmission index table, the values ​​in this list can be cleared first to obtain an empty list, or the values ​​that should be stored in the current transmission index table can be directly used to overwrite the contents of the list. By constructing the list using the above method, a new empty list is not created each time, which can save storage space on the first computing device.

[0077] Through the technical solutions in the above embodiments, the sending index table indicates the first storage location of the data block to be sent. The first computing device obtains the data block to be sent from the first storage location based on the sending index table, and then sends the data block to be sent to the corresponding second computing device. There is no need to copy the data block before sending, which allows the second computing device to receive continuous data blocks and shortens the time required for data transmission.

[0078] The following describes the process of constructing the receiving index table in the embodiments of this application. Figure 8 This is a flowchart of a method for constructing a receiving index table provided in an embodiment of this application, such as... Figure 8As shown, the method is executed by a second computing device among the plurality of computing devices, and the method includes the following steps 801 to 803.

[0079] 801. The second computing device acquires received information, which includes information about the first computing device receiving the data block and information about the second storage location of the received data block.

[0080] The information about the first computing device refers to which first computing device sent the data block received by the second computing device. The information about the second storage location refers to the storage location in the receive buffer of the second computing device where the received data block is to be stored.

[0081] The received information is determined by the gating model. The model training process includes multiple iterations. Before each iteration, the second computing device inputs a data block into the gating model. Based on the input data block, the gating model determines the information of the first computing device and the second storage location information on the second computing device corresponding to that input data block. In scenarios involving recommendation model training with embedding layers and large model training with MoE layers, the data block input to the gating model is the training sample input to the second computing device.

[0082] In some embodiments, the second storage location information is the offset value of the received data block in the receive buffer; in other embodiments, the second storage location information is the starting address of the received data block in the receive buffer. This application does not limit this aspect.

[0083] 802. The second computing device creates an empty list, where each line of the empty list indicates a first computing device.

[0084] The total length of the empty list is equal to the total number of data blocks to be received by the second computing device. For example, if there are n data blocks to be received, the total length of the empty list is n, which carries the second storage location information of the n data blocks, where n is a positive integer. The number of rows in the empty list is equal to the number of first computing devices corresponding to the data blocks to be received by the second computing device, and the columns of the empty list are used to indicate the maximum number of data blocks that the second computing device can receive from the corresponding first computing device. For example, position L in the empty list... ij Used to store the second storage location information of the j-th data block from the first computing device i in the receive buffer.

[0085] In the above embodiments, a row in the empty list is used to indicate the first computing device receiving the data block. In some embodiments, a column in the empty list is used to indicate the first computing device. The column stores the identification information of each first computing device. The identification information is the number of the first computing device, or the ID of the first computing device, or the IP address corresponding to the first computing device. This application embodiment does not limit this.

[0086] In the above embodiments, the receiving index table can also indicate the amount of data to be received. Different amounts of data can be sent to different second computing devices, and the second computing device allocates an appropriate amount of memory space for the received data according to the size of the data, thus avoiding the waste of memory space.

[0087] 803. Based on the received information, the second computing device stores the second storage location information of the received data block into the list position corresponding to the first computing device in the empty list.

[0088] The process by which the second computing device stores the second storage location information of the received data block into the list position corresponding to the first computing device in the empty list includes: starting from the first data block to be received by the second computing device, finding the corresponding row in the empty list based on the identification information of the first computing device corresponding to the data block; storing the second storage location information corresponding to the data block into the corresponding row; repeating the above steps for the remaining data blocks to be received until the second storage location information of all data blocks to be received is stored into the corresponding list position in the empty list.

[0089] like Figure 9 As shown, Figure 9 This is a schematic diagram illustrating a process for constructing a sending index table according to an embodiment of this application. Taking a computing system with three computing devices as an example, steps 801 to 803 are explained. One process runs on each computing device, and the three processes are numbered rank0, rank1, and rank2, respectively. Each rank has six data blocks to be received, and the first computing device corresponding to every two data blocks is the same. (Combined with...) Figure 9The left-middle diagram illustrates this process, using rank0 as the second computing device and rank0, rank1, and rank2 as the first computing devices, with the second storage location information as the offset value. The second computing device first creates an empty list of 3 rows and 2 columns. Then, starting from the first data block to be received, it iterates through the data blocks. The iteration process is as follows: For the 0th data block to be received in rank0, the first computing device is rank1, corresponding to the 1st row of the receive index table. The second computing device first finds the 1st row and then stores the offset value 0 in the 0th column of the 1st row of the send index table. For the 1st data block to be received in rank0, the first computing device is rank0, corresponding to the 0th row of the receive index table. The second computing device first finds the 0th row and then stores the offset value 1 in the 0th column of the 1st row of the send index table. This process is repeated for the remaining data blocks to be received in rank0 until all data blocks have been traversed. The example above uses rank0 as an example to illustrate the construction process of the receive index table; the process for constructing the receive index table for other ranks is similar.

[0090] In the above example, the number of data blocks corresponding to each first computing device can be the same or different; that is, the length of each row in the receiving index table can be different. This application embodiment does not limit the number of data blocks corresponding to each first computing device.

[0091] In steps 801 to 803 above, the receiving index table is constructed based on a newly created empty list. In some embodiments, the receiving index table can be constructed based on an existing list. This list may have been constructed by the second computing device for the previous iteration. When constructing the current receiving index table, the values ​​in this list can be cleared first to obtain an empty list, or the values ​​that should be stored in the current receiving index table can be directly used to overwrite the contents of the list. By constructing the list using the above method, a new empty list is not created each time, which can save storage space on the second computing device.

[0092] Steps 801 to 803 above describe the process of constructing the receiving index table using a second computing device as an example. In some embodiments, the gating model can send the received information from the second computing device to the first computing device. Based on the received information from the second computing device, the first computing device constructs a receiving index table for the second computing device. After the receiving index table is constructed, the first computing device sends the receiving index table to the corresponding second computing device. The construction process of this receiving index table is the same as steps 801 to 803 above, and will not be repeated here.

[0093] Steps 601 to 603 and 801 to 803 above, taking the example of one computing device running one process and one process corresponding to one number, respectively, describe the process of the first computing device constructing a sending index table and the second computing device constructing a receiving index table. In some embodiments, a computing device can run multiple processes, each process corresponding to a number, i.e., a rank. For different ranks within the same computing device, the processing unit of the computing device can use the scattergather list (SGL) function in remote direct memory access (RADM) technology to directly store data blocks into the receiving buffer corresponding to the destination rank through shared memory, without the need to construct a receiving index table.

[0094] In some embodiments, the first computing device and the second computing device communicate with each other at different ranks via a network interface card (NIC). In other embodiments, the first computing device and the second computing device communicate with each other at different ranks via space division multiple access (SDMA) or other data transmission engines. This application does not limit the specific implementation of these embodiments.

[0095] Steps 601 to 603 and 801 to 803 above describe the construction process of the sending index table and receiving index table using lists as an example. In some embodiments, linked lists can be used as the form of sending index tables and receiving index tables. The following describes the construction process of the linked list-based sending index table using a first computing device as an example: The first computing device obtains the sending information of the data block to be sent, which includes the first storage location information of the data block to be sent and the information of the second computing device; the first computing device creates an empty linked list, the length of which is equal to the number of data blocks to be sent by the first computing device; based on the sending order, the first computing device stores the first storage location information of the data block to be sent in the sending buffer into the pointer field of the empty linked list. For example, if there are 3 data blocks to be sent in rank2, taking the first storage location information as the offset value as an example, according to the sending order, rank2 needs to send the data block with offset value 0 to rank2, the data block with offset value 2 to rank0, and the data block with offset value 1 to rank1. Based on the transmission requirements, the first computing device constructs a linked list of length 3 for rank 2. Based on the starting address of the transmission buffer, the address information corresponding to offset 0 is stored in the pointer field of the first node of the linked list, the address information corresponding to offset 2 is stored in the pointer field of the second node, and the address information corresponding to offset 1 is stored in the pointer field of the third node. The same process is applied to other ranks. The second computing device constructs the linked list-based receiver index table in the same way, and will not be elaborated upon here.

[0096] Figure 10 This is a flowchart of a data transmission method in aggregated communication provided in an embodiment of this application, such as... Figure 10 As shown, taking the interaction between the first computing device and the second computing device as an example, the method includes the following steps 1001 to 1009.

[0097] 1001. The first computing device obtains a transmission index table, which is used to indicate the first storage location of the data block to be transmitted by the first computing device and information of the second computing device.

[0098] Before each iteration, the first computing device first obtains the address of the transmission index table, and based on this address, the first computing device retrieves the transmission index table. In some embodiments, the first computing device includes an accelerator used to generate the transmission index table. The accelerator has a matching network interface card (NIC), which has a communication engine. Before each iteration, the accelerator sends the address of the transmission buffer and the address of the transmission index table to the communication engine on the NIC by calling a communication operator. The communication engine retrieves the data block to be transmitted by querying the address of the transmission buffer, and retrieves the transmission index table by querying the address of the transmission index table. The transmission index table is constructed according to steps 601 to 603, and the contents of the transmission index table are not described in detail here.

[0099] In the above embodiments, the first computing device sends each data block to be sent to the corresponding second computing device based on the sending index table. The data block does not need to be copied before sending, which allows the second computing device to receive consecutive data blocks and shortens the time required for data transmission.

[0100] 1002. The first computing device determines the order in which it sends multiple data blocks to multiple second computing devices according to the sending index table and the number of the second computing device, wherein the first computing device sends the data blocks to the first computing device first.

[0101] In this context, "the first computing device sends the data block first" means that after each iteration, the first computing device is the first second computing device corresponding to the data block to be sent by the first computing device. That is, the first computing device first sends the data block to itself, and then sends the data block to the next second computing device starting from itself. Taking rank2 as an example, rank2 first sends the data to rank2, and then sends it sequentially to rank3, rank0, and rank1 according to their numbers. Based on this sequence, the first computing device can determine which rank the current data block to be sent should be sent to, that is, it can determine the second computing device to which the current data block should be sent.

[0102] In the above embodiments, the first computing device also sends data to itself when sending data, thereby ensuring device utilization and computational integrity. When sending data, each first computing device first sends data to itself, and then sends data to the next computing device originating from that first computing device, thereby avoiding data transmission conflicts.

[0103] 1003. For any second computing device, the first computing device obtains the first storage location of the data block to be sent from the row corresponding to the second computing device in the sending index table.

[0104] In some embodiments, the transmission index table may use rows to indicate information about the second computing device. For example, a first row may indicate the first storage location of a data block to be transmitted to the second computing device numbered 1, a second row may indicate the first storage location of a data block to be transmitted to the second computing device numbered 2, and so on. In other embodiments, the transmission index table may use a column to store the number of the computing device, thereby using a corresponding row to indicate the first storage location of the data block to be transmitted to that second computing device. For example, the first column of the first row may store the number 1, and this first row may indicate the first storage location of a data block to be transmitted to the second computing device numbered 1, the second row may indicate the first storage location of a data block to be transmitted to the second computing device numbered 2, and so on.

[0105] 1004. The first computing device obtains the data block to be sent from the first storage location on the first computing device.

[0106] The process by which the first computing device retrieves a data block to be sent from a first storage location on the first computing device includes: the first computing device finding the corresponding first storage location in the transmission buffer and retrieving the data block to be sent from that first storage location. In some embodiments, the first computing device includes an accelerator used to generate a transmission index table. The accelerator has a matching network interface card (NIC), and the NIC has a communication engine. The communication engine traverses the transmission index table, starting from the row corresponding to the second computing device that is the current transmission target. Each time the communication engine reads a value from the transmission index table, it retrieves the data block to be sent from the corresponding position in the transmission buffer based on that value.

[0107] The process of retrieving the data block to be sent from the corresponding position in the transmission buffer when the first storage location is indicated by an offset value includes: the communication engine querying the starting address of the transmission buffer; calculating the starting address of the data block in the transmission buffer based on the offset value corresponding to the data block; and reading a data block with a size equal to the data block size starting from the starting address to retrieve the data block. Specifically, when the first storage location information is indicated by a starting address, the process of retrieving the data block to be sent from the corresponding position in the transmission buffer includes: the communication engine querying the starting address corresponding to the data block in the transmission buffer; and reading a data block with a size equal to the data block size starting from the starting address to retrieve the data block.

[0108] 1005. The first computing device sends the data block to be sent to the second computing device.

[0109] The process of the first computing device sending a data block to the second computing device includes: based on the order of data block sending and the second computing device corresponding to the data block, the first computing device sends the data block to the corresponding second computing device every time it reads a data block from the sending buffer.

[0110] 1006. The second computing device obtains a receiving index table of the second computing device, which is used to indicate the information of the first computing device of the data block received by the second computing device and the second storage location of the received data block on the second computing device.

[0111] Before each iteration, the second computing device first obtains the address of the receive index table, and then retrieves the receive index table based on that address. In some embodiments, the second computing device includes an accelerator used to generate the receive index table. The accelerator has a matching network interface card (NIC), which has a communication engine. Before each iteration, the accelerator sends the address of the receive buffer and the address of the receive index table to the communication engine on the NIC by calling a communication operator. The communication engine retrieves the receive index table by querying its address. The receive index table is constructed according to steps 801 to 803; the contents of the receive index table are not described in detail here.

[0112] 1007. The second computing device receives a data block from the first computing device.

[0113] The receiving process is not controlled by the receiving order. That is, when the communication engine of the network card on the second computing device recognizes that a data block is being sent from the first computing device to the second computing device, the second computing device receives the data block, one data block at a time.

[0114] 1008. The second computing device, based on the first computing device, obtains a second storage location for storing data blocks from the row corresponding to the first computing device in the receiving index table.

[0115] The process by which the second computing device obtains the second storage location for storing the data block includes: the second computing device, based on the first computing device receiving the data block, determines the row corresponding to the number of the first computing device, and determines the second storage location corresponding to the received data block from that row. In some embodiments, the process includes: the second computing device identifying the first computing device receiving the data block; determining the row corresponding to the first computing device in the receiving index table based on the number of the first computing device; based on the number of data blocks sent by the first computing device to the second computing device, the second computing device querying the receiving index table to find the list position corresponding to the data block, where the list position stores the second storage location information of the data block; and the second computing device determining the second storage location from the list position. For example, the j-th data block from the first computing device i corresponds to the i-th row and j-th column in the receiving index table; the second computing device can obtain the second storage location of the data block by reading the value stored in the list position.

[0116] In the above embodiments, the second computing device can continuously receive data blocks from the same first computing device by receiving an index table, thereby receiving consecutive data blocks. This eliminates the need for the first computing device to perform data copying or other operations during transmission, saving time spent on data transmission.

[0117] The above embodiments determine the row corresponding to the first computing device in the receiving index table based on the list position in the receiving index table. In some embodiments, based on the identification information of the first computing device stored in the receiving index table, the second computing device queries the receiving index table for the row containing the identification information, and that row is the row corresponding to the first computing device. The identification information can be the number of the first computing device, the first computing device ID, or the IP address corresponding to the first computing device; this application does not limit this.

[0118] 1009. The second computing device stores the data block in the second storage location.

[0119] The process by which the second computing device stores a data block in the second storage location when the offset value indicates the second storage location includes: the communication engine querying the starting address of the receive buffer; the communication engine calculating the starting address of the data block in the receive buffer based on the offset value corresponding to the data block; the communication engine calculating the offset of the data block in the receive buffer according to the size of the data block; and the communication engine storing the data block in a storage space with a length equal to the offset, starting from the starting address corresponding to the data block.

[0120] When the first storage location is indicated by a starting address, the process by which the second computing device stores the data block to the second storage location includes: the communication engine querying the starting address of the data block to be stored in the receiving buffer; the communication engine calculating the offset of the data block in the receiving buffer according to the size of the data block; and the communication engine storing the data block in a storage space with a length equal to the offset, starting from the starting address corresponding to the data block.

[0121] Through the technical solution in this application embodiment, the first computing device obtains the first storage location of the data block to be sent from the sending index table, sends the data block to the second computing device, and the second computing device stores the received data block in the second storage location indicated by the receiving index table. This data transmission process does not require copying the data block, saving the time of transmitting non-contiguous data blocks in different processes, thereby solving the problem of huge time consumption in the communication link and breaking through the performance bottleneck of distributed computing.

[0122] The data transmission method in aggregated communication disclosed in this application has been described above by way of example. The data transmission apparatus in aggregated communication disclosed in this application will now be described by way of example. This application provides two data transmission apparatuses in aggregated communication, one of which is applied to a first computing device in a computing system, and the other is applied to a second computing device in a computing system. These two data transmission apparatuses in aggregated communication will be described below.

[0123] Figure 11 This is a structural block diagram of a data transmission device in aggregated communication provided in an embodiment of this application. Figure 11 As shown, the device is applied to a first computing device, which includes an index table acquisition module 1101 and a data block sending module 1102.

[0124] The index table acquisition module 1101 is used to acquire the transmission index table of the first computing device. The transmission index table is used to indicate the information of the second computing device corresponding to each data block in the multiple data blocks to be transmitted by the first computing device. The information of the second computing device indicates the computing device that receives each data block. The number of the second computing devices is N, where N is a positive integer greater than or equal to 2.

[0125] The data block sending module 1102 is used to send multiple data blocks to N second computing devices according to the sending index table.

[0126] In one possible implementation, the N second computing devices include the first computing device.

[0127] In one possible implementation, each second computing device is assigned a number, and the data block sending module 1102 is used to determine the order in which multiple data blocks are sent to N second computing devices according to the sending index table and the number of the second computing device, wherein the first computing device sends the data block to the first computing device first.

[0128] In one possible implementation, the transmission index table includes multiple rows, each indicating the first storage location on the first computing device for X data blocks to be transmitted to a second computing device, where X is a positive integer greater than or equal to 1.

[0129] The data block sending module 1102 is used to, for any second computing device, obtain the first storage location of X data blocks to be sent from the row corresponding to the second computing device in the sending index table; obtain X data blocks from the first storage location on the first computing device; and send the X data blocks to the second computing device.

[0130] Figure 12 This is a structural block diagram of a data transmission device in aggregated communication provided in an embodiment of this application. Figure 12 As shown, the device is applied to a second computing device, which includes an index table acquisition module 1201 and a data block receiving module 1202.

[0131] The index table acquisition module 1201 is used to acquire the receiving index table of the second computing device. The receiving index table is used to indicate the information of the first computing device corresponding to Y data blocks received by the second computing device, where Y is a positive integer greater than or equal to 1.

[0132] The data block receiving module 1202 is used to receive multiple data blocks, and the data blocks received by each second computing device are consecutive data blocks.

[0133] In one possible implementation, the data block receiving module 1202 includes:

[0134] The data block storage unit is used to store the data blocks sent by the first computing device according to the receiving index table.

[0135] In one possible implementation, the receive index table includes multiple rows, each indicating a second storage location on a second computing device for Y data blocks received from at least one first computing device.

[0136] The data block storage unit is used to receive data blocks from the first computing device; based on the first computing device, to obtain a second storage location for storing the data blocks from the row corresponding to the first computing device in the receiving index table; and to store the data blocks in the second storage location.

[0137] The index table acquisition module 1101, data block sending module 1102, index table acquisition module 1201, and data block receiving module 1202 can all be implemented in software or in hardware. For example, the implementation of the index table acquisition module 1201 will be described below. Similarly, the implementation of other modules can refer to the implementation of the index table acquisition module 1201.

[0138] As an example of a software functional unit, the index table acquisition module 1201 may include code running on a computing instance. The computing instance may include at least one of a physical host (computing device), a virtual machine, or a container. Further, the aforementioned computing instance may be one or more. For example, the index table acquisition module 1201 may include code running on multiple hosts / virtual machines / containers. It should be noted that the multiple hosts / virtual machines / containers used to run the code may be distributed in the same region or in different regions. Further, the multiple hosts / virtual machines / containers used to run the code may be distributed in the same availability zone (AZ) or in different AZs, each AZ including one or more geographically proximate data centers. Typically, a region may include multiple AZs.

[0139] Similarly, multiple hosts / virtual machines / containers used to run this code can be distributed within the same Virtual Private Cloud (VPC) or across multiple VPCs. Typically, a VPC is set up within a region. Communication between two VPCs within the same region, as well as between VPCs in different regions, requires a communication gateway to be set up within each VPC to enable interconnection between VPCs.

[0140] As an example of a hardware functional unit, the index table acquisition module 1201 may include at least one computing device, such as a server. Alternatively, the index table acquisition module 1201 may also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be implemented using a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof.

[0141] The multiple computing devices included in the index table acquisition module 1201 can be distributed in the same region or in different regions. Similarly, the multiple computing devices included in the index table acquisition module 1201 can be distributed in the same Availability Zone (AZ) or in different AZs. Likewise, the multiple computing devices included in the index table acquisition module 1201 can be distributed in the same VPC or in multiple VPCs. These multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0142] It should be noted that in other embodiments, the steps implemented by the above modules can be specified as needed. The modules can respectively implement different steps in the data transmission method of the above-described aggregated communication to achieve all the functions of the above-described device. That is, the data transmission device in aggregated communication provided in the above embodiments is only illustrated by the division of the above functional modules when implementing data transmission. In practical applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. Furthermore, the device provided in the above embodiments and the corresponding method embodiments belong to the same concept, and their specific implementation process is detailed in the method embodiments, which will not be repeated here.

[0143] It should be noted that all information (including but not limited to user device information, user personal information, etc.), data (including but not limited to data used for analysis, stored data, displayed data, etc.), and signals involved in this application have been authorized by the user or fully authorized by all parties, and the collection, use, and processing of related data must comply with the relevant laws, regulations, and standards of the relevant countries and regions. For example, the data blocks involved in this application were all obtained under full authorization.

[0144] In this embodiment of the disclosure, a computing system is also provided, which includes a plurality of computing devices for executing any of the data transmission methods in aggregated communication described above.

[0145] In this embodiment of the disclosure, a computer-readable storage medium is also provided, which stores at least one instruction that is read by a processor to cause a computing device to perform any of the data transmission methods in aggregated communication described in the above method embodiments.

[0146] In this embodiment of the disclosure, a computer program product is also provided, comprising computer instructions stored in a computer-readable storage medium. A processor of a computing device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computing device to perform any of the data transmission methods in the aggregated communication described in the above method embodiments.

[0147] The above embodiments exemplify the data transmission method and system in aggregated communication proposed in this application. In addition to the computing device structure provided in the above embodiments, the computing device structure involved in this application may also be one or more combinations of the following, which will be described below.

[0148] In some possible embodiments, the computing device described above can be implemented as a virtualized device.

[0149] For example, a virtualization device can be a virtual machine (VM) running a program for sending messages, deployed on hardware devices (e.g., physical servers). A virtual machine refers to a complete computer system simulated by software, possessing full hardware system functionality and running in a completely isolated environment. Virtual machines can be configured as computing devices. For example, a computing device can be implemented based on a general-purpose physical server combined with network functions virtualization (NFV) technology. The computing device can be a virtual host, virtual router, or virtual switch. Those skilled in the art can, by reading this application, virtualize a computing device with the above-mentioned functions on a general-purpose physical server using NFV technology. Further details are omitted here.

[0150] For example, a virtualization device can be a container. A container is an entity used to indicate an isolated virtualization environment; for example, a container can be a Docker container. Containers can be configured as computing devices. For instance, a computing device can be created using a corresponding image. For example, using an image of proxy-container (a container providing proxy services), two container instances can be created for proxy-container: container instance proxy-container1 and container instance proxy-container2. Container instance proxy-container1 and container instance proxy-container2 can then be provided as computing devices. When implemented using container technology, computing devices can run using the kernel of a physical machine, and multiple computing devices can share the operating system of the physical machine. Container technology can isolate different computing devices. Containerized computing devices can run in a virtualized environment, such as a virtual machine, or they can run directly on a physical machine.

[0151] For example, a virtualized device can be a Pod, which is the basic unit used by Kubernetes (Kubernetes is an open-source container orchestration engine from Google, often abbreviated as K8s) to deploy, manage, and orchestrate containerized applications. A Pod can include one or more containers. Each container in the same Pod is typically deployed on the same host, so each container in the same Pod can communicate through that host and share the host's storage and network resources. A Pod can be configured as a compute device. Specifically, a Pod can be created by instructing Container as a Service (CaaS, a container-based PaaS service), thus providing the Pod as a compute device.

[0152] Of course, computing devices can also be other virtualization devices, which will not be listed here.

[0153] In some possible embodiments, the computing device described above can also be implemented by a general-purpose processor. For example, the general-purpose processor can be in the form of a chip. Specifically, the general-purpose processor implementing the computing device includes processing circuitry and an input interface and an output interface internally connected and communicating with the processing circuitry. The processing circuitry is used to execute the message generation step in the various method embodiments above through the input interface, the receiving step in the various method embodiments above through the input interface, and the sending step in the various method embodiments above through the output interface. Optionally, the general-purpose processor may further include a storage medium, and the processing circuitry is used to execute the storage step in the various method embodiments above through the storage medium. The storage medium may store instructions executed by the processing circuitry, and the processing circuitry is used to execute the instructions stored in the storage medium to execute the various method embodiments above.

[0154] As a possible product form, the computing device in the embodiments of this application can also be implemented using one or more field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), controllers, state machines, gate logic, discrete hardware components, any other suitable circuits, or any combination of circuits capable of performing the various functions described throughout this application.

[0155] In some possible embodiments, the computing device described above can also be implemented using a computer program product. Specifically, embodiments of this application provide a computer program product that, when run on a computing device, causes the computing device to execute the data transmission method in the aggregated communication described above.

[0156] It should be understood that the computing devices in the various product forms described above each have any of the functions of the computing devices in the above method embodiments, which will not be elaborated here.

[0157] Those skilled in the art will recognize that the method steps and units described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, the steps and components of each embodiment have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0158] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be found in the corresponding processes in the foregoing method embodiments, and will not be repeated here.

[0159] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections through some interfaces, apparatuses, or units, or they may be electrical, mechanical, or other forms of connection.

[0160] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of the embodiments of this application, depending on actual needs.

[0161] Furthermore, the units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or software.

[0162] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or computing device, etc.) to execute all or part of the steps of the methods in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0163] In this application, the terms "first," "second," etc., are used to distinguish identical or similar items that have substantially the same function and purpose. It should be understood that there is no logical or temporal dependency between "first," "second," and "nth," nor does it limit the quantity or order of execution. It should also be understood that although the following description uses the terms "first," "second," etc., to describe various elements, these elements should not be limited by the terms. These terms are merely used to distinguish one element from another. For example, without departing from the scope of various examples, a first image can be referred to as a second image, and similarly, a second image can be referred to as a first image. Both the first image and the second image can be images, and in some cases, they can be separate and distinct images.

[0164] In this application, the term "at least one" means one or more, and the term "multiple" means two or more. For example, multiple second messages refer to two or more second messages. The terms "system" and "network" are often used interchangeably in this document.

[0165] It should also be understood that the term "if" can be interpreted as meaning "when" or "upon" or "in response to determination" or "in response to detection." Similarly, depending on the context, the phrases "if determination..." or "if detection [the stated condition or event]" can be interpreted as meaning "when determination..." or "in response to determination..." or "when detection [the stated condition or event]" or "in response to detection [the stated condition or event]."

[0166] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any person skilled in the art can easily conceive of various equivalent modifications or substitutions within the technical scope disclosed in this application, and these modifications or substitutions should all be covered within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

[0167] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented in software, it can be implemented, in whole or in part, as a computer program product. This computer program product includes one or more computer program instructions. When these computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments of this application are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device.

[0168] The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer program instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired or wireless means. The computer-readable storage medium can be any available medium that a computer can access, or a data storage device such as a server or data center that integrates one or more available media. The available medium can be magnetic media (e.g., floppy disks, hard disks, magnetic tapes), optical media (e.g., digital video discs, DVDs), or semiconductor media (e.g., solid-state drives).

[0169] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.

[0170] The above embodiments are only used to illustrate the technical solutions of this application, and are not intended to limit it. Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features. Such modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the scope of the technical solutions of the embodiments of this application.

Claims

1. A data transmission method in aggregated communication, characterized in that, Applied to a computing system, the computing system including multiple computing devices, the method includes: The first computing device among the plurality of computing devices obtains the transmission index table of the first computing device. The transmission index table is used to indicate the information of the second computing device corresponding to each data block in the plurality of data blocks to be transmitted by the first computing device. The information of the second computing device indicates the computing device that receives each data block. The number of the second computing devices is N, where N is a positive integer greater than or equal to 2. The first computing device sends the plurality of data blocks to the N second computing devices according to the sending index table; The N second computing devices respectively receive the plurality of data blocks, and the data blocks received by each second computing device are consecutive data blocks.

2. The method according to claim 1, characterized in that, The N second computing devices include the first computing device.

3. The method according to claim 2, characterized in that, Each second computing device is assigned a number, and the first computing device sends the plurality of data blocks to the N second computing devices according to the sending index table, including: The first computing device determines the order in which it sends the plurality of data blocks to the N second computing devices according to the sending index table and the number of the second computing device, wherein the first computing device sends the data blocks to the first computing device first.

4. The method according to claim 3, characterized in that, The sending index table includes multiple rows, each row indicating the first storage location of X data blocks to be sent to a second computing device on the first computing device, where X is a positive integer greater than or equal to 1; The first computing device sends the plurality of data blocks to the N second computing devices according to the transmission index table, including: For any of the second computing devices, the first computing device obtains the first storage location of the X data blocks to be sent from the row corresponding to the second computing device in the sending index table; Obtain the X data blocks from the first storage location on the first computing device and send the X data blocks to the second computing device.

5. The method according to claim 1, characterized in that, The method further includes: The second computing device obtains the receiving index table of the second computing device, the receiving index table being used to indicate the information of the first computing device corresponding to the Y data blocks received by the second computing device, where Y is a positive integer greater than or equal to 1; The N second computing devices respectively receive the plurality of data blocks, including: The second computing device stores the data blocks sent by the first computing device according to the received index table.

6. The method according to claim 5, characterized in that, The receiving index table includes multiple rows, each indicating a second storage location on the second computing device for Y data blocks received from at least one of the first computing devices. The second computing device stores data blocks sent by the first computing device according to the received index table, including: The second computing device receives data blocks from the first computing device; The second computing device, based on the first computing device, obtains a second storage location for storing the data block from the row corresponding to the first computing device in the receiving index table; The second computing device stores the data block in the second storage location.

7. A computing system, characterized in that, The system includes multiple computing devices. The first computing device among the plurality of computing devices is used to obtain the transmission index table of the first computing device. The transmission index table is used to indicate the information of the second computing device corresponding to each data block in the plurality of data blocks to be transmitted by the first computing device. The information of the second computing device indicates the computing device receiving each data block. The number of the second computing devices is N, where N is a positive integer greater than or equal to 2. The first computing device is further configured to send the plurality of data blocks to the N second computing devices respectively according to the sending index table; The N second computing devices are used to receive the plurality of data blocks respectively, and the data blocks received by each second computing device are consecutive data blocks.

8. The system according to claim 7, characterized in that, The N second computing devices include the first computing device.

9. The system according to claim 8, characterized in that, Each second computing device is assigned a number. The first computing device is used to determine the order in which the plurality of data blocks are sent to the N second computing devices according to the sending index table and the number of the second computing device. The first computing device sends the data blocks to the first computing device first.

10. The system according to claim 9, characterized in that, The sending index table includes multiple rows, each row storing the first storage location of X data blocks to be sent to a second computing device on the first computing device, where X is a positive integer greater than or equal to 1; The first computing device obtains the first storage location of X data blocks to be sent from the row corresponding to the second computing device in the sending index table, obtains the X data blocks from the first storage location on the first computing device, and sends the X data blocks to the second computing device.

11. The system according to claim 7, characterized in that, The second computing device is further configured to obtain a receiving index table of the second computing device, the receiving index table being used to indicate information of the first computing device corresponding to Y data blocks received by the second computing device, where Y is a positive integer greater than or equal to 1; The second computing device is used to store data blocks sent by the first computing device according to the receiving index table.

12. The system according to claim 11, characterized in that, The receiving index table includes the second storage location of Y data blocks on the second computing device and information about the first computing device corresponding to the Y data blocks received by the second computing device. The second computing device is used to receive data blocks from the first computing device; Based on the first computing device, a second storage location for storing the data block is obtained from the row corresponding to the first computing device in the receiving index table; The data block is stored in the second storage location.

13. A computer-readable storage medium, characterized in that, The storage medium stores at least one instruction, which is read by a processor to cause a computing device to perform the method as described in any one of claims 1 to 6.

14. A computer program product, characterized in that, The computer program product includes computer instructions stored in a computer-readable storage medium, wherein a processor of a computing device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computing device to perform the method as described in any one of claims 1 to 6.

Citation Information

Patent Citations

  • Distributed data storage method, data query method, device and storage medium

    CN112364209A

  • Techniques for duplicating inode state to prevent loss of inode metadata

    US20210034467A1