Data transmission method, device, equipment and storage medium

By creating a data transmission message polling thread in the central processing unit, parsing and using the DMA engine for data transmission, the data transmission delay and I/O overhead problems between computing devices are solved, and the data transmission efficiency and resource utilization of computing devices are improved.

CN118796509BActive Publication Date: 2025-09-30LANGCHAO ELECTRONIC INFORMATION IND CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202410804303.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-06-20
Publication Date
2025-09-30
Estimated Expiration
2044-06-20

AI Technical Summary

Technical Problem

In machine learning applications, data transmission delays and I/O overhead between computing devices lead to communication delays and decreased computing efficiency. The existing DMA engine method increases the synchronization overhead between the CPU and GPU, affecting overall performance.

Method used

A data transmission message polling thread is created in the central processing unit of the distributed computing system. The data transmission message of the computing thread is parsed by the thread, the device number and memory address are obtained, and the DMA engine is used for data transmission to avoid waking up the message processing thread.

Benefits of technology

It reduces data transmission time and complexity, improves data transmission efficiency, reduces the impact on L2 cache, and improves resource utilization of computing devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118796509B_ABST
    Figure CN118796509B_ABST
Patent Text Reader

Abstract

The present application discloses a data transmission method, apparatus, device, and storage medium, relating to the field of computer technology, including: when a data transmission message polling thread in a central processing unit polls a data transmission message sent by a computing thread, the data transmission message is parsed to obtain a first number, a second number, and a data transmission type number; based on the first number and the second number, a memory address of the data to be transmitted and a memory address to be written are searched from a preset address table to obtain a first device memory address and a second device memory address; and a data transmission instruction determined based on the data transmission type number is sent to a DMA engine in the computing device where the computing thread is located, so as to transfer the data to be transmitted in the data cache corresponding to the first device memory address to the data cache corresponding to the second device memory address. The present application can reduce the amount of data transmitted, reduce transmission complexity and transmission time, and improve the efficiency of data transmission.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of computer technology, and in particular to a data transmission method, apparatus, device, and storage medium. Background Art

[0002] With the rapid development of machine learning technology, the scale of models (such as deep learning models) has also become larger and larger, resulting in a very large amount of computation in machine learning applications. To improve the computing speed of the model and obtain higher throughput and accuracy, the current mainstream approach is to put most of the calculations on dedicated computing devices such as GPUs (graphics processing units), TPUs (Tensor Processing Units), and FPGAs (Field Programmable Gate Arrays). The processor is only responsible for initiating calculations, collecting and presenting calculation results, and device management.

[0003] However, as the application models continue to grow, the number of computing devices used is also increasing, and there is data dependency between different computing devices. For example, the calculation result of one computing device is the basis for the next calculation of another computing device. Therefore, frequent and large-scale data transmission is required between devices. This method will bring huge communication overhead (between computing devices and between computing devices and processors) to the entire system, namely I / O (Input / Output) overhead, and the transmission delay introduced by these communication overheads seriously damages the internal resource utilization of the computing device (because the device has no data to calculate while waiting for communication to complete), such as the operating cycle of the computing unit, the bandwidth of the L2 (a fast cache shared by multiple computing threads) cache and the overall computing speed.

[0004] Currently, one approach to addressing the transmission latency and I / O overhead of large numbers of small data blocks on computing devices is to offload I / O access (corresponding to data transfer) tasks to the DMA (direct memory access) engine within the computing device, rather than having the threads executing the computing tasks (such as the kernel in a GPU) perform MMIO (memory mapping I / O). This prevents I / O overhead from affecting computing efficiency. However, on current computing devices (such as NVIDIA GPUs), the DMA engine can only be initiated by the CPU (Central Processing Unit) program. The CPU program typically registers control code on the critical path of communication. When a computing thread on the GPU needs to communicate, it must first notify the CPU program, which then controls the DMA engine on the computing device to perform the data transfer. However, this results in synchronization overhead between the CPU and GPU, increasing communication latency and negatively impacting the overall transmission throughput of small data blocks.

[0005] In summary, current data transfers using the DMA engine consume significant time in operations such as message passing and thread wakeup, reducing overall performance. Directly initiating data block transfers on the computing device without the DMA engine, such as by initiating MMIO accesses from a computing thread, can pollute the L2 cache, impacting the execution speed of other concurrently executing computing threads. Summary of the Invention

[0006] In view of this, the purpose of this application is to provide a data transmission method, apparatus, device, and storage medium that can significantly reduce the amount of data transmitted, reduce transmission complexity and transmission time, and thus improve data transmission efficiency. The specific solution is as follows:

[0007] In a first aspect, the present application discloses a data transmission method, comprising:

[0008] The data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by the computing thread, and when the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number, and a data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device;

[0009] The data transmission message polling thread searches the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address;

[0010] The data transfer message polling thread sends a data transfer instruction determined based on the data transfer type number to the DMA engine in the computing device where the computing thread currently being polled is located, so as to utilize the DMA engine to transfer the data to be transferred located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0011] Optionally, the polling of the data transmission message sent by the computing thread by a data transmission message polling thread in a central processing unit of the distributed computing system, and when the data transmission message sent by the computing thread is polled, parsing the data transmission message to obtain the corresponding first number, second number, and data transmission type number, includes:

[0012] A data transmission message polling thread located in a central processing unit of a distributed computing system polls the data transmission messages sent by each computing thread in a preset data transmission message cache. When a data transmission message of a preset byte length sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number and a data transmission type number; the data transmission message cache is located in a system memory corresponding to the central processing unit, and the preset byte length is the same as the bit width of an internal bus in the central processing unit.

[0013] Optionally, the size of the preset data transmission message cache is the product of the preset byte length and the total number of computing threads; the total number of computing threads is the sum of the number of computing threads corresponding to multiple computing devices in the distributed computing system.

[0014] Optionally, the polling thread for the data transmission message and searching a preset address table for a memory address where the data to be transmitted is located and a memory address to be written based on the first number and the second number to obtain the first device memory address and the second device memory address includes:

[0015] Searching a table entry corresponding to the first number from a preset address table through the data transmission message polling thread to obtain a first table entry, and obtaining a memory address in a data sending device where the data to be transmitted is located from the first table entry to obtain a first device memory address;

[0016] Search the preset address table for an entry corresponding to the second number and the entry number of the first entry to obtain a second entry, and obtain the memory address in the data receiving device where the data to be transmitted is to be written from the second entry to obtain a second device memory address.

[0017] Optionally, after using the DMA engine to transfer the to-be-transmitted data in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device, the method further includes:

[0018] When it is monitored that the data to be transmitted is completed, a corresponding identifier is written to the preset sending completion space or the preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located, so that the computing device where the computing thread currently being polled is located can continue other computing operations after reading the identifier.

[0019] Optionally, the step of sending a data transfer instruction determined based on the data transfer type number to a DMA engine in a computing device where the computing thread currently being polled is located through the data transfer message polling thread, so as to use the DMA engine to transfer the data to be transferred located in a data cache corresponding to a memory address of the first device to a data cache corresponding to a memory address of the second device, includes:

[0020] Determine the data transmission type corresponding to the data transmission type number to obtain a target transmission type;

[0021] If the target transmission type is a send type, a data send instruction is sent to the DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and send the data to be transmitted to the data cache corresponding to the memory address of the second device;

[0022] Accordingly, the step of writing a corresponding identifier into a preset sending completion space or a preset receiving completion space in a device memory of a computing device where the computing thread currently being polled is located includes:

[0023] Writing a sending completion flag into a preset sending completion space in a device memory of a computing device where the computing thread currently being polled is located;

[0024] If the target transmission type is a receive type, a data receive instruction is sent to a DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and write the data to be transmitted to the data cache corresponding to the memory address of the second device;

[0025] Accordingly, the step of writing a corresponding identifier into a preset sending completion space or a preset receiving completion space in a device memory of a computing device where the computing thread currently being polled is located includes:

[0026] A receiving completion flag is written into a preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located.

[0027] Optionally, when polling the data transmission message sent by the computing thread, parsing the data transmission message to obtain the corresponding first number, second number, and data transmission type number includes:

[0028] When a data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number, a data transmission type number, and a data length;

[0029] Accordingly, the step of using the DMA engine to transfer the data to be transferred in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device includes:

[0030] The DMA engine is used to transfer the data to be transmitted that has the same length as the data and is located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0031] In a second aspect, the present application discloses a data transmission device, comprising:

[0032] A polling module, configured to poll the data transmission message sent by the computing thread through a data transmission message polling thread located in a central processing unit of the distributed computing system;

[0033] a parsing module, configured to, upon polling a data transmission message sent by the computing thread, parse the data transmission message to obtain a corresponding first number, a second number, and a data transmission type number; wherein the first number is an address number of the data to be transmitted in the local device memory of the data sending device, and the second number is a device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in a computing unit of the computing device;

[0034] a search module, configured to search, through the data transmission message polling thread, the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number, to obtain the first device memory address and the second device memory address;

[0035] An instruction sending module is used to send a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread currently being polled is located through the data transmission message polling thread, so as to utilize the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0036] In a third aspect, the present application discloses an electronic device comprising a processor and a memory; wherein the processor implements the aforementioned data transmission method when executing a computer program stored in the memory.

[0037] In a fourth aspect, the present application discloses a computer-readable storage medium for storing a computer program; wherein, when the computer program is executed by a processor, the aforementioned data transmission method is implemented.

[0038] It can be seen that the present application polls the data transmission message sent by the computing thread through a data transmission message polling thread located in the central processing unit of the distributed computing system. When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted. The data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device; then, through the data transmission message polling thread and based on the first number and the second number, the memory address where the data to be transmitted is located and the memory address to be written are searched from the preset address table to obtain the first device memory address and the second device memory address, and then the data transmission message polling thread sends a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread currently being polled is located, thereby using the DMA engine to transfer the data to be transmitted in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device. The present application pre-creates a data transmission message polling thread in the central processing unit of a distributed computing system. Through this polling thread, when a data transmission message sent by a computing thread is polled, it can parse it to obtain the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number. Based on the address number corresponding to the data to be transmitted and the device number to be written, the memory address of the data to be transmitted and the memory address to be written are searched from the preset address table, and a data transmission instruction is sent to the DMA engine based on the data transmission type number, thereby completing the data transmission between different computing devices. It can be seen that the present application receives messages and initiates data transmission in the same thread, thereby avoiding the step of waking up the message processing thread in the existing scheme and reducing processing time. In addition, compared with traditional data transmission methods, the present application does not need to receive specific data to be transmitted and the corresponding device address, but receives the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number, thereby greatly reducing the amount of data transmitted, reducing transmission complexity and transmission time, and thus improving the efficiency of data transmission. BRIEF DESCRIPTION OF THE DRAWINGS

[0039] 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 merely embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on the provided drawings without any creative work.

[0040] Figure 1 This is a flow chart of a data transmission method disclosed in this application;

[0041] Figure 2 A schematic diagram of a specific system hardware structure disclosed in this application;

[0042] Figure 3 A schematic diagram of a specific data transmission message format disclosed in this application;

[0043] Figure 4 This is a flowchart of a specific data transmission method disclosed in this application;

[0044] Figure 5 A flowchart of a specific data transmission method disclosed in this application;

[0045] Figure 6 This is a structural diagram of a data transmission device disclosed in this application;

[0046] Figure 7 This is a structural diagram of an electronic device disclosed in this application. DETAILED DESCRIPTION

[0047] The following will be combined with the drawings in the embodiments of this application to clearly and completely describe the technical solutions in the embodiments of this application. Obviously, the embodiments described are only part of the embodiments of this application, not all of the embodiments. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field without making creative efforts are within the scope of protection of this application.

[0048] The present application discloses a data transmission method. Figure 1 As shown, the method includes:

[0049] Step S11: poll the data transmission message sent by the computing thread through the data transmission message polling thread located in the central processing unit of the distributed computing system. When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted. The data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device.

[0050] It should be pointed out that the present application pre-creates a data transmission message polling thread in the central processing unit (i.e., CPU) of the distributed computing system. The entire data transmission operation can be implemented through this thread, which can replace the polling and processing operations of the message polling thread and the message processing thread in the related technology, thereby reducing the time consumption in operations such as message passing and thread wake-up. Specifically, the data transmission message polling thread can poll the data transmission messages sent by the computing threads running in the computing units of each computing device, and when polling the data transmission messages sent by the computing threads, parse the data transmission messages to obtain the first number, the second number, and the data transmission type number contained in the data transmission message; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, the second number is the device number of the data receiving device corresponding to the data to be transmitted, and the data sending device and the data receiving device are both computing devices in the distributed computing system; the data transmission type number includes a data sending type number and a data receiving type number.

[0051] For details, see Figure 2 As shown, a data transmission message polling thread is pre-created in the processor (i.e., central processing unit) in the CPU chip, and the CPU chip is connected to computing device 1 and computing device 2 respectively through a PCIe (Peripheral Component Interconnect Express, a computer expansion bus standard) bus, and each computing device includes 1 device memory, 1 DMA engine, 1 computing unit and 1 PCIe module. Of course, 1 computing device can also include multiple computing units.

[0052] In a specific embodiment, the data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by the computing thread, and when the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number. Specifically, it may include: the data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by each computing thread in the preset data transmission message cache, and when the data transmission message of the preset byte length is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number; the data transmission message cache is located in the system memory corresponding to the central processing unit, and the preset byte length is the same as the bit width of the internal bus in the central processing unit. It should be pointed out that the length of the data transmission message in the present application is the same as the bit width of the internal bus (such as PCIe bus) in the central processing unit, such as 8 bytes (64 bits). This 8-byte data transmission message will still be written to the system memory through MMIO, but it can be written to the system memory at one time. This is because for the processor, writing 8 bytes of data is an atomic operation, which can be transmitted in one processing cycle. There is no need to introduce buffer management, message segmentation and reorganization, etc., which reduces the complexity and transmission time of data transmission at the hardware level. Therefore, there is no need to worry about only obtaining part of the valid data, and there is no need to introduce time-consuming operations such as locking and unlocking. Moreover, since the actual calculation result is converted into 8 bytes of information, the amount of data is greatly reduced, thereby greatly reducing the impact on the L2 cache. In addition, the present application pre-creates a data transmission message cache in the system memory (such as DDR, double data rate synchronous dynamic random access memory, Double Data Rate SDRAM) corresponding to the central processing unit of the distributed computing system. Through this cache, the data transmission messages sent by the computing threads of different computing devices can be recorded, that is, the computing thread writes its own data transmission message to the data transmission message cache of the system memory. For details, see Figure 3As shown, to facilitate the management and polling of data transmission message polling threads, corresponding byte spaces can be allocated in the data transmission message cache for the computing threads of each computing device. Specifically, corresponding address offsets can be calculated according to the computing device number and the computing thread number, and corresponding byte spaces are allocated based on the address offsets to store the data transmission messages of each computing thread. The data format of the data transmission message in each byte space can specifically include a data transmission type (status) number (e.g., 0 indicates invalid, 1 indicates a send type, and 2 indicates a receive type), a data address number (addr_id), a target device number (device_id), and a data length (len). The variable byte length can also be set in this format, such as the byte length of the data address number (addr_id) is 16. Of course, this can also be modified according to actual conditions. For example, when there are many computing devices, the number of bits occupied by the device number (device_id) can be increased and the number of bits occupied by the data length (len) can be appropriately reduced. However, this will reduce the maximum data length that can be processed each time, so it can be selected according to actual conditions. By parsing the data transmission message in the corresponding byte space in the data transmission message buffer, corresponding number information, data length (referring to the length of the data to be transmitted) and other information can be obtained.

[0053] In a specific embodiment, the size of the preset data transmission message buffer is the product of the preset byte length and the total number of computing threads; the total number of computing threads is the sum of the number of computing threads corresponding to the multiple computing devices in the distributed computing system. For example, the size of the preset data transmission message buffer is 8 bytes * the total number of computing threads, where the total number of computing threads is the sum of the number of computing threads of all computing devices in the distributed computing system.

[0054] Step S12: The data transmission message polling thread searches the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address.

[0055] In this embodiment, after parsing the data transmission message to obtain the corresponding first number, second number, and data transmission type number, further, through the data transmission message polling thread and based on the parsed first number and second number, the memory address of the data to be transmitted and the memory address to be written are searched from the preset address table to obtain the corresponding first device memory address and second device memory address. It should be noted that the present application pre-creates an address table, which records the address of the data to be sent and the destination address to be written in different computing devices. Through this address table, detailed address information can be found according to the number.

[0056] Specifically, the method of searching the memory address of the data to be transmitted and the memory address to be written from the preset address table based on the first number and the second number through the data transmission message polling thread to obtain the first device memory address and the second device memory address may include: searching the preset address table for the entry corresponding to the first number through the data transmission message polling thread to obtain the first entry, and obtaining the memory address of the data sending device where the data to be transmitted is located from the first entry to obtain the first device memory address; searching the preset address table for the entry corresponding to the second number and the item number of the first entry to obtain the second entry, and obtaining the memory address of the data receiving device to which the data to be transmitted is to be written from the second entry to obtain the second device memory address. In this embodiment, see Figure 4 As shown, the data transmission message polling thread can first search the preset address table for the table entry corresponding to the first number (i.e., the address number corresponding to the data to be transmitted) to obtain the first table entry (i.e., the "addr_id"-th table entry corresponding to computing device 1), and then obtain the memory address of the data sending device (such as computing device 1) where the data to be transmitted is located from the first table entry to obtain the first device memory address. Then, the preset address table is searched for the table entry corresponding to the second number (i.e., the device number to be written) and the item number of the first table entry (i.e., item number 3) to obtain the second table entry, and then the memory address of the data receiving device to which the data to be transmitted is to be written is obtained from the second table entry to obtain the second device memory address. It should be pointed out that a message within a processing cycle (such as an 8-byte message) can only contain one data address number. Therefore, it is necessary to ensure that the address number of the data to be transmitted in the device memory and the address number of the (another) device memory to which the data is to be written are numerically equal, but the addresses are generally different. In order to overcome this problem, the present application hides the device number of the data to be transmitted in the corresponding position of the current data transmission message in the preset data transmission message cache. In this way, the memory address of the data sending device where the data to be transmitted is located and the memory address of the data receiving device to be written can be obtained from the corresponding position (i.e., item number) of the preset address table through the device number.

[0057] Step S13: Send a data transfer instruction determined based on the data transfer type number to the DMA engine in the computing device where the computing thread currently being polled is located through the data transfer message polling thread, so as to utilize the DMA engine to transfer the data to be transferred located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0058] In this embodiment, after finding the memory address of the data to be transferred and the memory address to be written from the preset address table, the data transfer message polling thread sends a data transfer instruction based on the data transfer type number to the DMA engine in the computing device where the computing thread currently being polled is located. For example, when the data transfer type number is 1, it indicates a data send type. The DMA engine then directly transfers the data to be transferred, located in the data cache corresponding to the memory address of the first device, to the data cache corresponding to the memory address of the second device. Furthermore, the data transfer message polling thread can also determine whether the final calculation result has been obtained during the polling process. If so, the current data transfer task is terminated.

[0059] Furthermore, after using the DMA engine to transfer the data to be transmitted in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device, it can also include: when monitoring that the data to be transmitted is completed, writing a corresponding identifier to the preset sending completion space or the preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located, so that the computing device where the computing thread currently being polled is located can continue other computing operations after reading the identifier. For example, when monitoring that the data to be transmitted is completed, writing a receiving completion identifier (such as 0) to the preset sending completion space in the device memory of the computing device where the computing thread currently being polled is located, or to the preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located. The identifier corresponding to the default initial state can be 0. Among them, the identifier can be an integer variable. By writing the corresponding completion identifier, the computing device where the computing thread currently being polled is located can continue to perform other computing operations after reading the identifier, that is, the computing device can know the status of the current computing thread. If it is in a waiting state, it indicates that the data transmission operation has not been completed. If it is in a completion state, it indicates that the data to be transmitted has been obtained and subsequent operations can continue.

[0060] In a specific embodiment, the data transmission message polling thread sends a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread currently being polled is located, so as to use the DMA engine to transfer the data to be transmitted in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device. This may include: determining the data transmission type corresponding to the data transmission type number to obtain the target transmission type; if the target transmission type is a sending type, sending a data sending instruction to the DMA engine in the computing device where the computing thread currently being polled is located to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and sending the data to be transmitted to the data cache corresponding to the memory address of the second device; accordingly, writing a corresponding identifier into a preset sending completion space or a preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located may specifically include: writing a sending completion identifier into the preset sending completion space in the device memory of the computing device where the computing thread currently being polled is located. That is, when the transmission type is a send type, a data send instruction is sent to the DMA engine in the computing device where the currently polled computing thread is located, so as to obtain the corresponding data to be transmitted from the data cache corresponding to the memory address of the first device and send it to the data cache corresponding to the memory address of the second device. After monitoring the completion of the data transmission to be transmitted, a send completion flag (such as 1) is written to the preset send completion space in the device memory of the computing device where the currently polled computing thread is located, such as the SC (send complete) space of sc_rc_flags.

[0061] In another specific embodiment, if the target transmission type is a receive type, a data receive instruction is sent to the DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and write the data to be transmitted to the data cache corresponding to the memory address of the second device; accordingly, the writing of a corresponding identifier to a preset send completion space or a preset receive completion space in the device memory of the computing device where the computing thread currently being polled is located may specifically include: writing a receive completion identifier to a preset receive completion space in the device memory of the computing device where the computing thread currently being polled is located. That is, when the transmission type is a receive type, a data receive instruction is sent to the DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the corresponding data to be transmitted from the data cache corresponding to the memory address of the first device, and send it to the data cache corresponding to the memory address of the second device. After monitoring that the data to be transmitted is completed, a receive completion flag (such as 1) is written to the preset receive completion space in the device memory of the computing device where the currently polled computing thread is located, such as the RC (receive complete) space of sc_rc_flags. The flag corresponding to the default initial state can be 0.

[0062] Among them, the identifier can be an integer variable. By writing the corresponding completion identifier, the computing device where the computing thread currently being polled is located can continue to perform other computing operations after reading the identifier. That is, the mark is written by the message polling processing thread running in the central processing unit and read by the computing thread running in the computing device. It should be pointed out that the number of variables contained in the SC space and the RC space is the same as the number of computing threads. In other words, each computing thread has its own corresponding sending completion identifier and receiving completion identifier. For example, after initiating the data sending instruction, computing thread No. 1 can read the first identifier in the SC space to determine whether the sending operation is completed.

[0063] Furthermore, considering the situation where multiple computing threads burstily send multiple data transmission messages to the data transmission message polling thread, when multiple data transmission messages are polled, the multiple data transmission messages can be parsed at the same time, and the memory address of each data to be transmitted and the memory address to be written can be searched from the preset address table according to the parsing results. Then, it is determined whether there is data to be transmitted with continuous addresses and the same destination address (that is, the device memory address to be written). If so, all data to be transmitted with continuous addresses are integrated into a transmission instruction to the DMA engine (because the DMA engine can only process data with continuous memory addresses in a single data transmission), thereby reducing the number of times the DMA engine is controlled to initiate data transmission, thereby improving overall performance.

[0064] It can be seen that the embodiment of the present application polls the data transmission message sent by the computing thread through a data transmission message polling thread located in the central processing unit of the distributed computing system. When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted. The data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device; then, through the data transmission message polling thread and based on the first number and the second number, the memory address where the data to be transmitted is located and the memory address to be written are searched from the preset address table to obtain the first device memory address and the second device memory address, and then the data transmission message polling thread sends a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread is currently polled, thereby using the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device. The embodiment of the present application pre-creates a data transmission message polling thread in the central processing unit of the distributed computing system. Through this polling thread, when a data transmission message sent by the computing thread is polled, it can be parsed to obtain the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number. Based on the address number corresponding to the data to be transmitted and the device number to be written, the memory address of the data to be transmitted and the memory address to be written are searched from the preset address table, and a data transmission instruction is sent to the DMA engine based on the data transmission type number, thereby completing the data transmission between different computing devices. It can be seen that the embodiment of the present application receives messages and initiates data transmission in the same thread, thereby avoiding the step of waking up the message processing thread in the existing scheme and reducing the processing time. In addition, compared with the traditional data transmission method, the embodiment of the present application does not need to receive specific data to be transmitted and the corresponding device address, but receives the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number, thereby greatly reducing the amount of data transmitted, reducing the transmission complexity and transmission time, and thus improving the efficiency of data transmission.

[0065] The present application discloses a specific data transmission method. Figure 5 As shown, the method includes:

[0066] Step S21: polling the data transmission message sent by the computing thread through the data transmission message polling thread located in the central processing unit of the distributed computing system; when the data transmission message sent by the computing thread is polled, parsing the data transmission message to obtain the corresponding first number, second number, data transmission type number and data length; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, the second number is the device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device.

[0067] In this embodiment, when the data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by the computing thread, the data transmission message is parsed to obtain the corresponding first number, second number, data transmission type number and data length; wherein the data length refers to the length of the data to be transmitted.

[0068] Step S22: The data transmission message polling thread searches the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address.

[0069] Step S23: Send a data transfer instruction determined based on the data transfer type number to the DMA engine in the computing device where the computing thread currently being polled is located through the data transfer message polling thread, so as to utilize the DMA engine to transfer the data to be transferred with the same length as the data located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0070] In this embodiment, a data transfer message polling thread can send a data transfer instruction based on the data transfer type number to a DMA engine in the computing device where the currently polled computing thread resides, so that the DMA engine can transfer the data to be transferred with the same data length as the data in the data buffer corresponding to the memory address of the first device to the data buffer corresponding to the memory address of the second device. By including the data length in the data transfer message, the accuracy of the number of bits in the data transmission can be ensured, thereby improving the accuracy of the data to be transferred.

[0071] For a more specific processing procedure of the above step S22, reference may be made to the corresponding contents disclosed in the above embodiments, which will not be described again here.

[0072] It can be seen that the embodiment of the present application polls the data transmission message sent by the computing thread through the data transmission message polling thread located in the central processing unit of the distributed computing system. When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number, data transmission type number and data length, and based on the first number and the second number, the memory address where the data to be transmitted is located and the memory address to be written are searched from the preset address table to obtain the first device memory address and the second device memory address, and then the data transmission instruction determined based on the data transmission type number is sent to the DMA engine in the computing device where the computing thread currently being polled is located, so as to use the DMA engine to transfer the data to be transmitted with the same data length as the data cache corresponding to the first device memory address to the data cache corresponding to the second device memory address.

[0073] In the embodiment of the present application, polling messages and initiating data transmission are both completed in the same thread, thereby avoiding the step of waking up the message processing thread and reducing processing time. In addition, the data transmission message in the embodiment of the present application specifically records the number information and length information. This information can greatly reduce the amount of data relative to the calculation result output by the calculation thread. For example, the actual calculation result data is converted into an 8-byte data transmission message, thereby reducing the impact on the L2 cache shared by multiple calculation threads, and further reducing the impact on the running speed of other calculation threads.

[0074] Correspondingly, the embodiment of the present application also discloses a data transmission device, see Figure 6 As shown, the device includes:

[0075] The polling module 11 is configured to poll the data transmission message sent by the computing thread through a data transmission message polling thread in a central processing unit of the distributed computing system;

[0076] a parsing module 12, configured to, upon polling a data transmission message sent by the computing thread, parse the data transmission message to obtain a corresponding first number, a second number, and a data transmission type number; wherein the first number is an address number of the data to be transmitted in the local device memory of the data sending device, and the second number is a device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in a computing unit of the computing device;

[0077] A search module 13 is configured to search a preset address table for a memory address of the data to be transmitted and a memory address to be written based on the first number and the second number through the data transmission message polling thread to obtain a first device memory address and a second device memory address;

[0078] The instruction sending module 14 is used to send a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread currently being polled is located through the data transmission message polling thread, so as to use the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0079] Among them, the specific work processes of the above modules can refer to the corresponding contents disclosed in the aforementioned embodiments, which will not be repeated here.

[0080] It can be seen that in the embodiment of the present application, the data transmission message sent by the computing thread is first polled by the data transmission message polling thread located in the central processing unit of the distributed computing system. When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted. The data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device; then, the memory address of the data to be transmitted and the memory address to be written are searched from the preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address, and then the data transmission message polling thread sends a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread is currently polled, so as to use the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device. The embodiment of the present application pre-creates a data transmission message polling thread in the central processing unit of the distributed computing system. Through this polling thread, when a data transmission message sent by the computing thread is polled, it can be parsed to obtain the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number. Based on the address number corresponding to the data to be transmitted and the device number to be written, the memory address of the data to be transmitted and the memory address to be written are searched from the preset address table, and a data transmission instruction is sent to the DMA engine based on the data transmission type number, thereby completing the data transmission between different computing devices. It can be seen that the embodiment of the present application receives messages and initiates data transmission in the same thread, thereby avoiding the step of waking up the message processing thread in the existing scheme and reducing the processing time. In addition, compared with the traditional data transmission method, the embodiment of the present application does not need to receive specific data to be transmitted and the corresponding device address, but receives the address number corresponding to the data to be transmitted, the device number to be written, and the data transmission type number, thereby greatly reducing the amount of data transmitted, reducing the transmission complexity and transmission time, and thus improving the efficiency of data transmission.

[0081] In some specific embodiments, the polling module 11 may specifically include:

[0082] A polling unit, configured to poll the data transmission messages sent by each computing thread in a preset data transmission message buffer through a data transmission message polling thread located in a central processing unit of the distributed computing system;

[0083] Accordingly, the analysis module 12 may specifically include:

[0084] A first parsing unit is configured to parse a data transmission message of a preset byte length sent by the computing thread to obtain a corresponding first number, a second number, and a data transmission type number when the data transmission message is polled; the data transmission message cache is located in a system memory corresponding to the central processing unit, and the preset byte length is the same as the bit width of an internal bus in the central processing unit.

[0085] In some specific embodiments, the size of the preset data transmission message cache is the product of the preset byte length and the total number of computing threads; the total number of computing threads is the sum of the number of computing threads corresponding to multiple computing devices in the distributed computing system.

[0086] In some specific embodiments, the search module 13 may specifically include:

[0087] a first searching unit, configured to search a table entry corresponding to the first number from a preset address table through the data transmission message polling thread to obtain a first table entry;

[0088] A first address acquiring unit, configured to acquire, from the first table entry, a memory address in the data sending device where the data to be transmitted is located, to obtain a first device memory address;

[0089] a second searching unit, configured to search the preset address table for an entry corresponding to the second number and the entry number of the first entry, to obtain a second entry;

[0090] The second address obtaining unit is configured to obtain, from the second table entry, a memory address in a data receiving device where the data to be transmitted is to be written, to obtain a second device memory address.

[0091] In some specific embodiments, after the instruction sending module 14, the following steps may also be included:

[0092] The first identifier writing unit is used to write a corresponding identifier into a preset sending completion space or a preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located when it is monitored that the data to be transmitted is completed, so that the computing device where the computing thread currently being polled is located can continue other computing operations after reading the identifier.

[0093] In some specific embodiments, the instruction sending module 14 may specifically include:

[0094] a transmission type determining unit, configured to determine a data transmission type corresponding to the data transmission type number, and obtain a target transmission type;

[0095] a first instruction sending unit, configured to, if the target transmission type is a send type, send a data send instruction to a DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from a data cache corresponding to a memory address of the first device, and send the data to be transmitted to a data cache corresponding to a memory address of the second device;

[0096] Accordingly, the first identification writing unit may specifically include:

[0097] A second flag writing unit is configured to write a sending completion flag into a preset sending completion space in a device memory of a computing device where the computing thread currently being polled is located;

[0098] a second instruction sending unit, configured to, if the target transmission type is a receive type, send a data receive instruction to a DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from a data cache corresponding to the memory address of the first device, and write the data to be transmitted into a data cache corresponding to the memory address of the second device;

[0099] Accordingly, the first identification writing unit may specifically include:

[0100] The third identifier writing unit is used to write a receiving completion identifier into a preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located.

[0101] In some specific embodiments, the parsing module 12 may specifically include:

[0102] a second parsing unit, configured to parse the data transmission message sent by the computing thread to obtain the corresponding first number, second number, data transmission type number and data length when polling the data transmission message sent by the computing thread;

[0103] Accordingly, the instruction sending module 14 may specifically include:

[0104] A data transmission unit is used to use the DMA engine to transfer the to-be-transmitted data with the same data length as the data in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

[0105] Furthermore, the embodiment of the present application also discloses an electronic device, Figure 7This is a structural diagram of an electronic device 20 according to an exemplary embodiment. The content in the diagram should not be considered as any limitation to the scope of application of the present application.

[0106] Figure 7 This is a schematic diagram of the structure of an electronic device 20 provided in an embodiment of the present application. The electronic device 20 may include: at least one processor 21, at least one memory 22, a power supply 23, a communication interface 24, an input / output interface 25, and a communication bus 26. The memory 22 is used to store a computer program, which is loaded and executed by the processor 21 to implement the relevant steps of the data transmission method disclosed in any of the aforementioned embodiments. Furthermore, the electronic device 20 in this embodiment may be a computer.

[0107] In this embodiment, the power supply 23 is used to provide operating voltage for each hardware device on the electronic device 20; the communication interface 24 can create a data transmission channel between the electronic device 20 and the external device. The communication protocol it follows is any communication protocol that can be applied to the technical solution of this application and is not specifically limited here; the input and output interface 25 is used to obtain external input data or output data to the outside world. Its specific interface type can be selected according to specific application needs and is not specifically limited here.

[0108] In addition, the memory 22, as a carrier for resource storage, can be a read-only memory, random access memory, disk or CD, etc. The resources stored thereon can include an operating system 221, a computer program 222, etc., and the storage method can be temporary storage or permanent storage.

[0109] The operating system 221 is used to manage and control the hardware devices on the electronic device 20 and the computer program 222, and can be Windows Server, Netware, Unix, Linux, etc. In addition to including computer programs that can be used to implement the data transmission method performed by the electronic device 20 disclosed in any of the aforementioned embodiments, the computer program 222 can further include computer programs that can be used to perform other specific tasks.

[0110] Furthermore, this application also discloses a computer-readable storage medium for storing a computer program; wherein, when the computer program is executed by a processor, the aforementioned data transmission method is implemented. The specific steps of this method can be referred to the corresponding contents disclosed in the aforementioned embodiments and will not be repeated here.

[0111] Furthermore, an embodiment of the present application also discloses a computer program product, including a computer program / instruction, which implements the steps of the data transmission method disclosed above when executed by a processor.

[0112] The various embodiments in this specification are described in a progressive manner, with each embodiment focusing on its differences from the other embodiments. Reference can be made to the descriptions of the identical or similar parts between the various embodiments. For the devices disclosed in the embodiments, since they correspond to the methods disclosed in the embodiments, the descriptions are relatively simple, and the relevant parts can be referred to the descriptions of the methods.

[0113] Professionals may further appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of the two. In order to clearly illustrate the interchangeability of hardware and software, the above description has generally described the components and steps of each example according to their functions. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professionals and technicians may use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0114] The steps of the methods or algorithms described in conjunction with the embodiments disclosed herein may be implemented directly using hardware, a software module executed by a processor, or a combination of the two. The software module may be placed in a random access memory (RAM), internal memory, read-only memory (ROM), electrically programmable ROM, electrically erasable programmable ROM, registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art.

[0115] Finally, it should be noted that, in this document, relational terms such as first and second, etc., are used only to distinguish one entity or operation from another entity or operation, and do not necessarily require or imply any actual relationship or order between these entities or operations. Moreover, the terms "comprises," "comprising," or any other variations thereof are intended to cover non-exclusive inclusion, such 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 elements inherent to such process, method, article, or device. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of additional identical elements in the process, method, article, or device comprising the element.

[0116] The above is a detailed introduction to a data transmission method, device, equipment and storage medium provided by the present application. Specific examples are used herein to illustrate the principles and implementation methods of the present application. The description of the above embodiments is only used to help understand the method of the present application and its core idea. At the same time, for those skilled in the art, according to the ideas of the present application, there may be changes in the specific implementation methods and application scope. In summary, the content of this specification should not be understood as a limitation on the present application.

Claims

1. A data transmission method, characterized in that: include: The data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by the computing thread, and when the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number, and a data transmission type number; wherein the first number is the address number of the data to be transmitted in the local device memory of the data sending device, and the second number is the device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in the computing unit of the computing device; The data transmission message polling thread searches the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address; The data transfer message polling thread sends a data transfer instruction determined based on the data transfer type number to the DMA engine in the computing device where the computing thread currently being polled is located, so as to utilize the DMA engine to transfer the data to be transferred located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

2. The data transmission method according to claim 1, wherein: The data transmission message polling thread located in the central processing unit of the distributed computing system polls the data transmission message sent by the computing thread, and when the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number, including: A data transmission message polling thread located in a central processing unit of a distributed computing system polls the data transmission messages sent by each computing thread in a preset data transmission message cache. When a data transmission message of a preset byte length sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number and a data transmission type number; the data transmission message cache is located in a system memory corresponding to the central processing unit, and the preset byte length is the same as the bit width of an internal bus in the central processing unit.

3. The data transmission method according to claim 2, wherein: The size of the preset data transmission message cache is the product of the preset byte length and the total number of computing threads; the total number of computing threads is the sum of the number of computing threads corresponding to multiple computing devices in the distributed computing system.

4. The data transmission method according to claim 1, wherein: The polling thread for the data transmission message and searching the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number to obtain the first device memory address and the second device memory address include: Searching a table entry corresponding to the first number from a preset address table through the data transmission message polling thread to obtain a first table entry, and obtaining a memory address in a data sending device where the data to be transmitted is located from the first table entry to obtain a first device memory address; Search the preset address table for an entry corresponding to the second number and the entry number of the first entry to obtain a second entry, and obtain the memory address in the data receiving device where the data to be transmitted is to be written from the second entry to obtain a second device memory address.

5. The data transmission method according to claim 1, wherein: After using the DMA engine to transfer the data to be transmitted in the data buffer corresponding to the memory address of the first device to the data buffer corresponding to the memory address of the second device, the method further includes: When it is monitored that the data to be transmitted is completed, a corresponding identifier is written to the preset sending completion space or the preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located, so that the computing device where the computing thread currently being polled is located can continue other computing operations after reading the identifier.

6. The data transmission method according to claim 5, characterized in that: The polling thread for the data transmission message sends a data transmission instruction determined based on the data transmission type number to a DMA engine in the computing device where the computing thread currently polled is located, so as to use the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device, including: Determine the data transmission type corresponding to the data transmission type number to obtain a target transmission type; If the target transmission type is a send type, a data send instruction is sent to the DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and send the data to be transmitted to the data cache corresponding to the memory address of the second device; Accordingly, the step of writing a corresponding identifier into a preset sending completion space or a preset receiving completion space in a device memory of a computing device where the computing thread currently being polled is located includes: Writing a sending completion flag into a preset sending completion space in a device memory of a computing device where the computing thread currently being polled is located; If the target transmission type is a receive type, a data receive instruction is sent to a DMA engine in the computing device where the computing thread currently being polled is located, so as to obtain the data to be transmitted from the data cache corresponding to the memory address of the first device, and write the data to be transmitted to the data cache corresponding to the memory address of the second device; Accordingly, the step of writing a corresponding identifier into a preset sending completion space or a preset receiving completion space in a device memory of a computing device where the computing thread currently being polled is located includes: A receiving completion flag is written into a preset receiving completion space in the device memory of the computing device where the computing thread currently being polled is located.

7. The data transmission method according to any one of claims 1 to 6, characterized in that: When the data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain the corresponding first number, second number and data transmission type number, including: When a data transmission message sent by the computing thread is polled, the data transmission message is parsed to obtain a corresponding first number, a second number, a data transmission type number, and a data length; Accordingly, the step of using the DMA engine to transfer the data to be transferred in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device includes: The DMA engine is used to transfer the data to be transmitted that has the same length as the data and is located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

8. A data transmission device, characterized in that: include: A polling module, configured to poll the data transmission message sent by the computing thread through a data transmission message polling thread located in a central processing unit of the distributed computing system; a parsing module, configured to, upon polling a data transmission message sent by the computing thread, parse the data transmission message to obtain a corresponding first number, a second number, and a data transmission type number; wherein the first number is an address number of the data to be transmitted in the local device memory of the data sending device, and the second number is a device number of the data receiving device corresponding to the data to be transmitted, the data sending device and the data receiving device are both computing devices in the distributed computing system, and the computing thread runs in a computing unit of the computing device; a search module, configured to search, through the data transmission message polling thread, the memory address of the data to be transmitted and the memory address to be written from a preset address table based on the first number and the second number, to obtain the first device memory address and the second device memory address; An instruction sending module is used to send a data transmission instruction determined based on the data transmission type number to the DMA engine in the computing device where the computing thread currently being polled is located through the data transmission message polling thread, so as to utilize the DMA engine to transfer the data to be transmitted located in the data cache corresponding to the memory address of the first device to the data cache corresponding to the memory address of the second device.

9. An electronic device, characterized in that: The method comprises a processor and a memory; wherein, when the processor executes the computer program stored in the memory, the data transmission method according to any one of claims 1 to 7 is implemented.

10. A computer-readable storage medium, characterized in that Used to store computer programs; wherein, when the computer program is executed by a processor, the data transmission method according to any one of claims 1 to 7 is implemented.

Citation Information

Patent Citations

  • Memory control method and device of DMA controller, storage medium and equipment

    CN111639038A

  • System and method for identity resolution across disparate distributed immutable ledger networks

    US20190104102A1