Data transmission method

By allocating control domain memory and data domain memory to computing devices in a computer cluster, the problem of low data transmission efficiency between computing devices is solved, and efficient data transmission is achieved without being restricted by network bandwidth.

WO2025209186A1PCT designated stage Publication Date: 2025-10-09XFUSION DIGITAL TECH CO LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/083674
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-03
Filing Date
2025-03-20
Publication Date
2025-10-09

AI Technical Summary

Technical Problem

The data transmission efficiency between computing devices in a computer cluster is low, mainly due to insufficient network bandwidth resources.

Method used

The management device allocates target memory to the computing device, including control domain memory and data domain memory, for storing transmission control information and data, realizing direct memory transmission between computing devices and avoiding network bandwidth limitations.

Benefits of technology

It improves the data transmission efficiency between computing devices, ensures that the data transmission process is not limited by network bandwidth resources, and increases the data transmission speed.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025083674_09102025_PF_FP_ABST
    Figure CN2025083674_09102025_PF_FP_ABST
Patent Text Reader

Abstract

Provided in the embodiments of the present application is a data transmission method, comprising: receiving a memory allocation request sent by a first computing device, the memory allocation request comprising the memory capacity of a target memory and a first constraint identifier, and the first constraint identifier being used for matching between the first computing device and a second computing device; on the basis of the memory allocation request, allocating the target memory to the first computing device, the term "target memory" comprising a control domain memory and a data domain memory, the control domain memory being used for storing transmission control information, the data domain memory being used for storing data transmitted by the first computing device to the second computing device, and the transmission control information being used for indicating states of the first computing device and the second computing device; and sending a memory allocation response to the first computing device and recording a target corresponding relationship, the memory allocation response comprising memory information of the target memory, and the target corresponding relationship being a corresponding relationship between the first computing device, the memory information of the target memory and the first constraint identifier. The method can improve data transmission efficiency.
Need to check novelty before this filing date? Find Prior Art

Description

Data transmission method

[0001] This application claims priority to the Chinese patent application filed with the China Patent Office on April 3, 2024, with application number 202410405448.5 and application name “Data Transmission Method”, the entire contents of which are incorporated by reference into this application. Technical Field

[0002] The embodiments of the present application relate to the technical field of computing devices, and in particular to a data transmission method. Background Art

[0003] A computer cluster can include multiple computing devices that can transmit data to each other. For example, a computer cluster can be an artificial intelligence (AI) training cluster.

[0004] Currently, data can be transmitted between different computing devices in a computer cluster via a network. However, if the data transmitted between computing devices is large, insufficient network bandwidth resources will affect the data transmission speed, resulting in low data transmission efficiency. Summary of the Invention

[0005] The embodiments of the present application provide a data transmission method to solve the technical problem of low data transmission efficiency.

[0006] In a first aspect, an embodiment of the present application provides a data transmission method, applied to a management device, the method comprising:

[0007] receiving a memory allocation request sent by a first computing device, the memory allocation request including a memory capacity of a target memory and a first constraint identifier; the first constraint identifier being used to match the first computing device with a second computing device;

[0008] Allocate target memory for the first computing device according to the memory allocation request, the target memory including a control domain memory and a data domain memory; wherein the control domain memory is used to store transmission control information, and the data domain memory is used to store data sent by the first computing device to the second computing device, and the transmission control information is used to indicate the status of the first computing device and the second computing device;

[0009] A memory allocation response is sent to the first computing device and a target correspondence is recorded, wherein the memory allocation response includes memory information of the target memory, and the target correspondence is a correspondence between the first computing device, the memory information of the target memory, and the first constraint identifier.

[0010] In the above scheme, the management device can receive a memory allocation request sent by the first computing device, the memory allocation request including a first constraint identifier; can allocate target memory to the first computing device according to the memory allocation request; can send a memory allocation response to the first computing device and record the target correspondence, the memory allocation response including memory information of the target memory. In the above scheme, the management device can allocate target memory to the first computing device so that the first program of the first computing device can transmit target data to the second program of the second computing device through the target memory. Through the above scheme, the target data can be transmitted between the first program of the first computing device and the second program of the second computing device through the target memory, and the data transmission process is not limited by network bandwidth resources, thereby improving the data transmission efficiency.

[0011] In a possible implementation, the method further includes:

[0012] receiving a data read request sent by the second computing device, wherein the data read request includes a second constraint identifier;

[0013] When the second constraint identifier is identical to the first constraint identifier in the corresponding relationship, the corresponding relationship is confirmed to be a target corresponding relationship, and the memory information of the target memory in the target corresponding relationship is sent to the second computing device.

[0014] In the above solution, the management device can receive a data read request from the second computing device. If the second constraint identifier in the data read request is the same as the first constraint identifier in the corresponding relationship, the management device can confirm that the corresponding relationship is the target corresponding relationship, and can send the memory information of the target memory in the target corresponding relationship to the second computing device. Through the above solution, the management device can allocate the target memory to the second computing device, so that the second program of the second computing device can read the target data from the target memory.

[0015] In one possible implementation, the first constraint identifier is a specific string corresponding to a specific task of the target application, the target memory is the memory allocated to the first program of the first computing device and the second program of the second computing device, and the first program and the second program are used to complete the specific task of the target application.

[0016] In the above solution, the first program of the first computing device and the second program of the second computing device can be paired by the first constraint identifier and the second constraint identifier, so that the first program of the first computing device can transfer data with the second program of the second computing device through the target memory.

[0017] In a second aspect, an embodiment of the present application provides a data transmission method, applied to a first computing device, the method comprising:

[0018] determining target data, where the target data is data to be sent to the second computing device;

[0019] Sending a memory allocation request to a management device, the memory allocation request including a memory capacity of a target memory and a first constraint identifier, the first constraint identifier being used to match the first computing device with the second computing device;

[0020] Receive a memory allocation response sent by the management device, the memory allocation response including memory information of the target memory; the target memory includes a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store the target data;

[0021] The target data is transmitted to the second computing device through the data domain memory according to the transmission control information in the control domain memory.

[0022] In the above scheme, a first computing device can determine target data; send a memory allocation request to a management device; receive a memory allocation response from the management device, the memory allocation response including target memory information; and transmit the target data to a second computing device via data domain memory based on transmission control information in control domain memory. In the above scheme, a first program running on the first computing device can transmit the target data to a second program running on the second computing device via the target memory. This data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0023] In one possible implementation, the transmission control information includes a transmitting end state and a receiving end state; and transmitting the target data to the second computing device through the data domain memory according to the transmission control information in the control domain memory includes:

[0024] Updating the originating state to a ready-to-complete state;

[0025] When it is determined that the receiving terminal state in the control domain memory is in the ready state, the target data is written into the data domain memory, and the second computing device is used to read the target data from the data domain memory.

[0026] In the above solution, the first computing device can write target data into the target memory so that the second computing device can read the target data from the target memory.

[0027] In a possible implementation, the target data includes a plurality of data blocks; and writing the target data into the data domain memory includes:

[0028] For any data block, determining a read pointer position and a write pointer position in the transmission control information;

[0029] Determining whether there is writable space in the data domain memory according to the read pointer position and the write pointer position;

[0030] When it is determined that there is writable space in the data domain memory, the data block is written into the writable space in the data domain memory.

[0031] In the above solution, the target data can be divided into multiple data blocks of a preset size, and the target data can be written to the data domain memory in units of data blocks. In this way, the write operation of the first program on the first computing device and the read operation of the second program on the second computing device can be carried out simultaneously, further improving data transmission efficiency.

[0032] In a possible implementation, after writing the data block into the writable space of the data domain memory, the method further includes:

[0033] Update at least one of the following transmission control information in the control domain memory:

[0034] The write pointer position, the data block index of the data block, the size of the data sent to the second computing device, and the check information of the data block.

[0035] In the above solution, the transmission control information can be updated so that the second computing device can read the target data according to the transmission control information.

[0036] In a possible implementation, before writing the target data into the data domain memory, the method further includes:

[0037] Do at least one of the following:

[0038] updating a memory identifier in the transmission control information; or,

[0039] A transmission mode is updated in the transmission control information, where the transmission mode is a sending mode or a receiving mode.

[0040] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0041] In one possible implementation, before sending the memory allocation request to the management device, the method further includes:

[0042] The memory capacity is determined according to the data size of the target data, and the memory capacity is greater than or equal to the size of the target data.

[0043] In the above solution, the memory capacity can be determined according to the data size of the target data, thereby achieving the purpose of determining the memory capacity of the target memory.

[0044] In a third aspect, an embodiment of the present application provides a data transmission method, applied to a second computing device, the method comprising:

[0045] Sending a data read request to the management device, wherein the data read request includes a second constraint identifier, and the second constraint identifier is used to match the second computing device with the first computing device;

[0046] Receiving memory information of a target memory sent by the management device, the memory information including a memory location and a memory capacity of the target memory, the target memory including a control domain memory and a data domain memory, the control domain memory being used to store transmission control information, and the data domain memory being used to store data written by the first computing device;

[0047] According to the transmission control information, target data stored in the data domain memory by the first computing device is read in the data domain memory.

[0048] In the above scheme, the second computing device can send a data read request to the management device, the data read request including the second constraint identifier; receive memory information of the target memory from the management device; and read the target data stored in the data domain memory of the first computing device based on the transmission control information. In the above method, the target data can be transferred between the first program of the first computing device and the second program of the second computing device via the target memory. The data transfer process is not limited by network bandwidth resources, thereby improving data transfer efficiency.

[0049] In one possible implementation, the target data includes a plurality of data blocks; and reading, in the data domain memory according to the transmission control information, the target data stored in the data domain memory by the first computing device, includes:

[0050] determining a read pointer position and a write pointer position in the transmission control information;

[0051] Determining whether there is a readable data block in the data domain memory according to the read pointer position and the write pointer position;

[0052] When it is determined that a readable data block exists in the data domain memory, the data block is read from the data domain memory.

[0053] In the above solution, the target data can be read from the data domain memory in units of data blocks. In this way, the write operation of the first program of the first computing device and the read operation of the second program of the second computing device can be performed simultaneously, further improving data transmission efficiency.

[0054] In a possible implementation, after reading the data block from the data domain memory, the method further includes:

[0055] Update at least one of the following transmission control information in the control domain memory:

[0056] The write pointer position, the size of the data read from the data domain memory, and the index of the data block that failed to be read.

[0057] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0058] In a possible implementation, after receiving the memory information of the target memory sent by the management device, the method further includes:

[0059] In the control domain memory, the receiving end status in the transmission control information is updated to a ready state.

[0060] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0061] In a fourth aspect, an embodiment of the present application provides a data transmission device, which is applied to a management device. The device includes a receiving module, a distribution module, and a sending module, wherein:

[0062] The receiving module is configured to receive a memory allocation request sent by a first computing device, the memory allocation request including a memory capacity of a target memory and a first constraint identifier; the first constraint identifier is used to match the first computing device with a second computing device;

[0063] The allocation module is configured to allocate target memory to the first computing device according to the memory allocation request, the target memory including a control domain memory and a data domain memory; wherein the control domain memory is used to store transmission control information, the data domain memory is used to store data sent by the first computing device to the second computing device, and the transmission control information is used to indicate the status of the first computing device and the second computing device;

[0064] The sending module is used to send a memory allocation response to the first computing device and record a target correspondence relationship, wherein the memory allocation response includes memory information of the target memory, and the target correspondence relationship is a correspondence relationship between the first computing device, the memory information of the target memory, and the first constraint identifier.

[0065] In the above scheme, a memory allocation request sent by a first computing device can be received, and the memory allocation request includes a first constraint identifier; a target memory can be allocated to the first computing device according to the memory allocation request; a memory allocation response can be sent to the first computing device and the target correspondence can be recorded, and the memory allocation response includes memory information of the target memory. In the above scheme, a target memory can be allocated to the first computing device so that a first program of the first computing device can transmit target data to a second program of the second computing device through the target memory. Through the above scheme, the target data can be transmitted between the first program of the first computing device and the second program of the second computing device through the target memory, and the data transmission process is not limited by network bandwidth resources, thereby improving the data transmission efficiency.

[0066] In one possible implementation,

[0067] The receiving module is further configured to receive a data reading request sent by the second computing device, wherein the data reading request includes a second constraint identifier;

[0068] The allocation module is further configured to, when the second constraint identifier is the same as the first constraint identifier in the corresponding relationship, confirm that the corresponding relationship is a target corresponding relationship;

[0069] The sending module is further configured to send the memory information of the target memory in the target correspondence to the second computing device.

[0070] In the above solution, a data read request sent by a second computing device can be received. If the second constraint identifier in the data read request is the same as the first constraint identifier in the corresponding relationship, the corresponding relationship can be confirmed as the target corresponding relationship. Furthermore, memory information of the target memory in the target corresponding relationship can be sent to the second computing device. Through the above solution, the target memory can be allocated to the second computing device, so that the second program of the second computing device can read the target data from the target memory.

[0071] In one possible implementation, the first constraint identifier is a specific string corresponding to a specific task of the target application, the target memory is the memory allocated to the first program of the first computing device and the second program of the second computing device, and the first program and the second program are used to complete the specific task of the target application.

[0072] In the above solution, the first program of the first computing device and the second program of the second computing device can be paired by the first constraint identifier and the second constraint identifier, so that the first program of the first computing device can transfer data with the second program of the second computing device through the target memory.

[0073] In a fifth aspect, an embodiment of the present application provides a data transmission device, which is applied to a first computing device. The device includes a determination module, a sending module, a receiving module, and a transmission module, wherein:

[0074] The determining module is used to determine target data, where the target data is data to be sent to the second computing device;

[0075] The sending module is used to send a memory allocation request to the management device, wherein the memory allocation request includes a memory capacity of a target memory and a first constraint identifier, and the first constraint identifier is used to match the first computing device and the second computing device;

[0076] The receiving module is used to receive a memory allocation response sent by the management device, wherein the memory allocation response includes memory information of the target memory; the target memory includes a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store the target data;

[0077] The transmission module is configured to transmit the target data to the second computing device through the data domain memory according to the transmission control information in the control domain memory.

[0078] In the above scheme, target data can be determined; a memory allocation request can be sent to a management device; a memory allocation response can be received from the management device, the memory allocation response including memory information of the target memory; and the target data can be transmitted to a second computing device via the data domain memory based on the transmission control information in the control domain memory. In the above scheme, a first program running on a first computing device can transmit the target data to a second program running on a second computing device via the target memory. The data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0079] In a possible implementation, the transmission control information includes a transmitting end state and a receiving end state; the transmission module is specifically configured to:

[0080] Updating the originating state to a ready-to-complete state;

[0081] When it is determined that the receiving terminal state in the control domain memory is in the ready state, the target data is written into the data domain memory, and the second computing device is used to read the target data from the data domain memory.

[0082] In the above solution, target data may be written into the target memory so that the second computing device can read the target data from the target memory.

[0083] In a possible implementation, the target data includes multiple data blocks; the transmission module is specifically configured to:

[0084] For any data block, determining a read pointer position and a write pointer position in the transmission control information;

[0085] Determining whether there is writable space in the data domain memory according to the read pointer position and the write pointer position;

[0086] When it is determined that there is writable space in the data domain memory, the data block is written into the writable space in the data domain memory.

[0087] In the above solution, the target data can be divided into multiple data blocks of a preset size, and the target data can be written to the data domain memory in units of data blocks. In this way, the write operation of the first program on the first computing device and the read operation of the second program on the second computing device can be carried out simultaneously, further improving data transmission efficiency.

[0088] In a possible implementation, after writing the data block into the writable space of the data domain memory, the transmission module is further configured to:

[0089] Update at least one of the following transmission control information in the control domain memory:

[0090] The write pointer position, the data block index of the data block, the size of the data sent to the second computing device, and the check information of the data block.

[0091] In the above solution, the transmission control information can be updated so that the second computing device can read the target data according to the transmission control information.

[0092] In a possible implementation, before writing the target data into the data domain memory, the transmission module is further configured to:

[0093] Do at least one of the following:

[0094] updating a memory identifier in the transmission control information; or,

[0095] A transmission mode is updated in the transmission control information, where the transmission mode is a sending mode or a receiving mode.

[0096] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0097] In a possible implementation, the determining module is further configured to:

[0098] The memory capacity is determined according to the data size of the target data, and the memory capacity is greater than or equal to the size of the target data.

[0099] In the above solution, the memory capacity can be determined according to the data size of the target data, thereby achieving the purpose of determining the memory capacity of the target memory.

[0100] In a sixth aspect, an embodiment of the present application provides a data transmission device, which is applied to a second computing device. The device includes a sending module, a receiving module, and a reading module, wherein:

[0101] The sending module is used to send a data reading request to the management device, wherein the data reading request includes a second constraint identifier, and the second constraint identifier is used to match the second computing device with the first computing device;

[0102] The receiving module is used to receive memory information of the target memory sent by the management device, the memory information including the memory location and memory capacity of the target memory, the target memory including a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store data written by the first computing device;

[0103] The reading module is configured to read, in the data domain memory, target data stored in the data domain memory by the first computing device according to the transmission control information.

[0104] In the above scheme, a data read request including a second constraint identifier can be sent to a management device; memory information of the target memory sent by the management device can be received; and target data stored in the data domain memory of the first computing device can be read in the data domain memory based on the transmission control information. In the above method, the target data can be transferred between the first program of the first computing device and the second program of the second computing device via the target memory. The data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0105] In a possible implementation, the target data includes multiple data blocks; the reading module is specifically configured to:

[0106] determining a read pointer position and a write pointer position in the transmission control information;

[0107] Determining whether there is a readable data block in the data domain memory according to the read pointer position and the write pointer position;

[0108] When it is determined that a readable data block exists in the data domain memory, the data block is read from the data domain memory.

[0109] In the above solution, the target data can be read from the data domain memory in units of data blocks. In this way, the write operation of the first program of the first computing device and the read operation of the second program of the second computing device can be performed simultaneously, further improving data transmission efficiency.

[0110] In a possible implementation, after reading the data block in the data domain memory, the reading module is further configured to:

[0111] Update at least one of the following transmission control information in the control domain memory:

[0112] The write pointer position, the size of the data read from the data domain memory, and the index of the data block that failed to be read.

[0113] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0114] In a possible implementation, after receiving the memory information of the target memory sent by the management device, the reading module is further configured to:

[0115] In the control domain memory, the receiving end status in the transmission control information is updated to a ready state.

[0116] In the above solution, the transmission control information can be updated so that the target data can be transmitted according to the transmission control information.

[0117] In a seventh aspect, an embodiment of the present application provides a management device, the management device including a memory and a processor;

[0118] Memory and processor coupling;

[0119] The memory is used to store program instructions;

[0120] The processor is used to call program instructions to enable the management device to execute the data transmission method involved in the first aspect and any possible implementation manner.

[0121] In an eighth aspect, an embodiment of the present application provides a computing device, the computing device including a memory and a processor;

[0122] Memory and processor coupling;

[0123] The memory is used to store program instructions;

[0124] The processor is used to call program instructions to enable the computing device to execute the data transmission method involved in the second aspect and any possible implementation manner.

[0125] In a ninth aspect, an embodiment of the present application provides a computing device, the computing device including a memory and a processor;

[0126] Memory and processor coupling;

[0127] The memory is used to store program instructions;

[0128] The processor is used to call program instructions to enable the computing device to execute the data transmission method involved in the third aspect and any possible implementation manner.

[0129] In the tenth aspect, an embodiment of the present application provides a computer-readable storage medium, which stores computer execution instructions. When the computer execution instructions are executed by an electronic device, they are used to implement the data transmission method involved in the first aspect and any possible implementation method.

[0130] In the eleventh aspect, an embodiment of the present application provides a computer-readable storage medium, which stores computer-executable instructions. When the computer-executable instructions are used by a first computing device, they are used to implement the data transmission method involved in the second aspect and any possible implementation method.

[0131] In the twelfth aspect, an embodiment of the present application provides a computer-readable storage medium, which stores computer execution instructions. When the computer execution instructions are executed by a third computing device, they are used to implement the data transmission method involved in the third aspect and any possible implementation method.

[0132] In a thirteenth aspect, an embodiment of the present application provides a computer program product, including a computer program, which, when executed by an electronic device, implements the data transmission method involved in the first aspect and any possible implementation method.

[0133] In a fourteenth aspect, an embodiment of the present application provides a computer program product, comprising a computer program, which, when executed by a first computing device, implements the data transmission method involved in the second aspect and any possible implementation manner.

[0134] In a fifteenth aspect, an embodiment of the present application provides a computer program product, comprising a computer program, which, when executed by a second computing device, implements the data transmission method involved in the third aspect and any possible implementation method. BRIEF DESCRIPTION OF THE DRAWINGS

[0135] In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the following briefly introduces the drawings required for use in the embodiments or the description of the prior art. Obviously, the drawings described below are only some embodiments of the embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative labor.

[0136] FIG1 is a schematic diagram of the architecture of a computer cluster provided in an embodiment of the present application;

[0137] FIG2 is a schematic diagram of the connection of computing devices in a cluster provided by an embodiment of the present application;

[0138] FIG3 is a schematic diagram of the architecture of another computer cluster provided in an embodiment of the present application;

[0139] FIG4 is a schematic diagram of the speed of reading and writing data from a memory device based on the CXL protocol provided by an embodiment of the present application;

[0140] FIG5 is a flow chart of a data transmission method provided in an embodiment of the present application;

[0141] FIG6A is a schematic diagram of the location of a target memory provided by an embodiment of the present application;

[0142] FIG6B is a schematic diagram of another target memory location provided by an embodiment of the present application;

[0143] FIG6C is a schematic diagram of the location of another target memory provided in an embodiment of the present application;

[0144] FIG7 is a schematic flow chart of another data transmission method provided in an embodiment of the present application;

[0145] FIG8 is a schematic diagram of a target memory provided in an embodiment of the present application;

[0146] FIG9 is a schematic diagram of another target memory provided by an embodiment of the present application;

[0147] FIG10 is a schematic diagram of data reading and writing provided in an embodiment of the present application;

[0148] FIG11 is a flow chart of another data transmission method provided in an embodiment of the present application;

[0149] FIG12 is a schematic flow chart of another data transmission method provided in an embodiment of the present application;

[0150] FIG13A is a schematic diagram of a flow chart of another data transmission method provided in an embodiment of the present application;

[0151] FIG13B is a schematic diagram of a flow chart of another data transmission method provided in an embodiment of the present application;

[0152] FIG14 is a schematic flow chart of another data transmission method provided in an embodiment of the present application;

[0153] FIG15 is a schematic structural diagram of a data transmission device provided in an embodiment of the present application;

[0154] FIG16 is a schematic structural diagram of another data transmission device provided in an embodiment of the present application;

[0155] FIG17 is a schematic structural diagram of another data transmission device provided in an embodiment of the present application;

[0156] FIG18 is a schematic diagram of the structure of a management device provided in an embodiment of the present application;

[0157] FIG19 is a schematic structural diagram of a computing device provided in an embodiment of the present application. DETAILED DESCRIPTION

[0158] Exemplary embodiments are described in detail herein, with examples illustrated in the accompanying drawings. In the following description, when referring to the drawings, identical numbers in different figures represent identical or similar elements, unless otherwise indicated. The embodiments described in the following exemplary embodiments are not intended to represent all possible implementations consistent with the present invention. Rather, they are merely examples of apparatuses and methods consistent with certain aspects of the present invention, as detailed in the appended claims.

[0159] To facilitate understanding, the technical terms involved in the embodiments of this application are first explained.

[0160] Compute Express Link (CXL) technology: An open standard for high-speed, high-capacity central processing unit (CPU)-to-device and CPU-to-memory connections. CXL technology is designed for high-performance data center computers.

[0161] Single logical device (SLD): A CXL device with only one logical device (LD).

[0162] Multi-logical device (MLD): A CXL device that contains multiple logical devices. MLD is a Type 3 pooling component in the CXL protocol.

[0163] Multi-headed logical device (MH-SLD): An SLD with multiple ports. An MH-SLD can simultaneously connect to multiple devices through its multiple ports. These devices can be computing devices or CXL switches.

[0164] Fabric manager (FM): An independent module used to uniformly identify and manage all CXL memory devices in a cluster. FM can allocate memory space for CXL memory devices and provide the ability to modify the ownership of memory space for CXL memory devices. FM can interact with the local CXL space management daemon (LMD) on the computing device to allocate memory space for CXL memory devices for the computing device or to reclaim memory space for CXL memory devices corresponding to the computing device. FM can exist in various forms. For example, FM can be software running on the baseboard management controller (BMC) system of the computing device, software running on the operating system (OS) of the computing device, or embedded firmware in the CXL switching device. Among them, the CXL switching device can be, for example, a CXL switch, and the CXL switch can include a CXL switch chip.

[0165] LMD: A user-mode program running on a computing device. LMDs can be started when the computing device boots up. LMDs can request memory space from the FM for CXL memory devices and manage the requested memory space locally. LMDs can provide access to and use of memory space to applications on the computing device, and can also convert memory space into the operating system's non-uniform memory access (NUMA) memory space for management by the operating system kernel.

[0166] Virtual logical device (VLD): The memory space of a logical device can be divided into multiple memory space segments. FM manages each memory space segment as a VLD. Each VLD can have a corresponding VLD identity document (ID). FM can manage VLD segments by numbering them based on the VLD ID.

[0167] The application scenarios involved in the embodiments of the present application are described below with reference to FIG1 .

[0168] Figure 1 is a schematic diagram of the architecture of a computer cluster provided in an embodiment of the present application. As shown in Figure 1, the computer cluster may include multiple computing devices, such as computing device 1, computing device 2, computing device 3, and computing device 4. Computing device 1, computing device 2, computing device 3, and computing device 4 may be connected via wired or wireless connections.

[0169] Any computing device in a computer cluster can perform data transmission with other computing devices. For example, computing device 1 can perform data transmission with computing device 2, computing device 3, or computing device 4.

[0170] The data may be data generated when a user application deployed on the computing device is running.

[0171] The present application embodiment does not limit the function of the computer cluster. For example, the computer cluster can be an AI training cluster, or it can also be a cluster with other functions.

[0172] The computing device may be an electronic device capable of performing data read and write operations. For example, the computing device may be a server, a laptop computer, a desktop computer, a tablet computer, a single-chip microcomputer, or an artificial intelligence device. The server may be, for example, a graphics processing unit (GPU) server or an AI server.

[0173] Currently, data can be transmitted between different computing devices in a computer cluster via a network, which can be the traditional Internet or a high-speed network (InfiniBand, IB).

[0174] As shown in Figure 2, Figure 2 is a schematic diagram of the connection of computing devices in a cluster provided by an embodiment of the present application. Referring to Figure 2, the computer cluster may include computing device 1, computing device 2, computing device 3, computing device 4, and a network link. The network link can be a traditional Internet link or an IB network link.

[0175] Computing device 1, computing device 2, computing device 3, and computing device 4 may all be connected to a network link. In other words, computing device 1, computing device 2, computing device 3, and computing device 4 may be connected via a network link.

[0176] For any computing device in a computer cluster, the computing device can transmit data with other computing devices via a network link. For example, computing device 1 can transmit data to computing device 2, computing device 3, or computing device 4 via a network link.

[0177] However, during the above data transmission process, if the data transmitted between computing devices is large, insufficient network bandwidth resources will affect the data transmission speed, thereby resulting in low data transmission efficiency.

[0178] In view of this, embodiments of the present application provide a computer cluster and a data transmission method applied to the computer cluster to solve the problem of low data transmission efficiency between computing devices.

[0179] The following describes the architecture of a computer cluster provided in an embodiment of the present application in conjunction with Figure 3. Figure 3 is a schematic diagram of the architecture of another computer cluster provided in an embodiment of the present application. Referring to Figure 3, the computer cluster may include a management device, computing device 1, computing device 2, computing device 3, ..., and computing device N, a storage device, and a CXL link. N is an integer greater than or equal to 2. The number of CXL memory devices can be one or more, and this embodiment does not impose any restrictions on this.

[0180] Each computing device, management device, and storage device may be connected to a CXL link. In other words, each computing device, management device, and storage device may be connected via a CXL link.

[0181] The computer cluster may be a computer cluster that needs to transmit large amounts of data. For example, the computer cluster may be an AI training cluster, a distributed database, or other types of clusters.

[0182] The computing device may be a server that supports the CXL protocol, for example, the server may be a GPU server or an AI server, etc.; or, the computing device may be an electronic device that supports the CXL protocol and has computer properties, for example, the electronic device may be a field programmable gate array (FPGA), a minicomputer, or a microcomputer, etc.

[0183] In one implementation, the CXL link may be one or more CXL switching devices.

[0184] A CXL switch device may include one or more device interfaces and / or one or more storage device interfaces. For each device interface, the CXL switch device can be connected to a computing device or a CXL switch device via the device interface. For each storage device interface, the CXL switch device can be connected to a storage device via the storage device interface.

[0185] If the CXL link is a CXL switching device, the storage device can be an SLD or MLD.

[0186] In one embodiment, the CXL link is a multi-head expansion chip that includes multiple device interfaces, each of which connects to a computing device. If the CXL link is a multi-head expansion chip, the storage device can be a memory stick or dynamic random access memory (DRAM). The storage device and the multi-head expansion chip form an MH-SLD.

[0187] The management device may be an electronic device running FM. For example, the management device may be an ARM (Advanced RISC (Reduced Instruction Set Computer) Machine) processor, a baseboard management controller (BMC), or other processor on which FM runs.

[0188] In one example, the management device may be independent of the computing device and the storage device. As shown in FIG3 , the management device may be an electronic device independent of the computing device and the storage device.

[0189] In another example, the FM can also run on any computing device, any storage device, or any CXL switch device in the computer cluster. If the FM runs on any computing device, the computing device can be the management device. If the FM runs on any storage device, the storage device can be the management device. If the FM runs on any CXL switch device, the CXL switch device can be the management device.

[0190] It should be noted that the embodiment of the present application does not limit the specific operating location of the FM. Figure 3 is only an example of the management device and does not constitute a limitation on the management device.

[0191] In the aforementioned computer cluster, a program in any one computing device can transfer data with programs in other computing devices, or two programs in the same computing device can transfer data with each other. For any two programs that need to transfer data, the management device can allocate memory to the two programs in the storage device. The allocated memory can serve as shared memory for the two programs. In other words, both programs can access the allocated memory. One of the two programs can write data to the allocated memory, and the other of the two programs can read data from the allocated memory. In this way, the two programs can transfer data through the allocated memory. For larger data, the data transfer process is not limited by network bandwidth resources, thereby improving data transfer efficiency.

[0192] Furthermore, computing devices can write and read data from memory devices using the CXL protocol at relatively high speeds. Figure 4 illustrates a schematic diagram of the speed of reading and writing data from memory devices using the CXL protocol, as provided by an embodiment of the present application. Referring to Figure 4 , the horizontal axis of Figure 4 represents the data operation mode, which can be either read or write; the vertical axis of Figure 4 represents the data operation speed.

[0193] As shown in Figure 4, the CXL protocol can read data from a memory device at a speed of 23.8 GB / s, and write data at a speed of 12 GB / s. Currently, the speed of reading and writing data over a network is approximately 3 GB / s. This shows that the speed of reading and writing data from a memory device over the CXL protocol is much higher than that over a network, further improving data transmission efficiency.

[0194] It should be noted that Figure 4 only illustrates the minimum achievable read and write speeds when reading and writing data from a memory device using the CXL protocol. In actual implementation, the speeds of reading and writing data from a memory device using the CXL protocol can be much higher. Figure 4 does not limit the speeds of reading and writing data from a memory device using the CXL protocol.

[0195] The following specific embodiments are used to describe the technical solutions of the embodiments of the present application in detail. The following specific embodiments can be combined with each other, and the same or similar concepts or processes may not be described in detail in some embodiments.

[0196] FIG5 is a flow chart of a data transmission method provided in an embodiment of the present application. The method may be performed by a first computing device or a processing chip disposed in the first computing device. The first computing device may be any computing device in the computer cluster described in any of the above embodiments. The following description will be based on the example of the first computing device being the performing entity. Referring to FIG5 , the method may include:

[0197] S501: Determine target data.

[0198] Specifically, a first program of a first computing device determines the target data, and the first program is deployed on the first computing device. The first program may be a program included in the target application.

[0199] The target application may be a user application (APP) for implementing one or more tasks.

[0200] A portion of the target application (i.e., the first program) is deployed on a first computing device, and another portion of the target application (hereinafter referred to as the second program) is deployed on a second computing device. The first program and the second program can be used to complete specific tasks of the target application (one or more tasks that can be implemented by the target application include the specific task). The first computing device and the second computing device can be the same computing device, or they can be different computing devices.

[0201] The target data may be data generated when the first program is running.

[0202] In this embodiment, the first program can transmit target data to the second program. That is, the first program on the first computing device can transmit target data to the second program on the second computing device. The first computing device and the second computing device can be the same computing device, or the first computing device and the second computing device can be different computing devices.

[0203] The first computing device may be any computing device in the computer cluster shown in any of the above embodiments.

[0204] S502: Send a memory allocation request to a management device, where the memory allocation request includes a memory capacity of a target memory and a first constraint identifier.

[0205] The management device may be a management device in the computer cluster shown in any of the above embodiments.

[0206] The memory allocation request may be used to request the management device to allocate target memory for the first computing device. Specifically, the memory allocation request may be used to request the management device to allocate target memory for the first program of the first computing device.

[0207] The first constraint identifier may be a specific string corresponding to a specific task of the target application. The first constraint identifier may be used to match the first computing device with the second computing device.

[0208] In this embodiment, during the development phase of the target application, a developer may specify a specific string for a specific task of the target application; alternatively, a first program of the first computing device may generate a specific string for a specific task of the target application based on a preset rule. For example, the specific string may be a token, key, or topic corresponding to the specific task of the target application.

[0209] In this embodiment, the first program of the first computing device can determine the target data, determine the target memory capacity based on the size of the target data, and send an initial memory allocation request to the first LMD of the first computing device. The initial memory allocation request may include the memory capacity of the target memory and the first constraint identifier. Accordingly, the first LMD of the first computing device can receive the initial memory allocation request sent by the first program of the first computing device. Based on the initial memory allocation request, the first LMD of the first computing device can send a memory allocation request to the management device to request the management device to allocate the target memory to the first program of the first computing device according to the memory allocation request.

[0210] Optionally, in other embodiments, the first program of the first computing device may determine the data size of the target data and send an initial memory allocation request to the first LMD of the first computing device. The initial memory allocation request may include the data size of the target data and a first constraint identifier. Based on the initial memory allocation request, the first LMD of the first computing device may send a memory allocation request to the management device, where the memory allocation request may include the data size of the target data and the first constraint identifier. The management device may determine the target memory capacity based on the data size of the target data.

[0211] The first LMD may be an LMD running on the first computing device.

[0212] S503: Receive a memory allocation response sent by the management device. The memory allocation response includes memory information of a target memory. The target memory includes a control domain memory and a data domain memory.

[0213] The target memory may be a storage space on a storage device in the computer cluster shown in any of the above embodiments.

[0214] The control domain memory is used to store transmission control information.

[0215] The transmission control information may include the status of the first computing device and the status of the second computing device. For example, the status of the first computing device may be in the ready state, and the status of the second computing device may also be in the ready state. If the status of the first computing device is in the ready state, it can indicate that the first program is ready for data transmission.

[0216] The data domain memory is used to store target data.

[0217] The memory information of the target memory may include the address of the control domain memory and the address of the data domain memory.

[0218] In this embodiment, after receiving the memory allocation request, the management device may allocate target memory to the first computing device according to the memory allocation request, and may send a memory allocation response to the first computing device.

[0219] The management device may run FM, and the management device may send a memory allocation response to the first computing device through FM.

[0220] Specifically, the management device may send a memory allocation response to the first LMD of the first computing device via FM. The first LMD of the first computing device may send the control domain memory address and the data domain memory address included in the memory allocation response to the first program of the first computing device.

[0221] It should be noted that the address of the control domain memory included in the memory allocation response may be the physical address of the control domain memory in the storage device; the address of the data domain memory included in the memory allocation response may be the physical address of the data domain memory in the storage device.

[0222] Optionally, if the first computing device cannot identify the physical address of the memory in the storage device, the memory allocation response may further include a first address mapping relationship. The first address mapping relationship may be used to map the physical address of the memory in the storage device to an address that the first computing device can identify.

[0223] In this embodiment, if the memory allocation response includes a first address mapping relationship, after the first LMD receives the memory allocation response, it can convert the address of the control domain memory into a control domain memory address that can be recognized by the first computing device, and convert the address of the data domain memory into a data domain memory address that can be recognized by the first computing device based on the first address mapping relationship, the address of the control domain memory, and the address of the data domain memory, and can send the converted control domain memory address and data domain memory address to the first program.

[0224] In this embodiment, the target memory may be a storage space on a storage device, or the target memory may be a storage space on multiple storage devices. For the target memory on any storage device, the target memory may be located in the same VLD, or in different VLDs.

[0225] Specifically, the target memory may be storage space on one or more memories, storage space on one or more SLDs, or storage space on one or more MLDs.

[0226] The location of the target memory is described below with reference to FIG. 6A-6C .

[0227] FIG6A is a schematic diagram of the location of a target memory according to an embodiment of the present application. Referring to FIG6A , computing device 1, computing device 2, computing device 3, ..., and computing device N can be connected to the SLD via a CXL switch device.

[0228] The target memory can be included in the SLD. In other words, the target memory can be located in an SLD.

[0229] Optionally, the target memory may also be located in multiple SLDs, which is not limited in this embodiment.

[0230] FIG6B is a schematic diagram of another target memory location according to an embodiment of the present application. Referring to FIG6B , computing device 1, computing device 2, computing device 3, ..., and computing device N can be connected to the MLD via a CXL switch device.

[0231] The target memory can be included in an MLD. In other words, the target memory can be located in an MLD.

[0232] Optionally, the target memory may also be located in multiple MLDs, which is not limited in this embodiment.

[0233] FIG6C is a schematic diagram of another target memory location according to an embodiment of the present application. Referring to FIG6C , computing device 1, computing device 2, computing device 3, ..., and computing device N can be connected to the SLD and MLD respectively through a CXL switch device.

[0234] The target memory can be included in the SLD or MLD. In other words, the target memory can be located in both the SLD and MLD.

[0235] Optionally, the target memory may also be located in multiple SLDs and multiple MLDs at the same time, which is not limited in this embodiment.

[0236] S504: Transmit the target data to the second computing device through the data domain memory according to the transmission control information in the control domain memory.

[0237] Specifically, the first program of the first computing device may transmit target data to the second program of the second computing device through the data domain memory according to the transmission control information in the control domain memory.

[0238] Transmission control information includes the sending end status and the receiving end status.

[0239] The sending state may be the state of the data sending end device. The data sending end device may write the sending state into the control domain memory. For example, the sending state may be a ready state.

[0240] In this embodiment, the originating state may be a state of the first computing device. The first computing device may write the originating state into the control domain memory.

[0241] The receiving end status may be the status of the data receiving end device. The data receiving end device may write the receiving end status to the control domain memory. For example, the receiving end status may be a ready state.

[0242] In this embodiment, the receiving end state may be a state of the second computing device. The second computing device may write the receiving end state into the control domain memory.

[0243] In this embodiment, after the management device allocates the target memory, the first computing device may update the sending end state to the ready state in the control domain memory, and the second computing device may update the receiving end state to the ready state in the control domain memory.

[0244] If the sending state in the control domain memory is in the ready state and the receiving state is in the ready state, the first program on the first computing device can transfer the target data to the second program on the second computing device through the data domain memory. In other words, the first program running on the first computing device can write the target data to the data domain memory, and the second program running on the second computing device can read the target data from the data domain memory, thereby achieving the purpose of transferring the target data.

[0245] In the data transmission method provided in this embodiment, a first computing device can determine target data; send a memory allocation request to a management device; receive a memory allocation response from the management device, the memory allocation response including memory information of the target memory; and transmit the target data to a second computing device via data domain memory based on transmission control information in control domain memory. In this method, a first program running on the first computing device can transmit the target data to a second program running on the second computing device via the target memory. The data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0246] Based on any of the above embodiments, the data transmission method provided in the embodiment of the present application is further described below in conjunction with FIG. 7 .

[0247] FIG7 is a flow chart of another data transmission method provided in an embodiment of the present application. The execution subject of this method may be a first computing device or a processing chip provided in the first computing device. The first computing device may be any computing device in the computer cluster described in any of the above embodiments. The following description will only take the execution subject as the first computing device as an example. Referring to FIG7, the method may include:

[0248] S701: Determine target data.

[0249] It should be noted that the specific implementation of S701 can be found in S501 and will not be repeated here.

[0250] S702: Determine the memory capacity of the target memory according to the data size of the target data.

[0251] Specifically, the first program of the first computing device determines the memory capacity according to the data size of the target data.

[0252] The memory capacity is greater than or equal to the data size.

[0253] The target memory includes the control domain memory and the data domain memory. That is, the memory capacity can be the sum of the control domain memory capacity and the data domain memory capacity.

[0254] It should be noted that the control domain memory capacity may be a preset capacity, and the first program of the first computing device may determine the sum of the preset capacity and the data size of the target data as the memory capacity.

[0255] The memory capacity is described below with reference to FIG8 .

[0256] FIG8 is a schematic diagram of a target memory provided by an embodiment of the present application. Referring to FIG8 , the target memory may include a control domain memory and a data domain memory.

[0257] As shown in FIG8 , the memory capacity of the target memory may be the sum of the memory capacity of the control domain and the memory capacity of the data domain.

[0258] S703: Send a memory allocation request to the management device, where the memory allocation request includes the memory capacity of the target memory and a first constraint identifier.

[0259] S704: Receive a memory allocation response sent by the management device. The memory allocation response includes memory information of the target memory. The target memory includes control domain memory and data domain memory.

[0260] It should be noted that the specific implementation of S703-S704 can be found in S502-S503 and will not be repeated here.

[0261] S705: Update the originating state to the ready state.

[0262] Specifically, the first program of the first computing device updates the origination state to the ready state.

[0263] In this embodiment, after the first program receives the address of the control domain memory and the address of the data domain memory sent by the first LMD, the first program can determine the control domain memory based on the address of the control domain memory, and can update the sending status to a ready status in the control domain memory to indicate that the first program of the first computing device is ready and can be used to send target data.

[0264] It should be noted that the control domain memory may include the transmitting-end control domain memory and the receiving-end control domain memory. Transmission control information may include transmitting-end transmission control information and receiving-end transmission control information. A data transmitting device may write the transmitting-end transmission control information into the transmitting-end control domain memory, and a data receiving device may write the receiving-end transmission control information into the receiving-end control domain memory.

[0265] In this embodiment, the first program of the first computing device may write the originating end transmission control information into the originating end control domain memory. For example, the originating end control information may include the originating end status.

[0266] 9 , the transmitting end control domain memory and the receiving end control domain memory are described below.

[0267] Figure 9 is a schematic diagram of another target memory provided by an embodiment of the present application. Referring to Figure 9, the target memory may include a control domain memory and a data domain memory. The control domain memory may include a sending end control domain memory and a receiving end control domain memory.

[0268] In this embodiment, the transmission control information may further include a memory identifier, a transmission mode, etc. The memory identifier may be an address of a data domain memory, and the transmission mode may be a sending mode or a receiving mode.

[0269] The transmission mode may be used to characterize the transmission mode of the first program or the transmission mode of the second program. For example, the transmission mode of the first program may be a sending mode, and the transmission mode of the second program may be a receiving mode.

[0270] Before the first program updates the origination state to the ready state, it may further perform at least one of the following operations:

[0271] Updating the memory flag in the transmission control information; or,

[0272] The transmission mode is updated in the transmission control information, where the transmission mode is a sending mode or a receiving mode.

[0273] Specifically, before the first program updates the originating state to the ready state, it may also update the memory identifier in the originating control domain memory to the address of the data domain memory and update the transmission mode in the originating control domain memory to the sending mode.

[0274] Optionally, the transmission control information may also include heartbeat information. Further, the transmission control information at the transmitting end may include the heartbeat information of the data transmitting end device, and the transmission control information at the receiving end may include the heartbeat information of the data receiving end device.

[0275] In this embodiment, the first program can update the heartbeat information of the first computing device in the memory of the transmitting end control domain at fixed time intervals; the second program can update the heartbeat information of the second computing device in the memory of the receiving end control domain at fixed time intervals.

[0276] The following describes the transmission control information of the originating end written into the memory of the control domain of the originating end by the first program in conjunction with Table 1.

[0277] Table 1

[0278] As shown in Table 1, the first program can update the most recent update time of the heartbeat information recorded by the first computing device in the originating control domain memory at fixed time intervals to indicate that the first computing device is operating normally. The first program can update the memory identifier in the originating control domain memory to the address of the data domain memory to indicate that the target data can be transmitted through the data domain memory. The first program can update the transmission mode in the originating control domain memory to the sending mode to indicate that the first program is used to send the target data. The first program can update the originating status in the originating control domain memory to the ready state to indicate that the first program is ready and can be used to send the target data.

[0279] It should be noted that Table 1 is only an example of the transmission control information of the transmitting end and does not constitute a limitation on the transmission control information of the transmitting end. The transmission control information of the transmitting end may also include more or less information.

[0280] S706: When it is determined that the receiving end state in the control domain memory is in the ready state, write the target data into the data domain memory.

[0281] Specifically, when the first program of the first computing device determines that the receiving terminal status in the control domain memory is in the ready state, the first program of the first computing device may write the target data into the data domain memory.

[0282] In this embodiment, the second program of the second computing device can write the receiving end transmission control information into the receiving end control domain memory. For example, the receiving end control information can include the receiving end status.

[0283] If the second program of the second computing device updates the receiving terminal status to the ready state in the receiving terminal control domain memory, it means that the second program of the second computing device is ready and can be used to read the target data.

[0284] It should be noted that the target memory may be shared memory between a first program on the first computing device and a second program on the second computing device. If the second program on the second computing device updates the receiving terminal status to a ready state in the receiving terminal control domain memory, the first program on the first computing device may determine that the receiving terminal status is ready by accessing the receiving terminal control domain memory.

[0285] In this embodiment, the first program on the first computing device can divide the target data into multiple data blocks of a preset size and write the target data to the data domain memory using multiple write operations in units of data blocks. Correspondingly, the second program on the second computing device can read the target data from the data domain memory using multiple read operations in units of data blocks. In this way, the write operation of the first program on the first computing device and the read operation of the second program on the second computing device can be performed simultaneously, further improving data transmission efficiency.

[0286] In the following, the target data transmission process is described with reference to FIG10 , taking the data domain memory capacity as 1024 MB and the preset size as 256 MB as an example.

[0287] Figure 10 is a schematic diagram of data reading and writing provided by an embodiment of the present application. Referring to Figure 10 , assuming the target data size is 1024MB, the first program of the first computing device can divide the target data into four data blocks. For example, the four data blocks can be data block 1, data block 2, data block 3, and data block 4.

[0288] The first program of the first computing device can sequentially write data block 1, data block 2, data block 3, and data block 4 to the data domain memory. As shown in FIG10 , the first program of the first computing device can complete the write operation of data block 1 at time t1, can complete the write operation of data block 2 at time t2, can complete the write operation of data block 3 at time t3, and can complete the write operation of data block 4 at time t4.

[0289] The second program of the second computing device can sequentially read data block 1, data block 2, data block 3, and data block 4 from the data domain memory. As shown in FIG10 , the second program of the second computing device can start reading data block 1 at time t1, can start reading data block 2 at time t2, can start reading data block 3 at time t3, and can start reading data block 4 at time t4.

[0290] As shown in Figure 10, while the first program on the first computing device is writing a data block to the data domain memory, the second program on the second computing device can also read the data block from the data domain memory. This allows the second program on the second computing device to read the target data without having to wait for the first program on the first computing device to finish writing the target data. Instead, the second program on the second computing device can read the target data while the first program on the first computing device is writing, further improving data transfer efficiency.

[0291] In this embodiment, the first program of the first computing device writes each data block into the data domain memory in the same manner. Below, taking any data block as an example, the process of the first program of the first computing device writing a data block into the data domain memory is described.

[0292] For any data block, the first program of the first computing device can determine the read pointer position and the write pointer position in the transmission control information; based on the read pointer position and the write pointer position, determine whether there is writable space in the data domain memory; when it is determined that there is writable space in the data domain memory, write the data block in the writable space of the data domain memory.

[0293] In this embodiment, the data domain memory can be divided into multiple memory spaces according to a preset size, and each memory space can be used to store a data block. The multiple memory spaces can be sorted to obtain a first order. A first program on a first computing device can sequentially write data blocks to the multiple memory spaces according to the first order, and a second program on a second computing device can sequentially read data blocks from the multiple memory spaces according to the first order.

[0294] The write pointer position can be used to represent the position of the storage space where the first program of the first computing device completes the write operation. For example, if the first program of the first computing device has not started writing data to the data domain memory, the write pointer position may be 0; if the first program of the first computing device has completed the write operation to the first storage space, the write pointer position may be 1; if the first program of the first computing device has completed the write operation to the second storage space, the write pointer position may be 2; if the first program of the first computing device has completed the write operation to the third storage space, the write pointer position may be 3; and if the first program of the first computing device has completed the write operation to the fourth storage space, the write pointer position may be 4.

[0295] The read pointer position can be used to indicate the location of the storage space where the second program of the second computing device completes the read operation. For example, if the second program of the second computing device has not yet started reading data from the data domain memory, the read pointer position may be 0; if the second program of the second computing device has completed the read operation on the first storage space, the read pointer position may be 1; if the second program of the second computing device has completed the read operation on the second storage space, the read pointer position may be 2; if the second program of the second computing device has completed the read operation on the third storage space, the read pointer position may be 3; and if the second program of the second computing device has completed the read operation on the fourth storage space, the read pointer position may be 4.

[0296] It should be noted that the write pointer position can be stored in the memory of the transmitting end's control domain, and the first program of the first computing device can update the write pointer position. The read pointer position can be stored in the memory of the receiving end's control domain, and the second program of the second computing device can update the read pointer position. Specifically, the first program of the first computing device can update the write pointer position each time it writes a data block; and the second program of the second computing device can update the read pointer position each time it reads a data block.

[0297] Optionally, before writing the data block to the data domain memory, the first program of the first computing device may further verify the data block to obtain a checksum. The second program of the second computing device may then verify whether the read data block is incorrect based on the checksum. This embodiment does not limit the form of the checksum. For example, the checksum may be a cyclic redundancy check (CRC).

[0298] In this embodiment, after the first program of the first computing device writes the data block in the writable space of the data domain memory, it can also update at least one of the following transmission control information in the control domain memory: the write pointer position, the data block index of the data block, the size of the data sent to the second computing device, and the verification information of the data block.

[0299] The index of the data block may include a number of the data block. The second program of the second computing device may combine and process the multiple data blocks according to the data block indexes of the data blocks to obtain target data.

[0300] The verification information of the data block may include a verification code of the data block, etc.

[0301] In the data transmission method provided by this embodiment, the first computing device can determine the target data; can determine the target memory capacity based on the data size of the target data; can send a memory allocation request to the management device, the memory allocation request including the memory capacity of the target memory and a first constraint identifier; can receive a memory allocation response sent by the management device, the memory allocation response including memory information of the target memory; can update the sending end state to the ready-completed state; and can write the target data into the data domain memory when it is determined that the receiving end state in the control domain memory is the ready-completed state. In the above method, the first program of the first computing device can transmit the target data to the second program of the second computing device through the target memory, and the data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0302] Based on any of the above embodiments, the second computing device can read the target data from the target memory.

[0303] FIG11 is a flow chart of another data transmission method provided in an embodiment of the present application. The execution subject of this method can be a second computing device or a processing chip provided in the second computing device. The following description will only take the execution subject as an example of the second computing device. Referring to FIG11, the method may include:

[0304] S1101: Send a data reading request to a management device, where the data reading request includes a second constraint identifier.

[0305] The data read request may be used to request the management device to allocate a target memory for reading data to the second computing device. Specifically, the data read request may be used to request the management device to allocate a target memory for reading data to the second program of the second computing device.

[0306] The second constraint identifier may be a specific string corresponding to a specific task of the target application. The second constraint identifier may be used to match the second computing device with the first computing device.

[0307] In this embodiment, during the development phase of the target application, a developer may specify a specific string for a specific task of the target application; alternatively, a second program of the second computing device may generate a specific string for the specific task of the target application based on a preset rule. For example, the specific string may be a token, key, or topic corresponding to the specific task of the target application.

[0308] In this embodiment, the second program of the second computing device can determine the second constraint identifier based on the data read requirement and send an initial data read request to the second LMD of the second computing device. The initial data read request can include the second constraint identifier. Accordingly, the second LMD of the second computing device can receive the initial data read request sent by the second program of the second computing device. Based on the initial data read request, the second LMD of the second computing device can send a data read request to the management device to request the management device to allocate target memory for the second program of the second computing device according to the data read request.

[0309] The second LMD may be an LMD running on the second computing device.

[0310] The second computing device can be any computing device in the computer cluster described in any of the above embodiments. The second computing device and the first computing device can be the same computing device, or the second computing device and the first computing device can be different computing devices. If the second computing device and the first computing device are the same computing device, the first LMD and the second LMD can be the same LMD.

[0311] S1102: Receive memory information of a target memory sent by a management device. The target memory includes a control domain memory and a data domain memory. The control domain memory is used to store transmission control information.

[0312] The management device can compare the second constraint identifier sent by the second computing device with the first constraint identifier sent by the first computing device. If the second constraint identifier is the same as the first constraint identifier, the data to be read by the second program of the second computing device can be the target data written to the target memory by the first program of the first computing device. The management device can query the memory information of the target memory based on the second constraint identifier and send the memory information of the target memory to the second computing device.

[0313] The management device may send the memory information of the target memory to the second computing device through FM.

[0314] The memory information includes the memory location and memory capacity of the target memory.

[0315] The target memory includes a control domain memory and a data domain memory. The control domain memory is used to store transmission control information, and the data domain memory is used to store data written by the first computing device.

[0316] Specifically, the management device may send the target memory's memory information to the second LMD of the second computing device via FM. The second LMD of the second computing device may send the target memory's memory information to the second program of the second computing device. The second program of the second computing device may determine the target memory based on the memory location and memory capacity in the memory information.

[0317] It should be noted that the memory location of the target memory sent by the management device to the second computing device may be a physical address of the target memory in the storage device.

[0318] Optionally, if the second computing device cannot recognize the physical address of the memory in the storage device, the management device may further send a second address mapping relationship to the second computing device. The second address mapping relationship may be used to map the physical address of the memory in the storage device to an address recognizable by the second computing device.

[0319] In this embodiment, if the management device sends a second address mapping relationship to the second computing device, after the second LMD receives the second address mapping relationship and the memory location of the target memory, it can convert the memory location of the target memory into a memory location of the target memory that can be recognized by the second computing device based on the second address mapping relationship and the memory location of the target memory, and can send the converted memory location of the target memory to the second program so that the second program can determine the target memory based on the converted memory location of the target memory.

[0320] S1103. Read the target data stored in the data domain memory of the first computing device in the data domain memory according to the transmission control information.

[0321] The transmission control information may include a write pointer position, which may be used to indicate a location in the storage space where the first program of the first computing device completes a write operation.

[0322] The second program of the second computing device can determine whether there is a readable data block in the data domain memory based on the write pointer position, and can read the data block from the data domain memory when the write pointer position indicates that there is a readable data block in the data domain memory, so as to achieve the purpose of reading the target data.

[0323] In the data transmission method provided in this embodiment, a second computing device can send a data read request to a management device, the data read request including a second constraint identifier; receive memory information of a target memory sent by the management device; and read target data stored in the data domain memory of the first computing device based on the transmission control information. In this method, the target data can be transmitted between a first program of the first computing device and a second program of the second computing device via the target memory. The data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0324] Based on any of the above embodiments, the process of the second computing device reading target data from the target memory is further described below in conjunction with FIG. 12 .

[0325] FIG12 is a flow chart of another data transmission method provided in an embodiment of the present application. The execution subject of this method can be a second computing device or a processing chip provided in the second computing device. The following description will only take the execution subject as an example of the second computing device. Referring to FIG12, the method may include:

[0326] S1201: Send a data reading request to a management device, where the data reading request includes a second constraint identifier.

[0327] S1202: Receive memory information of a target memory sent by a management device. The target memory includes a control domain memory and a data domain memory. The control domain memory is used to store transmission control information.

[0328] It should be noted that the specific implementation of S1201-S1202 can be found in S1101-S1102 and will not be repeated here.

[0329] In this embodiment, after the second program of the second computing device determines the target memory, it may also update the receiving end status in the transmission control information to a ready state in the control domain memory.

[0330] Specifically, the second program of the second computing device may update the receiving terminal status to a ready state in the receiving terminal control domain memory to indicate that the second program of the second computing device is ready and can be used to receive target data.

[0331] Before the second program of the second computing device updates the receiving terminal status to the ready state, the second program of the second computing device may further perform at least one of the following operations:

[0332] Updating the memory flag in the transmission control information; or,

[0333] The transmission mode is updated in the transmission control information, where the transmission mode is a sending mode or a receiving mode.

[0334] Specifically, before the second program of the second computing device updates the receiving end status to the ready state, it can also update the memory identifier in the receiving end control domain memory to the address of the data domain memory, and can update the transmission mode in the receiving end control domain memory to the receiving mode.

[0335] The following describes the receiving end transmission control information written by the second program of the second computing device into the memory of the receiving end control domain in conjunction with Table 2.

[0336] Table 2

[0337] As shown in Table 2, the second program of the second computing device can update the latest update time of the heartbeat information recorded by the second computing device in the receiving end control domain memory at fixed time intervals to indicate that the second computing device is operating normally. The second program of the second computing device can update the memory identifier in the receiving end control domain memory to the address of the data domain memory to indicate that the target data can be transmitted through the data domain memory. The second program of the second computing device can update the transmission mode to the receiving mode in the receiving end control domain memory to indicate that the second program of the second computing device is used to receive the target data. The second program of the second computing device can update the receiving end status to the ready state in the receiving end control domain memory to indicate that the second program of the second computing device is ready and can be used to receive the target data.

[0338] It should be noted that Table 2 is only an example of the receiving end transmission control information and does not constitute a limitation on the receiving end transmission control information. The receiving end transmission control information may also include more or less information.

[0339] S1203: Determine the read pointer position and the write pointer position in the transmission control information.

[0340] The second program of the second computing device can access the sending end control domain memory and the receiving end control domain memory to determine the write pointer position according to the sending end transmission control information in the sending end control domain memory, and determine the read pointer position according to the receiving end transmission control information in the receiving end control domain memory.

[0341] S1204: Determine whether there is a readable data block in the data domain memory according to the read pointer position and the write pointer position.

[0342] In this embodiment, if the write pointer position is 0, or the write pointer position is the same as the read pointer position, the second program of the second computing device can determine that there is no readable data block in the data domain memory; otherwise, the second program of the second computing device can determine that there is a readable data block in the data domain memory.

[0343] S1205: When it is determined that a readable data block exists in the data domain memory, the data block is read from the data domain memory.

[0344] In this embodiment, the second computing device may read multiple data blocks from the data domain memory through the second program, and may combine and process the multiple data blocks according to indexes of the data blocks to obtain target data.

[0345] In this embodiment, after the second program of the second computing device reads the data block from the data domain memory, it may also update at least one of the following transmission control information in the control domain memory:

[0346] The read pointer position, the size of the data read from the data domain memory, and the index of the data block where the read failed.

[0347] After the second program of the second computing device updates the index of the data block that failed to be read, the first program of the first computing device may rewrite the data block that failed to be read into the data domain memory according to the index of the data block that failed to be read.

[0348] In the data transmission method provided by this embodiment, the second computing device can send a data read request to the management device, the data read request including a second constraint identifier, and can receive memory information of the target memory sent by the management device; can determine the read pointer position and the write pointer position in the transmission control information; can determine whether there is a readable data block in the data domain memory based on the read pointer position and the write pointer position; and can read the data block in the data domain memory through the second program when it is determined that there is a readable data block in the data domain memory. In the above method, the target data can be transmitted between the first program of the first computing device and the second program of the second computing device through the target memory, and the data transmission process is not limited by network bandwidth resources, thereby improving data transmission efficiency.

[0349] On the basis of any of the above embodiments, the method for the management device to determine the target memory according to the memory allocation request is described below with reference to FIG. 13A .

[0350] FIG13A is a flow chart of another data transmission method provided by an embodiment of the present application. The execution subject of this method can be a management device or a processing chip set in the management device. The following description only takes the execution subject as an example of a management device. Referring to FIG13A, the method may include:

[0351] S1301. Receive a memory allocation request sent by a first computing device, where the memory allocation request includes a memory capacity of a target memory and a first constraint identifier.

[0352] In this embodiment, the management device may receive the memory allocation request sent by the first computing device through FM.

[0353] The first constraint identifier is a specific string corresponding to a specific task of the target application, and the target memory is the memory allocated to the first program of the first computing device and the second program of the second computing device. The first program and the second program are used to complete the specific task of the target application.

[0354] It should be noted that, for the description of the first constraint identifier and the specific task of the target application, please refer to the embodiment of FIG5 , which will not be repeated here.

[0355] S1302. Allocate target memory to the first computing device according to the memory allocation request.

[0356] The target memory includes a control domain memory and a data domain memory; wherein the control domain memory is used to store transmission control information, and the data domain memory is used to store data sent by the first computing device to the second computing device, and the transmission control information is used to control the first computing device to transmit data to the second computing device through the data domain memory.

[0357] Specifically, the data domain memory is used to store data sent by the first program of the first computing device to the second program of the second computing device, and the transmission control information is used to control the first program of the first computing device to transmit data to the second program of the second computing device through the data domain memory.

[0358] The first computing device and the second computing device may be the same computing device, or the first computing device and the second computing device may be different computing devices.

[0359] In this embodiment, the memory allocation request may include the target memory capacity and the first constraint identifier. The management device may allocate the target memory to the first computing device from the remaining storage space of the storage device according to the target memory capacity.

[0360] Optionally, in other embodiments, the memory allocation request may include the data size of the target data. The management device may determine the memory capacity of the target memory based on the data size of the target data and a preset capacity; and may allocate the target memory to the first computing device from the remaining storage space of the storage device based on the memory capacity.

[0361] S1303: Send a memory allocation response to the first computing device and record the target correspondence, where the memory allocation response includes memory information of the target memory.

[0362] Correspondingly, the first computing device receives the memory allocation response sent by the management device.

[0363] In this embodiment, the management device may further store a correspondence between the first computing device, the first constraint identifier, and the memory information of the target memory.

[0364] The target correspondence is the correspondence between the first computing device, the memory information of the target memory, and the first constraint identifier. Of course, in some embodiments, the target correspondence can also be the correspondence between the first computing device, the second computing device, the memory information of the target memory, and the first constraint identifier.

[0365] S1304: Receive a data reading request sent by the second computing device, where the data reading request includes a second constraint identifier.

[0366] In this embodiment, if the second constraint identifier sent by the second computing device is the same as the first constraint identifier sent by the first computing device, the data to be read by the second program of the second computing device can be the target data written into the target memory by the first program of the first computing device.

[0367] S1305: When the second constraint identifier is the same as the first constraint identifier in the corresponding relationship, confirm that the corresponding relationship is the target corresponding relationship.

[0368] In this embodiment, the management device may allocate target memory for one or more first computing devices. For any first computing device, the management device may store a correspondence between the first computing device, the first constraint identifier, and memory information of the target memory.

[0369] During specific implementation, the management device may compare the second constraint identifier with the first constraint identifier in each corresponding relationship. For any corresponding relationship, if the second constraint identifier sent by the second computing device is the same as the first constraint identifier in the corresponding relationship, the corresponding relationship may be determined as the target corresponding relationship, and the memory information included in the target corresponding relationship may be determined as the memory information of the target memory.

[0370] S1306: Send the memory information of the target memory in the target correspondence to the second computing device.

[0371] In this embodiment, after determining the memory information of the target memory, the management device may send the memory information of the target memory to the second computing device, so that the second computing device may determine the target memory according to the memory information of the target memory.

[0372] Specifically, the management device may send the memory information of the target memory to the second LMD of the second computing device through FM.

[0373] In this embodiment, the management device may further store a correspondence between the first computing device, the second computing device, the first constraint identifier, and the memory information of the target memory.

[0374] Optionally, the management device may also receive a memory release request sent by the first computing device; and release the target memory according to the memory release request.

[0375] Specifically, after a first program on a first computing device completes data transmission to a second program on a second computing device via a target memory, the first program can send a memory release request to a management device. The management device can release the target memory based on the memory release request so that other programs can continue to use the target memory, thereby increasing the target memory usage.

[0376] When the management device releases the target memory, the corresponding relationship among the first computing device, the second computing device, the first constraint identifier and the memory information of the target memory may be deleted to achieve the purpose of releasing the target memory.

[0377] In the data transmission method provided by this embodiment, the management device can receive a memory allocation request sent by the first computing device, the memory allocation request includes a first constraint identifier; the target memory can be allocated to the first computing device according to the memory allocation request; a memory allocation response can be sent to the first computing device and the target correspondence relationship can be recorded, the memory allocation response includes the memory information of the target memory; the correspondence relationship can be confirmed as a target correspondence relationship when the second constraint identifier is the same as the first constraint identifier in the correspondence relationship; and the memory information of the target memory in the target correspondence relationship can be sent to the second computing device. In the above method, the management device can allocate target memory to the first computing device so that the first program of the first computing device can transmit target data to the second program of the second computing device through the target memory. Through the above method, the target data can be transmitted between the first program of the first computing device and the second program of the second computing device through the target memory, and the data transmission process is not limited by network bandwidth resources, thereby improving the data transmission efficiency.

[0378] In other embodiments, as shown in FIG13B , FIG13B is a flow chart of another data transmission method provided in an embodiment of the present application. The above method includes S1301, S1302, and S1303. For details, please refer to the detailed description of S1301, S1302, and S1303 above, which will not be repeated here.

[0379] Based on any of the above embodiments, the data transmission method provided in the embodiments of the present application is described below through specific examples.

[0380] FIG14 is a flow chart of another data transmission method provided in an embodiment of the present application. Referring to FIG14 , the method may include:

[0381] S1401, first computing device target data.

[0382] S1402. The first computing device determines the memory capacity of the target memory according to the data size of the target data.

[0383] S1403: The first computing device sends a memory allocation request to the management device. The memory allocation request includes the memory capacity of the target memory and a first constraint identifier.

[0384] It should be noted that the specific implementation of S1401-S1403 can be found in S701-S703 and will not be repeated here.

[0385] S1404: The management device allocates target memory to the first computing device according to the memory allocation request.

[0386] S1405. The management device sends a memory allocation response to the first computing device and records the target correspondence. The memory allocation response includes memory information of the target memory.

[0387] It should be noted that the specific implementation of S1404-S1405 can be found in S1302-S1303 and will not be repeated here.

[0388] S1406: The first computing device updates the origination state to a ready state.

[0389] S1407: The management device receives a data reading request sent by the second computing device, where the data reading request includes a second constraint identifier.

[0390] It should be noted that S1405-S1406 can be implemented before S1407, or S1405-S1406 can be implemented after S1407, or S1405-S1406 can be implemented simultaneously with S1407, which is not limited in this embodiment.

[0391] S1408: When the second constraint identifier is identical to the first constraint identifier in the correspondence, the management device confirms that the correspondence is the target correspondence.

[0392] S1409: The management device sends the memory information of the target memory in the target correspondence to the second computing device.

[0393] It should be noted that the specific implementation of S1407-S1409 can be found in S1304-S1306 and will not be repeated here.

[0394] S1410: The second computing device updates the receiving terminal status to a ready state.

[0395] S1411. The first computing device transmits target data to the second computing device through the data domain memory.

[0396] S1412: The first computing device sends a memory release request to the management device.

[0397] S1413. The management device releases the target memory according to the memory release request.

[0398] It should be noted that the specific implementation of S1412-S1413 can be found in S1306 and will not be repeated here.

[0399] Figure 15 is a schematic diagram of the structure of a data transmission device provided in an embodiment of the present application. The data transmission device 10 is applied to a management device, and the data transmission device 10 includes a receiving module 11, a distribution module 12 and a sending module 13, wherein:

[0400] The receiving module 11 is used to receive a memory allocation request sent by a first computing device, wherein the memory allocation request includes a memory capacity of a target memory and a first constraint identifier; the first constraint identifier is used to match the first computing device with a second computing device;

[0401] The allocation module 12 is configured to allocate target memory to the first computing device according to the memory allocation request, wherein the target memory includes a control domain memory and a data domain memory; wherein the control domain memory is used to store transmission control information, and the data domain memory is used to store data sent by the first computing device to the second computing device, and the transmission control information is used to indicate the status of the first computing device and the second computing device;

[0402] The sending module 13 is used to send a memory allocation response to the first computing device and record a target correspondence relationship, wherein the memory allocation response includes memory information of the target memory, and the target correspondence relationship is a correspondence relationship between the first computing device, the memory information of the target memory, and the first constraint identifier.

[0403] In one possible implementation,

[0404] The receiving module 11 is further configured to receive a data reading request sent by the second computing device, wherein the data reading request includes a second constraint identifier;

[0405] The allocation module 12 is further configured to, when the second constraint identifier is the same as the first constraint identifier in the corresponding relationship, confirm that the corresponding relationship is a target corresponding relationship;

[0406] The sending module 13 is further configured to send the memory information of the target memory in the target correspondence to the second computing device.

[0407] In one possible implementation, the first constraint identifier is a specific string corresponding to a specific task of the target application, the target memory is the memory allocated to the first program of the first computing device and the second program of the second computing device, and the first program and the second program are used to complete the specific task of the target application.

[0408] The data transmission device provided in this embodiment can be used to execute the data transmission method executed by the management device in the above method embodiment. Its implementation principle and technical effects are similar and will not be described in detail here.

[0409] Figure 16 is a schematic diagram of the structure of another data transmission device provided in an embodiment of the present application. The data transmission device 20 is applied to a first computing device, and the data transmission device 20 includes a determination module 21, a sending module 22, a receiving module 23 and a transmission module 24, wherein:

[0410] The determining module 21 is used to determine target data, where the target data is data to be sent to the second computing device;

[0411] The sending module 22 is used to send a memory allocation request to the management device, wherein the memory allocation request includes a memory capacity of a target memory and a first constraint identifier, and the first constraint identifier is used to match the first computing device and the second computing device;

[0412] The receiving module 23 is used to receive a memory allocation response sent by the management device, wherein the memory allocation response includes memory information of the target memory; the target memory includes a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store the target data;

[0413] The transmission module 24 is configured to transmit the target data to the second computing device through the data domain memory according to the transmission control information in the control domain memory.

[0414] In a possible implementation, the transmission control information includes a transmitting end state and a receiving end state; the transmission module 24 is specifically configured to:

[0415] Updating the originating state to a ready-to-complete state;

[0416] When it is determined that the receiving terminal state in the control domain memory is in the ready state, the target data is written into the data domain memory, and the second computing device is used to read the target data from the data domain memory.

[0417] In a possible implementation, the target data includes multiple data blocks; the transmission module 24 is specifically configured to:

[0418] For any data block, determining a read pointer position and a write pointer position in the transmission control information;

[0419] Determining whether there is writable space in the data domain memory according to the read pointer position and the write pointer position;

[0420] When it is determined that there is writable space in the data domain memory, the data block is written into the writable space in the data domain memory.

[0421] In a possible implementation, after writing the data block into the writable space of the data domain memory, the transmission module 24 is further configured to:

[0422] Update at least one of the following transmission control information in the control domain memory:

[0423] The write pointer position, the data block index of the data block, the size of the data sent to the second computing device, and the check information of the data block.

[0424] In a possible implementation, before writing the target data into the data domain memory, the transmission module 24 is further configured to:

[0425] Do at least one of the following:

[0426] updating a memory identifier in the transmission control information; or,

[0427] A transmission mode is updated in the transmission control information, where the transmission mode is a sending mode or a receiving mode.

[0428] In a possible implementation, the determining module 21 is further configured to:

[0429] The memory capacity is determined according to the data size of the target data, and the memory capacity is greater than or equal to the size of the target data.

[0430] The data transmission device provided in this embodiment can be used to execute the data transmission method executed by the first computing device in the above method embodiment. Its implementation principle and technical effects are similar and will not be described in detail here.

[0431] Figure 17 is a schematic diagram of the structure of another data transmission device provided in an embodiment of the present application. The data transmission device 30 is applied to the second computing device, and the data transmission device 30 includes a sending module 31, a receiving module 32 and a reading module 33, wherein:

[0432] The sending module 31 is used to send a data reading request to the management device, wherein the data reading request includes a second constraint identifier, and the second constraint identifier is used to match the second computing device with the first computing device;

[0433] The receiving module 32 is used to receive memory information of the target memory sent by the management device, the memory information including the memory location and memory capacity of the target memory, the target memory including a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store data written by the first computing device;

[0434] The reading module 33 is configured to read, in the data domain memory, target data stored by the first computing device in the data domain memory according to the transmission control information.

[0435] In a possible implementation, the target data includes multiple data blocks; the reading module 33 is specifically configured to:

[0436] determining a read pointer position and a write pointer position in the transmission control information;

[0437] Determining whether there is a readable data block in the data domain memory according to the read pointer position and the write pointer position;

[0438] When it is determined that a readable data block exists in the data domain memory, the data block is read from the data domain memory.

[0439] In a possible implementation, after reading the data block in the data domain memory, the reading module 33 is further configured to:

[0440] Update at least one of the following transmission control information in the control domain memory:

[0441] The write pointer position, the size of the data read from the data domain memory, and the index of the data block that failed to be read.

[0442] In a possible implementation, after receiving the memory information of the target memory sent by the management device, the reading module 33 is further configured to:

[0443] In the control domain memory, the receiving end status in the transmission control information is updated to a ready state.

[0444] The data transmission device provided in this embodiment can be used to execute the data transmission method executed by the second computing device in the above method embodiment. Its implementation principle and technical effects are similar and will not be described in detail here.

[0445] Figure 18 is a schematic diagram of the structure of a management device provided in an embodiment of the present application. As shown in Figure 18, management device 40 may include: a processor 41 and a memory 42, wherein processor 41 and memory 42 can communicate; illustratively, processor 41 and memory 42 communicate via a communication bus 43, memory 42 is used to store computer-executable instructions, and processor 41 is used to call the computer-executable instructions in the memory to execute the data transmission method described in any of the above method embodiments.

[0446] Optionally, the management device 40 may further include a communication interface, which may include a transmitter and / or a receiver.

[0447] Optionally, the processor may be a central processing unit (CPU), a graphics processing unit (GPU), other general-purpose processors, a digital signal processor (DSP), or an application-specific integrated circuit (ASIC). A general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of the present application may be directly implemented as being executed by a hardware processor, or may be implemented by a combination of hardware and software modules in the processor.

[0448] Figure 19 is a schematic diagram of the structure of a computing device provided in an embodiment of the present application. The computing device can be a first computing device, or a second computing device.

[0449] As shown in Figure 19, the computing device 50 may include: a processor 51 and a memory 52, wherein the processor 51 and the memory 52 can communicate; exemplarily, the processor 51 and the memory 52 communicate through a communication bus 53, the memory 52 is used to store computer execution instructions, and the processor 51 is used to call the computer execution instructions in the memory to execute the data transmission method shown in any of the above method embodiments.

[0450] Optionally, the computing device 50 may further include a communication interface, which may include a transmitter and / or a receiver.

[0451] Optionally, the processor may be a central processing unit (CPU), a graphics processing unit (GPU), other general-purpose processors, a digital signal processor (DSP), or an application-specific integrated circuit (ASIC). A general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of the present application may be directly implemented as being executed by a hardware processor, or may be implemented by a combination of hardware and software modules in the processor.

[0452] An embodiment of the present application provides a computer-readable storage medium having computer-executable instructions stored thereon; the computer-executable instructions are used to implement the data transmission method as described in any of the above embodiments.

[0453] An embodiment of the present application provides a computer program product, which includes a computer program. When the computer program is executed, it enables a computer to perform the above-mentioned data transmission method.

[0454] All or part of the steps of the above-mentioned method embodiments can be completed by hardware related to program instructions. The aforementioned program can be stored in a readable memory. When the program is executed, it performs the steps of the above-mentioned method embodiments; and the aforementioned memory (storage medium) includes: read-only memory (ROM), RAM, flash memory, hard disk, solid-state drive, magnetic tape, floppy disk, optical disc, and any combination thereof.

[0455] The present application embodiment is described with reference to the flow chart and / or block diagram of the method, device (system), and computer program product according to the embodiment of the present application. It should be understood that each process and / or box in the flow chart and / or block diagram and the combination of the process and / or box in the flow chart and / or block diagram can be realized by computer program instructions. These computer program instructions can be provided to the processing unit of a general-purpose computer, a special-purpose computer, an embedded processor or other programmable terminal device to produce a machine, so that the instruction executed by the processing unit of the computer or other programmable terminal device produces a device for realizing the function specified in one process or multiple processes and / or one box or multiple boxes of the flow chart.

[0456] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable terminal device to operate in a specific manner, so that the instructions stored in the computer-readable memory produce a manufactured product including an instruction device that implements the functions specified in one or more processes in the flowchart and / or one or more boxes in the block diagram.

[0457] These computer program instructions can also be loaded onto a computer or other programmable terminal device so that a series of operating steps are executed on the computer or other programmable device to produce a computer-implemented process, whereby the instructions executed on the computer or other programmable device provide steps for implementing the functions specified in one or more processes in the flowchart and / or one or more boxes in the block diagram.

[0458] Obviously, those skilled in the art may make various changes and modifications to the embodiments of the present application without departing from the spirit and scope of the embodiments of the present application. Thus, if these modifications and variations of the embodiments of the present application fall within the scope of the claims of the present application and their equivalents, the embodiments of the present application are intended to include such modifications and variations.

[0459] In the embodiments of the present application, the terms "include", "comprise" or any other variations thereof are intended to cover non-exclusive inclusion, so that a process, method, article or device comprising a series of elements includes not only those elements, but also other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of further restrictions, an element defined by the sentence "comprising a ..." does not exclude the presence of other identical elements in the process, method, article or device comprising the element. The term "or" and its variations may refer to "and / or". In the embodiments of the present application, the terms "first", "second", etc. are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence. In the embodiments of the present application, "multiple" refers to two or more. "And / or" describes the association relationship of associated objects, indicating that three relationships may exist. For example, A and / or B may represent: A exists alone, A and B exist at the same time, and B exists alone. The character " / " generally indicates that the objects associated before and after are in an "or" relationship.

[0460] Those skilled in the art will readily conceive of other embodiments of the present application after considering the invention disclosed in the specification and practice. The embodiments of the present application are intended to cover any variations, uses, or adaptations of the embodiments of the present application, which follow the general principles of the embodiments of the present application and include common knowledge or customary technical means in the art that are not disclosed in the embodiments of the present application.

Claims

1. A data transmission method, characterized in that: Applied to managing devices, the method includes: receiving a memory allocation request sent by a first computing device, the memory allocation request including a memory capacity of a target memory and a first constraint identifier; the first constraint identifier being used to match the first computing device with a second computing device; Allocate target memory for the first computing device according to the memory allocation request, the target memory including a control domain memory and a data domain memory; wherein the control domain memory is used to store transmission control information, and the data domain memory is used to store data sent by the first computing device to the second computing device, and the transmission control information is used to indicate the status of the first computing device and the second computing device; A memory allocation response is sent to the first computing device and a target correspondence is recorded, wherein the memory allocation response includes memory information of the target memory, and the target correspondence is a correspondence between the first computing device, the memory information of the target memory, and the first constraint identifier.

2. The method according to claim 1, characterized in that The method further comprises: receiving a data read request sent by the second computing device, wherein the data read request includes a second constraint identifier; When the second constraint identifier is identical to the first constraint identifier in the corresponding relationship, the corresponding relationship is confirmed to be a target corresponding relationship, and the memory information of the target memory in the target corresponding relationship is sent to the second computing device.

3. The method according to claim 1, characterized in that The first constraint identifier is a specific string corresponding to a specific task of the target application, and the target memory is the memory allocated to the first program of the first computing device and the second program of the second computing device. The first program and the second program are used to complete the specific task of the target application.

4. A data transmission method, characterized in that: Applied to a first computing device, the method includes: determining target data, where the target data is data to be sent to the second computing device; Sending a memory allocation request to a management device, the memory allocation request including a memory capacity of a target memory and a first constraint identifier, the first constraint identifier being used to match the first computing device with the second computing device; Receive a memory allocation response sent by the management device, the memory allocation response including memory information of the target memory; the target memory includes a control domain memory and a data domain memory, the control domain memory is used to store transmission control information, and the data domain memory is used to store the target data; The target data is transmitted to the second computing device through the data domain memory according to the transmission control information in the control domain memory.

5. The method according to claim 4, characterized in that The transmission control information includes a transmitting end state and a receiving end state; and transmitting the target data to the second computing device through the data domain memory according to the transmission control information in the control domain memory, comprising: Updating the originating state to a ready-to-complete state; When it is determined that the receiving terminal state in the control domain memory is in the ready state, the target data is written into the data domain memory, and the second computing device is used to read the target data from the data domain memory.

6. The method according to claim 5, characterized in that The target data includes a plurality of data blocks; and writing the target data into the data domain memory includes: For any data block, determining a read pointer position and a write pointer position in the transmission control information; Determining whether there is writable space in the data domain memory according to the read pointer position and the write pointer position; When it is determined that there is writable space in the data domain memory, the data block is written into the writable space in the data domain memory.

7. The method according to any one of claims 4 to 6, characterized in that Before sending the memory allocation request to the management device, the method further includes: The memory capacity is determined according to the data size of the target data, and the memory capacity is greater than or equal to the size of the target data.

8. A data transmission method, characterized in that: Applied to a second computing device, the method includes: Sending a data read request to the management device, wherein the data read request includes a second constraint identifier, and the second constraint identifier is used to match the second computing device with the first computing device; Receiving memory information of a target memory sent by the management device, the memory information including a memory location and a memory capacity of the target memory, the target memory including a control domain memory and a data domain memory, the control domain memory being used to store transmission control information, and the data domain memory being used to store data written by the first computing device; According to the transmission control information, target data stored in the data domain memory by the first computing device is read in the data domain memory.

9. The method according to claim 8, characterized in that The target data includes multiple data blocks; Reading, in the data domain memory, target data stored in the data domain memory by the first computing device according to the transmission control information, includes: determining a read pointer position and a write pointer position in the transmission control information; Determining whether there is a readable data block in the data domain memory according to the read pointer position and the write pointer position; When it is determined that a readable data block exists in the data domain memory, the data block is read from the data domain memory.

10. The method according to any one of claims 8 or 9, characterized in that: After receiving the memory information of the target memory sent by the management device, the method further includes: In the control domain memory, the receiving end status in the transmission control information is updated to a ready state.

Citation Information

Patent Citations

  • Data transmission method, device and system

    CN111400213A

  • Distributed communication system and method

    CN116361037A

  • Data processing method, device and system

    CN117311593A

  • Data operation method, server and CXL controller

    CN117724994A

  • Data transmission method

    CN118316948A