CN118316948A - 数据传输方法 - Google Patents
数据传输方法 Download PDFInfo
- Publication number
- CN118316948A CN118316948A CN202410405448.5A CN202410405448A CN118316948A CN 118316948 A CN118316948 A CN 118316948A CN 202410405448 A CN202410405448 A CN 202410405448A CN 118316948 A CN118316948 A CN 118316948A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- computing device
- target
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 286
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000015654 memory Effects 0.000 claims abstract description 876
- 230000004044 response Effects 0.000 claims abstract description 50
- 238000009826 distribution Methods 0.000 claims abstract description 4
- 238000002360 preparation method Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 36
- 238000012545 processing Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据传输方法,包括接收第一计算设备发送的内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识;第一约束标识用于对第一计算设备和第二计算设备进行匹配;根据内存分配请求,为第一计算设备分配目标内存,目标内存包括控制域内存和数据域内存;其中,控制域内存用于存储传输控制信息,数据域内存用于存储第一计算设备向第二计算设备发送的数据,传输控制信息用于指示第一计算设备和第二计算设备的状态;向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息,目标对应关系为第一计算设备、目标内存的内存信息及第一约束标识的对应关系。上述方法可以提高数据传输效率。
Description
技术领域
本申请实施例涉及计算设备技术领域,尤其涉及一种数据传输方法。
背景技术
计算机集群中可以包括多台计算设备,多台计算设备之间可以相互传输数据。例如,计算机集群可以为人工智能(Artificial Intelligence,AI)训练集群。
目前,计算机集群中不同的计算设备之间可以通过网络传输数据。然而,若计算设备间传输的数据较大,网络的带宽资源不足就会影响数据传输速度,进而导致数据传输效率低。
发明内容
本申请实施例提供了一种数据传输方法,以解决数据传输效率较低的技术问题。
第一方面,本申请实施例提供了一种数据传输方法,应用于管理设备,所述方法包括:
接收第一计算设备发送的内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识;所述第一约束标识用于对所述第一计算设备和第二计算设备进行匹配;
根据所述内存分配请求,为所述第一计算设备分配目标内存,所述目标内存包括控制域内存和数据域内存;其中,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述第一计算设备向所述第二计算设备发送的数据,所述传输控制信息用于指示所述第一计算设备和所述第二计算设备的状态;
向所述第一计算设备发送内存分配响应并记录目标对应关系,所述内存分配响应包括所述目标内存的内存信息,所述目标对应关系为所述第一计算设备、所述目标内存的内存信息及所述第一约束标识的对应关系。
上述方案中,管理设备可以接收第一计算设备发送的内存分配请求,内存分配请求中包括第一约束标识;可以根据内存分配请求,为第一计算设备分配目标内存;可以向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息。上述方案中,管理设备可以为第一计算设备分配目标内存,以使第一计算设备的第一程序可以通过目标内存向第二计算设备的第二程序传输目标数据。通上述方案,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,所述方法还包括:
接收所述第二计算设备发送的数据读取请求,所述数据读取请求中包括第二约束标识;
在所述第二约束标识与对应关系中的第一约束标识相同的情况下,确认所述对应关系为目标对应关系,将所述目标对应关系中的目标内存的内存信息发送给所述第二计算设备。
上述方案中,管理设备可以接收第二计算设备发送的数据读取请求,在数据读取请求中的第二约束标识与对应关系中的第一约束标识相同的情况下,可以确认对应关系为目标对应关系;并可以将目标对应关系中的目标内存的内存信息发送给第二计算设备。通过上述方案,管理设备可以为第二计算设备分配目标内存,以使第二计算设备的第二程序可以从目标内存中读取目标数据。
一种可能的实现方式中,所述第一约束标识为目标应用的特定任务对应的特定字符串,所述目标内存为分配给所述第一计算设备的第一程序和第二计算设备的第二程序的内存,所述第一程序和所述第二程序用于完成所述目标应用的特定任务。
上述方案中,可以通过第一约束标识和第二约束标识对第一计算设备的第一程序和第二计算设备的第二程序进行配对,以使第一计算设备的第一程序可以通过目标内存与第二计算设备的第二程序传输数据。
第二方面,本申请实施例提供了一种数据传输方法,应用于第一计算设备,所述方法包括:
确定目标数据,所述目标数据为待向第二计算设备发送的数据;
向管理设备发送内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识,所述第一约束标识用于对所述第一计算设备和所述第二计算设备进行匹配;
接收所述管理设备发送的内存分配响应,所述内存分配响应包括所述目标内存的内存信息;所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述目标数据;
根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据。
上述方案中,第一计算设备可以确定目标数据;可以向管理设备发送内存分配请求;可以接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息;并可以根据控制域内存中的传输控制信息,通过数据域内存向第二计算设备传输目标数据。上述方案中,运行在第一计算设备的第一程序可以通过目标内存向运行在第二计算设备的第二程序传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,所述传输控制信息包括发端状态和收端状态;根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据,包括:
将所述发端状态更新为准备完成状态;
在确定所述控制域内存中的所述收端状态为准备完成状态时,在所述数据域内存中写入所述目标数据,所述第二计算设备用于在所述数据域内存中读取所述目标数据。
上述方案中,第一计算设备可以向目标内存中写入目标数据,以便于第二计算设备从目标内存中读取目标数据。
一种可能的实现方式中,所述目标数据中包括多个数据块;在所述数据域内存中写入所述目标数据,包括:
针对任意一个数据块,在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可写空间;
在确定所述数据域内存中存在可写空间时,在所述数据域内存的所述可写空间中写入所述数据块。
上述方案中,可以将目标数据划分预设大小的多个数据块,并可以以数据块为单位、向数据域内存中写入目标数据。这样,第一计算设备的第一程序的写操作和第二计算设备的第二程序的读操作可以同时进行,进一步提高了数据传输效率。
一种可能的实现方式中,在所述数据域内存的所述可写空间中写入所述数据块之后,还包括:
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、所述数据块的数据块索引、已向所述第二计算设备发送的数据大小、所述数据块的校验信息。
上述方案中,可以更新传输控制信息,以便于第二计算设备可以根据传输控制信息进行目标数据的读取。
一种可能的实现方式中,在所述数据域内存中写入所述目标数据之前,还包括:
执行如下至少一种操作:
在所述传输控制信息中更新内存标识;或,
在所述传输控制信息中更新传输模式,所述传输模式为发送模式或接收模式。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
一种可能的实现方式中,向管理设备发送内存分配请求之前,所述方法还包括:
根据所述目标数据的数据大小,确定所述内存容量,所述内存容量大于或等于所述目标数据的大小。
上述方案中,可以根据目标数据的数据大小确定内存容量,实现了确定目标内存的内存容量的目的。
第三方面,本申请实施例提供了一种数据传输方法,应用于第二计算设备,所述方法包括:
向管理设备发送数据读取请求,所述数据读取请求中包括第二约束标识,所述第二约束标识用于对所述第二计算设备和第一计算设备进行匹配;
接收所述管理设备发送的目标内存的内存信息,所述内存信息包括所述目标内存的内存位置和内存容量,所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储第一计算设备写入的数据;
根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据。
上述方案中,第二计算设备可以向管理设备发送数据读取请求,数据读取请求中包括第二约束标识;可以接收管理设备发送的目标内存的内存信息;可以根据传输控制信息,在数据域内存中读取第一计算设备在数据域内存中存储的目标数据。上述方法中,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,所述目标数据中包括多个数据块;根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据,包括:
在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可读的数据块;
在确定所述数据域内存中存在可读的数据块时,在所述数据域内存中读取所述数据块。
上述方案中,可以以数据块为单位、从数据域内存中读取目标数据。这样,第一计算设备的第一程序的写操作和第二计算设备的第二程序的读操作可以同时进行,进一步提高了数据传输效率。
一种可能的实现方式中,在所述数据域内存中读取所述数据块之后,还包括:
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、已从所述数据域内存读取的数据大小和读取失败的数据块索引。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
一种可能的实现方式中,接收所述管理设备发送的目标内存的内存信息之后,还包括:
在所述控制域内存中,将所述传输控制信息中的收端状态更新为准备完成状态。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
第四方面,本申请实施例提供了一种数据传输装置,应用于管理设备,所述装置包括接收模块、分配模块和发送模块,其中,
所述接收模块用于,接收第一计算设备发送的内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识;所述第一约束标识用于对所述第一计算设备和第二计算设备进行匹配;
所述分配模块用于,根据所述内存分配请求,为所述第一计算设备分配目标内存,所述目标内存包括控制域内存和数据域内存;其中,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述第一计算设备向所述第二计算设备发送的数据,所述传输控制信息用于指示所述第一计算设备和所述第二计算设备的状态;
所述发送模块用于,向所述第一计算设备发送内存分配响应并记录目标对应关系,所述内存分配响应包括所述目标内存的内存信息,所述目标对应关系为所述第一计算设备、所述目标内存的内存信息及所述第一约束标识的对应关系。
上述方案中,可以接收第一计算设备发送的内存分配请求,内存分配请求中包括第一约束标识;可以根据内存分配请求,为第一计算设备分配目标内存;可以向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息。上述方案中,可以为第一计算设备分配目标内存,以使第一计算设备的第一程序可以通过目标内存向第二计算设备的第二程序传输目标数据。通上述方案,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,
所述接收模块还用于,接收所述第二计算设备发送的数据读取请求,所述数据读取请求中包括第二约束标识;
所述分配模块还用于,在所述第二约束标识与对应关系中的第一约束标识相同的情况下,确认所述对应关系为目标对应关系;
所述发送模块还用于,将所述目标对应关系中的目标内存的内存信息发送给所述第二计算设备。
上述方案中,可以接收第二计算设备发送的数据读取请求,在数据读取请求中的第二约束标识与对应关系中的第一约束标识相同的情况下,可以确认对应关系为目标对应关系;并可以将目标对应关系中的目标内存的内存信息发送给第二计算设备。通过上述方案,可以为第二计算设备分配目标内存,以使第二计算设备的第二程序可以从目标内存中读取目标数据。
一种可能的实现方式中,所述第一约束标识为目标应用的特定任务对应的特定字符串,所述目标内存为分配给所述第一计算设备的第一程序和第二计算设备的第二程序的内存,所述第一程序和所述第二程序用于完成所述目标应用的特定任务。
上述方案中,可以通过第一约束标识和第二约束标识对第一计算设备的第一程序和第二计算设备的第二程序进行配对,以使第一计算设备的第一程序可以通过目标内存与第二计算设备的第二程序传输数据。
第五方面,本申请实施例提供了一种数据传输装置,应用于第一计算设备,所述装置包括确定模块、发送模块、接收模块和传输模块,其中,
所述确定模块用于,确定目标数据,所述目标数据为待向第二计算设备发送的数据;
所述发送模块用于,向管理设备发送内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识,所述第一约束标识用于对所述第一计算设备和所述第二计算设备进行匹配;
所述接收模块用于,接收所述管理设备发送的内存分配响应,所述内存分配响应包括所述目标内存的内存信息;所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述目标数据;
所述传输模块用于,根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据。
上述方案中,可以确定目标数据;可以向管理设备发送内存分配请求;可以接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息;并可以根据控制域内存中的传输控制信息,通过数据域内存向第二计算设备传输目标数据。上述方案中,运行在第一计算设备的第一程序可以通过目标内存向运行在第二计算设备的第二程序传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,所述传输控制信息包括发端状态和收端状态;所述传输模块具体用于,
将所述发端状态更新为准备完成状态;
在确定所述控制域内存中的所述收端状态为准备完成状态时,在所述数据域内存中写入所述目标数据,所述第二计算设备用于在所述数据域内存中读取所述目标数据。
上述方案中,可以向目标内存中写入目标数据,以便于第二计算设备从目标内存中读取目标数据。
一种可能的实现方式中,所述目标数据中包括多个数据块;所述传输模块具体用于,
针对任意一个数据块,在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可写空间;
在确定所述数据域内存中存在可写空间时,在所述数据域内存的所述可写空间中写入所述数据块。
上述方案中,可以将目标数据划分预设大小的多个数据块,并可以以数据块为单位、向数据域内存中写入目标数据。这样,第一计算设备的第一程序的写操作和第二计算设备的第二程序的读操作可以同时进行,进一步提高了数据传输效率。
一种可能的实现方式中,在所述数据域内存的所述可写空间中写入所述数据块之后,所述传输模块还用于,
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、所述数据块的数据块索引、已向所述第二计算设备发送的数据大小、所述数据块的校验信息。
上述方案中,可以更新传输控制信息,以便于第二计算设备可以根据传输控制信息进行目标数据的读取。
一种可能的实现方式中,在所述数据域内存中写入所述目标数据之前,所述传输模块还用于,
执行如下至少一种操作:
在所述传输控制信息中更新内存标识;或,
在所述传输控制信息中更新传输模式,所述传输模式为发送模式或接收模式。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
一种可能的实现方式中,所述确定模块还用于,
根据所述目标数据的数据大小,确定所述内存容量,所述内存容量大于或等于所述目标数据的大小。
上述方案中,可以根据目标数据的数据大小确定内存容量,实现了确定目标内存的内存容量的目的。
第六方面,本申请实施例提供了一种数据传输装置,应用于第二计算设备,所述装置包括发送模块、接收模块和读取模块,其中,
所述发送模块用于,向管理设备发送数据读取请求,所述数据读取请求中包括第二约束标识,所述第二约束标识用于对所述第二计算设备和第一计算设备进行匹配;
所述接收模块用于,接收所述管理设备发送的目标内存的内存信息,所述内存信息包括所述目标内存的内存位置和内存容量,所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储第一计算设备写入的数据;
所述读取模块用于,根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据。
上述方案中,可以向管理设备发送数据读取请求,数据读取请求中包括第二约束标识;可以接收管理设备发送的目标内存的内存信息;可以根据传输控制信息,在数据域内存中读取第一计算设备在数据域内存中存储的目标数据。上述方法中,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
一种可能的实现方式中,所述目标数据中包括多个数据块;所述读取模块具体用于,
在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可读的数据块;
在确定所述数据域内存中存在可读的数据块时,在所述数据域内存中读取所述数据块。
上述方案中,可以以数据块为单位、从数据域内存中读取目标数据。这样,第一计算设备的第一程序的写操作和第二计算设备的第二程序的读操作可以同时进行,进一步提高了数据传输效率。
一种可能的实现方式中,在所述数据域内存中读取所述数据块之后,所述读取模块还用于,
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、已从所述数据域内存读取的数据大小和读取失败的数据块索引。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
一种可能的实现方式中,接收所述管理设备发送的目标内存的内存信息之后,所述读取模块还用于,
在所述控制域内存中,将所述传输控制信息中的收端状态更新为准备完成状态。
上述方案中,可以更新传输控制信息,以便于根据传输控制信息进行目标数据的传输。
第七方面,本申请实施例提供一种管理设备,管理设备包括存储器和处理器;
存储器和处理器耦合;
存储器用于存储程序指令;
处理器用于调用程序指令,以使管理设备执行如第一方面以及任一可能实现方式中所涉及的数据传输方法。
第八方面,本申请实施例提供一种计算设备,计算设备包括存储器和处理器;
存储器和处理器耦合;
存储器用于存储程序指令;
处理器用于调用程序指令,以使计算设备执行如第二方面以及任一可能实现方式中所涉及的数据传输方法。
第九方面,本申请实施例提供一种计算设备,计算设备包括存储器和处理器;
存储器和处理器耦合;
存储器用于存储程序指令;
处理器用于调用程序指令,以使计算设备执行如第三方面以及任一可能实现方式中所涉及的数据传输方法。
第十方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被电子设备执行时用于实现如第一方面以及任一可能实现方式中所涉及的数据传输方法。
第十一方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被第一计算设备时用于实现如第二方面以及任一可能实现方式中所涉及的数据传输方法。
第十二方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被第三计算设备执行时用于实现如第三方面以及任一可能实现方式中所涉及的数据传输方法。
第十三方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被电子设备执行时实现第一方面以及任一可能实现方式中所涉及的数据传输方法。
第十四方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被第一计算设备执行时实现第二方面以及任一可能实现方式中所涉及的数据传输方法。
第十五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被第二计算设备执行时实现第三方面以及任一可能实现方式中所涉及的数据传输方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种计算机集群的架构示意图;
图2为本申请实施例提供的一种集群中计算设备的连接示意图;
图3为本申请实施例提供的另一种计算机集群的架构示意图;
图4为本申请实施例提供的一种计算设备基于CXL协议从内存设备中读写数据的速度示意图;
图5为本申请实施例提供的一种数据传输方法的流程示意图;
图6A为本申请实施例提供的一种目标内存的位置示意图;
图6B为本申请实施例提供的另一种目标内存的位置示意图;
图6C为本申请实施例提供的又一种目标内存的位置示意图;
图7为本申请实施例提供的另一种数据传输方法的流程示意图;
图8为本申请实施例提供的一种目标内存示意图;
图9为本申请实施例提供的另一种目标内存示意图;
图10为本申请实施例提供的一种数据读写示意图;
图11为本申请实施例提供的又一种数据传输方法的流程示意图;
图12为本申请实施例提供的又一种数据传输方法的流程示意图;
图13A为本申请实施例提供的又一种数据传输方法的流程示意图;
图13B为本申请实施例提供的又一种数据传输方法的流程示意图;
图14为本申请实施例提供的又一种数据传输方法的流程示意图;
图15为本申请实施例提供的一种数据传输装置的结构示意图;
图16为本申请实施例提供的另一种数据传输装置的结构示意图;
图17为本申请实施例提供的又一种数据传输装置的结构示意图;
图18为本申请实施例提供的一种管理设备的结构示意图;
图19为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请实施例的一些方面相一致的装置和方法的例子。
为便于理解,首先对本申请实施例涉及的技术术语进行解释说明。
计算扩展连接(compute express link,CXL)技术:一种高速、高容量中央处理器(central processing unit,CPU)到设备和CPU到内存连接的开放标准,CXL技术专为高性能数据中心计算机而设计。
单逻辑设备(single logical device,SLD):只有一个逻辑设备(logicaldevice,LD)的CXL器件。
多逻辑设备(multi-logical device,MLD):包含多个逻辑设备的CXL器件。MLD是CXL协议中类型3(type3)的池化组件。
多头逻辑设备(multi-headed SLD,MH-SLD):有多个端口的SLD。MH-SLD可以通过多个端口,同时与多个设备物理连接。其中,设备可以为计算设备或CXL交换(CXL Switch)设备。
结构管理器(fabric manager,FM):用于统一识别和管理集群中所有CXL内存设备的独立模块。FM可以对CXL内存设备的内存空间进行分配,可以提供CXL内存设备的内存空间的归属修改功能。FM可以与计算设备上的本地CXL空间管理程序(local CXL spacemanagement daemon,LMD)进行交互,以为计算设备分配CXL内存设备的内存空间、或者回收计算设备对应的CXL内存设备的内存空间。FM可以以多种形式存在。例如,FM可以为运行在计算设备的基板管理控制器(baseboard management controller,BMC)***上的软件、可以为运行在计算设备的操作***(operating system,OS)上的软件、或者可以为CXL交换设备中的嵌入式固件等。其中,CXL交换设备例如可以为CXL交换机,CXL交换机可以包括CXL交换(CXL Switch)芯片。
LMD:指计算设备上运行的一个用户态程序。LMD可以在计算设备启动时启动。LMD可以向FM申请CXL内存设备的内存空间,并可以对申请到的内存空间进行本地管理。LMD可向计算设备的应用程序提供内存空间访问和使用,也可将内存空间转化为操作***的非统一内存访问(non uniform memory access,NUMA)内存空间,转交给操作***内核管理。
虚拟逻辑设备(virtual logical device,VLD):一个逻辑设备的内存空间可以分割为多个内存空间片段。FM可以将每个内存空间片段作为一个VLD进行管理,每个VLD可以有相应的VLD标识(identity document,ID)。FM可以根据VLD ID对VLD片段进行编号管理。
下面结合图1,对本申请实施例涉及的应用场景进行说明。
图1为本申请实施例提供的一种计算机集群的架构示意图。如图1所示,计算机集群可以包括多个计算设备,多个计算设备例如可以为计算设备1、计算设备2、计算设备3和计算设备4。计算设备1、计算设备2、计算设备3和计算设备4之间可以通过有线或者无线的方式连接。
计算机集群中任意一个计算设备可以与其余的计算设备进行数据传输。例如,计算设备1可以与计算设备2、计算设备3或计算设备4进行数据传输。
数据可以为,计算设备上部署的用户应用程序运行时所产生的数据。
本申请实施例对计算机集群的功能不做限定。例如,计算机集群可以为AI训练集群、或者也可以为其他功能集群。
计算设备可以为,可以进行数据读写操作的电子设备。例如,计算设备可以为服务器、膝上型计算机、台式计算机、平板电脑、单片机、或人工智能设备等。服务器例如可以是图形处理器(graphics processing unit,GPU)服务器或AI服务器等。
目前,计算机集群中不同的计算设备之间可以通过网络进行数据传输。其中,网络可以为传统互联网或者高速网络(infiniband,IB)。
如图2所示,图2为本申请实施例提供的一种集群中计算设备的连接示意图。请参见图2,计算机集群可以包括计算设备1、计算设备2、计算设备3、计算设备4和网络链路。网络链路可以为传统的互联网链路,也可以为IB网络链路。
计算设备1、计算设备2、计算设备3和计算设备4均可以与网络链路连接。也就是说,计算设备1、计算设备2、计算设备3和计算设备4可以通过网络链路连接。
针对计算机集群中任意一个计算设备,计算设备可以通过网络链路、与其余计算设备进行数据传输。例如,计算设备1可以通过网络链路向计算设备2、计算设备3或者计算设备4传输数据。
然而,上述数据传输过程中,若计算设备间传输的数据较大,网络的带宽资源不足就会影响数据传输速度,进而导致数据传输效率较低。
有鉴于此,本申请实施例提供一种计算机集群及应用于该计算机集群的数据传输方法,以解决计算设备之间数据传输效率低的问题。
下面,结合图3,对本申请实施例提供的计算机集群的架构进行说明。图3为本申请实施例提供的另一种计算机集群的架构示意图。请参见图3,计算机集群可以包括管理设备,计算设备1、计算设备2、计算设备3、……和计算设备N,存储设备,以及CXL链路。N为大于或等于2的整数。CXL内存设备的数量可以为一个或多个,本实施例对此不做限制。
各计算设备、管理设备、以及存储设备均可以连接至CXL链路,也就是说,各计算设备、管理设备、以及存储设备可以通过CXL链路连接。
上述计算机集群可以为,需要进行大数据传输的计算机集群。例如,计算机集群可以为AI训练集群、分布式数据库、或者其他类型的集群。
计算设备可以为支持CXL协议的服务器,例如,服务器可以为GPU服务器或AI服务器等;或者,计算设备也可以为支持CXL协议且具备计算机属性的电子设备,例如,电子设备可以为现场可编程逻辑门阵列(field programmable gate array,FPGA)、小型机(minicomputer)、或微型计算机(microcomputer)等。
一种实施方式中,CXL链路可以为一个或多个CXL交换设备。
CXL交换设备为可以包括一个或多个设备接口,和/或,一个或多个存储设备接口。针对任意一个设备接口,CXL交换设备可以通过设备接口与一个计算设备、或一个CXL交换设备连接。针对任意一个存储设备接口,CXL交换设备可以通过存储设备接口与一个存储设备连接。
若CXL链路为CXL交换设备,存储设备可以为SLD、或者MLD等。
一种实施方式中,CXL链路为多头扩展芯片,多头扩展芯片包括多个设备接口,每个设备接口与一个计算设备连接。若CXL链路为多头扩展芯片,存储设备可以是内存条或动态随机存取存储器(dynamic random access memory,DRAM),存储设备和多头扩展芯片可以构成MH-SLD。
管理设备可以为,运行有FM的电子设备。例如,管理设备可以为ARM(AdvancedRISC(Reduced Instruction Set Computer,精简指令集计算机)Machine)处理器、基板管理控制器(baseboard management controller,BMC)或其他处理器,FM运行在该处理器上。
在一示例中,管理设备可以独立于计算设备和存储设备。如图3所示,管理设备可以为,独立于计算设备和存储设备的电子设备。
在另一示例中,FM也可以运行在计算机集群中任意一个计算设备、任意一个存储设备上或者任意一个CXL交换设备上。若FM运行在任意一个计算设备上,则该计算设备可以为管理设备。若FM运行在任意一个存储设备上,则该存储设备可以为管理设备。若FM运行在任意一个CXL交换设备上,则该CXL交换设备可以为管理设备。
需要说明的是,本申请实施例对FM的具体运行位置不做限定。图3仅示例性对管理设备进行说明,并不构成对管理设备的限制。
上述计算机集群中,任意一个计算设备中的程序可以与其余计算设备中的程序进行数据传输,或者,同一计算设备中的两个程序之间可以进行数据传输。针对任意两个需要进行数据传输的程序,管理设备可以在存储设备中,为两个程序分配内存。分配得到的内存可以作为,两个程序的共享内存。也就是说,两个程序均可以访问分配得到的内存。两个程序中的一个程序可以向分配得到的内存中写入数据,两个程序中的另一个程序可以从分配得到的内存中读出数据。这样,两个程序可以通过分配得到的内存进行数据传输。对于较大的数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
另外,计算设备基于CXL协议从内存设备中写数据和读数据的速度均比较快。如图4所示,图4为本申请实施例提供的一种计算设备基于CXL协议从内存设备中读写数据的速度示意图。请参见图4,图4的横坐标表示对数据的操作方式,对数据的操作方式可以为读和写;图4的纵坐标表示对数据的操作速度。
如图4所示,基于CXL协议从内存设备中读数据的速度可以达到23.8GB/S、写数据的速度可以达到12GB/S。目前,通过网络读写数据的速度约为3GB/S。由此可见,基于CXL协议从内存设备中读写数据的速度远高于通过网络读写数据的速度。这样,可以进一步提高数据传输效率。
需要说明的是,图4仅示例性示出基于CXL协议从内存设备中读写数据时,可以达到的最低读写速度。实际实施过程中,基于CXL协议从内存设备中读数据的速度、以及写数据的速度可以更快。图4并不构成对基于CXL协议从内存设备中读数据的速度和写数据的速度的限制。
下面以具体的实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图5为本申请实施例提供的一种数据传输方法的流程示意图。该方法的执行主体可以为第一计算设备,也可以为设置在第一计算设备中的处理芯片。第一计算设备可以为,上述任一实施例所示的计算机集群中的任意一台计算设备。下面仅以执行主体为第一计算设备为例进行说明。请参见图5,该方法可以包括:
S501、确定目标数据。
具体的,第一计算设备的第一程序确定目标数据,第一计算设备上部署有第一程序。第一程序可以为,目标应用中包括的程序。
目标应用可以为,用于实现一个或多个任务的用户应用程序(application,APP)。
目标应用的一部分程序(即第一程序)部署在第一计算设备上,目标应用的另一部分程序(下文称为第二程序)部署在第二计算设备上。第一程序和第二程序可以用于完成目标应用的特定任务(目标应用可以实现的一个或多个任务包括特定任务),第一计算设备和第二计算设备可以为同一计算设备,或者,第一计算设备和第二计算设备可以为不同的计算设备。
目标数据可以为,第一程序运行时产生的数据。
本实施例中,第一程序可以向第二程序传输目标数据。也就是说,第一计算设备上的第一程序可以向第二计算设备上的第二程序传输目标数据,第一计算设备和第二计算设备可以为同一计算设备,或者,第一计算设备和第二计算设备可以为不同的计算设备。
第一计算设备可以为,上述任一实施例所示的计算机集群中的任意一台计算设备。
S502、向管理设备发送内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识。
管理设备可以为,上述任一实施例所示的计算机集群中的管理设备。
内存分配请求可以用于,请求管理设备为第一计算设备分配目标内存。具体的,内存分配请求可以用于,请求管理设备为第一计算设备的第一程序分配目标内存。
第一约束标识可以为,目标应用的特定任务对应的特定字符串。第一约束标识可以用于对第一计算设备和第二计算设备进行匹配。
本实施例中,开发人员在目标应用的开发阶段,可以为目标应用的特定任务指定特定字符串;或者,第一计算设备的第一程序可以根据预设规则,为目标应用的特定任务生成特定字符串。例如,特定字符串可以为目标应用的特定任务对应的令牌(Token)、键值(Key)、或主题(Topic)等。
本实施例中,第一计算设备的第一程序可以确定目标数据,根据目标数据的大小确定目标内存容量,并向第一计算设备的第一LMD发送初始内存分配请求。初始内存分配请求可以包括目标内存的内存容量和第一约束标识。相应的,第一计算设备的第一LMD可以接收第一计算设备的第一程序发送的初始内存分配请求。第一计算设备的第一LMD基于初始内存分配请求,可以向管理设备发送内存分配请求,以请求管理设备根据内存分配请求为第一计算设备的第一程序分配目标内存。
可选的,在其他实施例中,第一计算设备的第一程序可以确定目标数据的数据大小,向第一计算设备的第一LMD发送初始内存分配请求。初始内存分配请求可以包括目标数据的数据大小和第一约束标识。第一计算设备的第一LMD基于初始内存分配请求,可以向管理设备发送内存分配请求,内存分配请求中可以包括目标数据的数据大小和第一约束标识。管理设备可以根据目标数据的数据大小确定目标内存容量。
第一LMD可以为,第一计算设备上运行的LMD。
S503、接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息,目标内存包括控制域内存和数据域内存。
目标内存可以为,上述任一实施例所示的计算机集群中存储设备上的存储空间。
控制域内存用于存储传输控制信息。
传输控制信息可以包括第一计算设备的状态、以及第二计算设备的状态等。例如,第一计算设备的状态可以为准备完成状态,第二计算设备的状态也可以为准备完成状态。若第一计算设备的状态为准备完成状态,则可以表征第一程序已经准备好进行数据传输了。
数据域内存用于存储目标数据。
目标内存的内存信息可以包括,控制域内存的地址和数据域内存的地址。
本实施例中,管理设备接收内存分配请求后,可以根据内存分配请求为第一计算设备分配目标内存,并可以向第一计算设备发送内存分配响应。
管理设备上可以运行FM,管理设备可以通过FM向第一计算设备发送内存分配响应。
具体的,管理设备可以通过FM,向第一计算设备的第一LMD发送内存分配响应。第一计算设备的第一LMD可以向第一计算设备的第一程序发送内存分配响应中包括的控制域内存的地址和数据域内存的地址。
需要说明的是,内存分配响应中包括的控制域内存的地址可以为,控制域内存在存储设备中的物理地址;内存分配响应中包括的数据域内存的地址可以为,数据域内存在存储设备中的物理地址。
可选的,若第一计算设备无法识别存储设备中内存的物理地址,内存分配响应中还可以包括第一地址映射关系。第一地址映射关系可以用于,将存储设备中内存的物理地址映射为第一计算设备可以识别的地址。
本实施例中,若内存分配响应中包括第一地址映射关系,第一LMD接收内存分配响应后,可以根据第一地址映射关系、以及控制域内存的地址和数据域内存的地址,将控制域内存的地址转换为第一计算设备可以识别的控制域内存地址、并将数据域内存的地址转换为第一计算设备可以识别的数据域内存地址,并可以向第一程序发送转换后的控制域内存地址和数据域内存地址。
本实施例中,目标内存可以为一个存储设备上的存储空间,或者,目标内存也可以为多个存储设备上的存储空间。针对任意一个存储设备上的目标内存,目标内存可以位于同一VLD,或者目标内存也可以位于不同VLD。
具体而言,目标内存可以为一个或多个存储器上的存储空间、一个或多个SLD上的存储空间、或者一个或多个MLD上的存储空间等。
下面,结合图6A-6C,示例性对目标内存的位置进行说明。
图6A为本申请实施例提供的一种目标内存的位置示意图。请参见图6A,计算设备1、计算设备2、计算设备3、……以及计算设备N,可以通过CXL交换设备与SLD连接。
SLD中可以包括目标内存。也就是说,目标内存可以位于一个SLD中。
可选的,目标内存也可以位于多个SLD中,本实施例对此不做限定。
图6B为本申请实施例提供的另一种目标内存的位置示意图。请参见图6B,计算设备1、计算设备2、计算设备3、……以及计算设备N,可以通过CXL交换设备与MLD连接。
MLD中可以包括目标内存。也就是说,目标内存可以位于一个MLD中。
可选的,目标内存也可以位于多个MLD中,本实施例对此不做限定。
图6C为本申请实施例提供的又一种目标内存的位置示意图。请参见图6C,计算设备1、计算设备2、计算设备3、……以及计算设备N,可以通过CXL交换设备分别与SLD和MLD连接。
SLD中可以包括目标内存,MLD中也可以包括目标内存。也就是说,目标内存可以同时位于SLD和MLD中。
可选的,目标内存也可以同时位于多个SLD和多个MLD中,本实施例对此不做限定。
S504、根据控制域内存中的传输控制信息,通过数据域内存向第二计算设备传输目标数据。
具体的,第一计算设备的第一程序可以根据控制域内存中的传输控制信息,通过数据域内存向第二计算设备的第二程序传输目标数据。
传输控制信息包括发端状态和收端状态。
发端状态可以为,数据发送端设备的状态。数据发送端设备可以在控制域内存中写入发端状态。例如,发端状态可以为准备完成状态。
本实施例中,发端状态可以为第一计算设备的状态。第一计算设备可以在控制域内存中写入发端状态。
收端状态可以为,数据接收端设备的状态。数据接收端设备可以在控制域内存中写入收端状态。例如,收端状态可以为准备完成状态。
本实施例中,收端状态可以为第二计算设备的状态。第二计算设备可以在控制域内存中写入收端状态。
本实施例中,管理设备分配目标内存后,第一计算设备可以在控制域内存中将发端状态更新为准备完成状态,第二计算设备可以在控制域内存中将收端状态更新为准备完成状态。
若控制域内存中的发端状态为准备完成状态,且收端状态为准备完成状态,则第一计算设备的第一程序可以通过数据域内存向第二计算设备的第二程序传输目标数据。也就是说,运行在第一计算设备的第一程序可以向数据域内存中写入目标数据,运行在第二计算设备的第二程序可以从数据域内存中读取目标数据,以实现传输目标数据的目的。
本实施例提供的数据传输方法中,第一计算设备可以确定目标数据;可以向管理设备发送内存分配请求;可以接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息;并可以根据控制域内存中的传输控制信息,通过数据域内存向第二计算设备传输目标数据。上述方法中,运行在第一计算设备的第一程序可以通过目标内存向运行在第二计算设备的第二程序传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
在上述任一实施例的基础上,下面结合图7,对本申请实施例提供的数据传输方法进行进一步说明。
图7为本申请实施例提供的另一种数据传输方法的流程示意图。该方法的执行主体可以为第一计算设备,也可以为设置在第一计算设备中的处理芯片。第一计算设备可以为,上述任一实施例所示的计算机集群中的任意一台计算设备。下面仅以执行主体为第一计算设备为例进行说明。请参见图7,该方法可以包括:
S701、确定目标数据。
需要说明的是,S701的具体实现方式可以参见S501,此处不再赘述。
S702、根据目标数据的数据大小,确定目标内存的内存容量。
具体的,第一计算设备的第一程序根据目标数据的数据大小,确定内存容量。
内存容量大于或等于数据大小。
目标内存包括控制域内存和数据域内存,也就是说,内存容量可以为控制域内存容量、与数据域内存容量之和。
需要说明的是,控制域内存容量可以为预设容量。第一计算设备的第一程序可以将预设容量与目标数据的数据大小之和,确定为内存容量。
下面,结合图8,对内存容量进行说明。
图8为本申请实施例提供的一种目标内存示意图。请参见图8,目标内存可以包括控制域内存和数据域内存。
由图8可知,目标内存的内存容量可以为控制域内存容量、以及数据域内存容量之和。
S703、向管理设备发送内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识。
S704、接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息,目标内存包括控制域内存和数据域内存。
需要说明的是,S703-S704的具体实现方式可以参见S502-S503,此处不再赘述。
S705、将发端状态更新为准备完成状态。
具体的,第一计算设备的第一程序将发端状态更新为准备完成状态。
本实施例中,第一程序接收第一LMD发送的控制域内存的地址和数据域内存的地址后,第一程序可以根据控制域内存的地址确定控制域内存,并可以在控制域内存中将发端状态更新为准备完成状态,以表征第一计算设备的第一程序已准备完成、并可以用于发送目标数据。
需要说明的是,控制域内存可以包括发端控制域内存和收端控制域内存。传输控制信息可以包括发端传输控制信息和收端传输控制信息。数据发送端设备可以在发端控制域内存中写入发端传输控制信息,数据接收端设备可以在收端控制域内存中写入收端传输控制信息。
本实施例中,第一计算设备的第一程序可以在发端控制域内存中写入发端传输控制信息。例如,发端控制信息可以包括发端状态。
下面,结合图9,对发端控制域内存和收端控制域内存进行说明。
图9为本申请实施例提供的另一种目标内存示意图。请参见图9,目标内存可以包括控制域内存和数据域内存。控制域内存可以包括发端控制域内存和收端控制域内存。
本实施例中,传输控制信息还可以包括内存标识、以及传输模式等。内存标识可以为数据域内存的地址,传输模式可以为发送模式或接收模式。
传输模式可以用于表征第一程序的传输模式、或者第二程序的传输模式。例如,第一程序的传输模式可以为发送模式,第二程序的传输模式可以为接收模式。
第一程序将发端状态更新为准备完成状态之前,还可以执行如下至少一种操作:
在传输控制信息中更新内存标识;或,
在传输控制信息中更新传输模式,传输模式为发送模式或接收模式。
具体而言,第一程序将发端状态更新为准备完成状态之前,还可以在发端控制域内存中将内存标识更新为数据域内存的地址,并可以在发端控制域内存中将传输模式更新为发送模式。
可选的,传输控制信息还可以包括心跳信息。进一步的,发端传输控制信息可以包括数据发送端设备的心跳信息,收端传输控制信息可以包括数据接收端设备的心跳信息。
本实施例中,第一程序可以以固定的时间间隔,在发端控制域内存中更新第一计算设备的心跳信息;第二程序可以以固定的时间间隔,在收端控制域内存中更新第二计算设备的心跳信息。
下面,结合表1,对第一程序在发端控制域内存中写入的发端传输控制信息进行说明。
表1
发端传输控制信息 | 说明 |
心跳信息 | 最新更新时刻 |
内存标识 | 数据域内存的地址 |
传输模式 | 发送模式 |
发端状态 | 准备完成状态 |
如表1所示,第一程序可以以固定的时间间隔,在发端控制域内存中更新第一计算设备记录心跳信息的最新更新时刻,以表征第一计算设备正常运行。第一程序可以在发端控制域内存中将内存标识更新为数据域内存的地址,以表征可以通过数据域内存传输目标数据。第一程序可以在发端控制域内存中将传输模式更新为发送模式,以表征第一程序用于发送目标数据。第一程序可以在发端控制域内存中将发端状态更新为准备完成状态,以表征第一程序已准备完成、并可以用于发送目标数据。
需要说明的是,表1仅示例性对发端传输控制信息进行说明,并不构成对发端传输控制信息的限制,发端传输控制信息还可以包括更多或更少的信息。
S706、在确定控制域内存中的收端状态为准备完成状态时,在数据域内存中写入目标数据。
具体的,第一计算设备的第一程序在确定控制域内存中的收端状态为准备完成状态时,可以在数据域内存中写入目标数据。
本实施例中,第二计算设备的第二程序可以在收端控制域内存中写入收端传输控制信息。例如,收端控制信息可以包括收端状态。
若第二计算设备的第二程序在收端控制域内存中将收端状态更新为准备完成状态,则说明第二计算设备的第二程序已准备完成、并可以用于读取目标数据。
需要说明的,目标内存可以为第一计算设备的第一程序和第二计算设备的第二程序的共享内存。若第二计算设备的第二程序在收端控制域内存中将收端状态更新为准备完成状态,第一计算设备的第一程序可以通过访问收端控制域内存的方法,确定收端状态为准备完成状态。
本实施例中,第一计算设备的第一程序可以将目标数据划分预设大小的多个数据块,并可以以数据块为单位、通过多次写操作向数据域内存中写入目标数据。相应的,第二计算设备的第二程序可以以数据块为单位,通过多次读操作从数据域内存中读取目标数据。这样,第一计算设备的第一程序的写操作和第二计算设备的第二程序的读操作可以同时进行,进一步提高了数据传输效率。
下面,以数据域内存容量为1024MB,预设大小为256MB为例。结合图10,对目标数据的传输过程进行说明。
图10为本申请实施例提供的一种数据读写示意图。请参见图10,假设目标数据的数据大小为1024MB,则第一计算设备的第一程序可以将目标数据划分为4个数据块。4个数据块例如可以为数据块1、数据块2、数据块3和数据块4。
第一计算设备的第一程序可以依次向数据域内存中写入数据块1、数据块2、数据块3和数据块4。如图10所示,第一计算设备的第一程序可以在t1时刻完成数据块1的写操作、可以在t2时刻完成数据块2的写操作、可以在t3时刻完成数据块3的写操作、并可以在t4时刻完成数据块4的写操作。
第二计算设备的第二程序可以依次从数据域内存中读取数据块1、数据块2、数据块3和数据块4。如图10所示,第二计算设备的第二程序可以在t1时刻开始读取数据块1、可以在t2时刻开始读取数据块2、可以在t3时刻开始读取数据块3、并可以在t4时刻开始读取数据块4。
由图10可知,第一计算设备的第一程序向数据域内存中写入数据块时,第二计算设备的第二程序也可以从数据域内存中读取数据块。这样,第二计算设备的第二程序无需等待第一计算设备的第一程序将目标数据写完后读取目标数据,而可以在第一计算设备的第一程序进行写操作的同时进行读操作,进一步提高了数据传输效率。
本实施例中,第一计算设备的第一程序向数据域内存写入每个数据块的方法相同。下面,以任意一个数据块为例,对第一计算设备的第一程序在数据域内存中写入数据块的过程进行说明。
针对任意一个数据块,第一计算设备的第一程序可以在传输控制信息中确定读指针位置和写指针位置;根据读指针位置和写指针位置,判断数据域内存中是否存在可写空间;在确定数据域内存中存在可写空间时,在数据域内存的可写空间中写入数据块。
本实施例中,可以根据预设大小将数据域内存划分为多个内存空间,每个内存空间可以用于存储一个数据块。可以对多个内存空间进行排序得到第一顺序,第一计算设备的第一程序可以按照第一顺序依次向多个内存空间写入数据块,第二计算设备的第二程序可以按照第一顺序依次从多个内存空间读取数据块。
写指针位置可以用于表征,第一计算设备的第一程序完成写操作的存储空间的位置。例如,第一计算设备的第一程序未开始向数据域内存写数据,则写指针位置可以为0;第一计算设备的第一程序完成了向第1个存储空间的写操作,则写指针位置可以为1;第一计算设备的第一程序完成了向第2个存储空间的写操作,则写指针位置可以为2;第一计算设备的第一程序完成了向第3个存储空间的写操作,则写指针位置可以为3;第一计算设备的第一程序完成了向第4个存储空间的写操作,则写指针位置可以为4。
读指针位置可以用于表征,第二计算设备的第二程序完成读操作的存储空间的位置。例如,第二计算设备的第二程序未开始从数据域内存读数据,则读指针位置可以为0;第二计算设备的第二程序完成了对第1个存储空间的读操作,则读指针位置可以为1;第二计算设备的第二程序完成了对第2个存储空间的读操作,则读指针位置可以为2;第二计算设备的第二程序完成了对第3个存储空间的读操作,则读指针位置可以为3;第二计算设备的第二程序完成了对第4个存储空间的读操作,则读指针位置可以为4。
需要说明的是,写指针位置可以存储于发端控制域内存,且第一计算设备的第一程序可以对写指针位置进行更新。读指针位置可以存储于收端控制域内存,且第二计算设备的第二程序可以对读指针位置进行更新。具体而言,第一计算设备的第一程序每写入一个数据块后,可以更新写指针位置;第二计算设备的第二程序每读取一个数据块后,可以更新读指针位置。
可选的,第一计算设备的第一程序向数据域内存中写入数据块之前,还可以对数据块进行校验得到校验码,第二计算设备的第二程序可以根据校验码验证读取的数据块是否有误。本实施例对校验码的形式不做限定,例如校验码可以为循环冗余校验码(cyclicredundancy check,CRC)。
本实施例中,第一计算设备的第一程序在数据域内存的可写空间中写入数据块之后,还可以更新控制域内存中的如下至少一种传输控制信息:写指针位置、数据块的数据块索引、已向第二计算设备发送的数据大小、数据块的校验信息。
数据块的索引可以包括,数据块的编号。第二计算设备的第二程序可以根据数据块的数据块索引,对多个数据块进行组合处理,以得到目标数据。
数据块的校验信息可以包括,数据块的校验码等。
本实施例提供的数据传输方法中,第一计算设备可以确定目标数据;可以根据目标数据的数据大小,确定目标内存容量;可以向管理设备发送内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识;可以接收管理设备发送的内存分配响应,内存分配响应包括目标内存的内存信息;可以将发端状态更新为准备完成状态;可以在确定控制域内存中的收端状态为准备完成状态时,在数据域内存中写入目标数据。上述方法中,第一计算设备的第一程序可以通过目标内存向第二计算设备的第二程序传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
在上述任一实施例的基础上,第二计算设备可以从目标内存中读取目标数据。下面,结合图11,对第二计算设备读取目标数据的过程进行说明。
图11为本申请实施例提供的又一种数据传输方法的流程示意图。该方法的执行主体可以为第二计算设备,也可以为设置在第二计算设备中的处理芯片。下面仅以执行主体为第二计算设备为例进行说明。请参见图11,该方法可以包括:
S1101、向管理设备发送数据读取请求,数据读取请求中包括第二约束标识。
数据读取请求可以用于,请求管理设备为第二计算设备分配用于读取数据的目标内存。具体的,数据读取请求可以用于,请求管理设备为第二计算设备的第二程序分配用于读取数据的目标内存。
第二约束标识可以为,目标应用的特定任务对应的特定字符串。第二约束标识可以用于对第二计算设备和第一计算设备进行匹配。
本实施例中,开发人员在目标应用的开发阶段,可以为目标应用的特定任务指定特定字符串;或者,第二计算设备的第二程序可以根据预设规则,为目标应用的特定任务生成特定字符串。例如,特定字符串可以为目标应用的特定任务对应的令牌(Token)、键值(Key)、或主题(Topic)等。
本实施例中,第二计算设备的第二程序可以根据数据读取需求确定第二约束标识,并向第二计算设备的第二LMD发送初始数据读取请求。初始数据读取请求可以包括第二约束标识。相应的,第二计算设备的第二LMD可以接收第二计算设备的第二程序发送的初始数据读取请求。第二计算设备的第二LMD可以基于初始数据读取请求,向管理设备发送数据读取请求,以请求管理设备根据数据读取请求为第二计算设备的第二程序分配目标内存。
第二LMD可以为,第二计算设备上运行的LMD。
第二计算设备可以为上述任一实施例所示的计算机集群中的任意一台计算设备。第二计算设备与第一计算设备可以为同一计算设备,或者,第二计算设备与第一计算设备可以为不同的计算设备。若第二计算设备与第一计算设备为同一计算设备,则第一LMD和第二LMD可以为同一LMD。
S1102、接收管理设备发送的目标内存的内存信息,目标内存包括控制域内存和数据域内存,控制域内存用于存储传输控制信息。
管理设备可以对比第二计算设备发送的第二约束标识、以及第一计算设备发送的第一约束标识。若第二约束标识与第一约束标识相同,则第二计算设备的第二程序要读取的数据可以为第一计算设备的第一程序写入目标内存中的目标数据。管理设备可以根据第二约束标识,查询目标内存的内存信息,并可以向第二计算设备发送目标内存的内存信息。
管理设备可以通过FM向第二计算设备发送目标内存的内存信息。
内存信息包括目标内存的内存位置和内存容量。
目标内存包括控制域内存和数据域内存,控制域内存用于存储传输控制信息,数据域内存用于存储第一计算设备写入的数据。
具体的,管理设备可以通过FM,向第二计算设备的第二LMD发送目标内存的内存信息。第二计算设备的第二LMD可以向第二计算设备的第二程序发送目标内存的内存信息。第二计算设备的第二程序可以根据内存信息中的内存位置和内存容量,确定目标内存。
需要说明的是,管理设备向第二计算设备发送的目标内存的内存位置可以为,目标内存在存储设备中的物理地址。
可选的,若第二计算设备无法识别存储设备中内存的物理地址,管理设备还可以向第二计算设备发送第二地址映射关系。第二地址映射关系可以用于,将存储设备中内存的物理地址映射为第二计算设备可以识别的地址。
本实施例中,若管理设备向第二计算设备发送第二地址映射关系,第二LMD接收第二地址映射关系和目标内存的内存位置后,可以根据第二地址映射关系、以及目标内存的内存位置,将目标内存的内存位置转换为第二计算设备可以识别的目标内存的内存位置,并可以向第二程序发送转换后的目标内存的内存位置,以使第二程序可以根据转换后的目标内存的内存位置确定目标内存。
S1103、根据传输控制信息,在数据域内存中读取第一计算设备在数据域内存中存储的目标数据。
传输控制信息中可以包括写指针位置。写指针位置可以用于表征,第一计算设备的第一程序完成写操作的存储空间的位置。
第二计算设备的第二程序可以根据写指针位置,判断数据域内存中是否存在可读数据块,并可以在写指针位置指示数据域内存中存在可读数据块时、从数据域内存中读取数据块,以实现读取目标数据的目的。
本实施例提供的数据传输方法,第二计算设备可以向管理设备发送数据读取请求,数据读取请求中包括第二约束标识;可以接收管理设备发送的目标内存的内存信息;可以根据传输控制信息,在数据域内存中读取第一计算设备在数据域内存中存储的目标数据。上述方法中,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
在上述任一实施例的基础上,下面结合图12,对第二计算设备从目标内存中读取目标数据的过程进行进一步说明。
图12为本申请实施例提供的又一种数据传输方法的流程示意图。该方法的执行主体可以为第二计算设备,也可以为设置在第二计算设备中的处理芯片。下面仅以执行主体为第二计算设备为例进行说明。请参见图12,该方法可以包括:
S1201、向管理设备发送数据读取请求,数据读取请求中包括第二约束标识。
S1202、接收管理设备发送的目标内存的内存信息,目标内存包括控制域内存和数据域内存,控制域内存用于存储传输控制信息。
需要说明的是,S1201-S1202的具体实现方式可以参见S1101-S1102,此处不再赘述。
本实施例中,第二计算设备的第二程序确定目标内存后,还可以在控制域内存中,将传输控制信息中的收端状态更新为准备完成状态。
具体而言,第二计算设备的第二程序可以在收端控制域内存中将收端状态更新为准备完成状态,以表征第二计算设备的第二程序已准备完成、并可以用于接收目标数据。
第二计算设备的第二程序将收端状态更新为准备完成状态之前,还可以执行如下至少一种操作:
在传输控制信息中更新内存标识;或,
在传输控制信息中更新传输模式,传输模式为发送模式或接收模式。
具体而言,第二计算设备的第二程序将收端状态更新为准备完成状态之前,还可以在收端控制域内存中将内存标识更新为数据域内存的地址,并可以在收端控制域内存中将传输模式更新为接收模式。
下面,结合表2,对第二计算设备的第二程序在收端控制域内存中写入的收端传输控制信息进行说明。
表2
收端传输控制信息 | 说明 |
心跳信息 | 最新更新时刻 |
内存标识 | 数据域内存的地址 |
传输模式 | 接收模式 |
发端状态 | 准备完成状态 |
如表2所示,第二计算设备的第二程序可以以固定的时间间隔,在收端控制域内存中更新第二计算设备记录心跳信息的最新更新时刻,以表征第二计算设备正常运行。第二计算设备的第二程序可以在收端控制域内存中将内存标识更新为数据域内存的地址,以表征可以通过数据域内存传输目标数据。第二计算设备的第二程序可以在收端控制域内存中将传输模式更新为接收模式,以表征第二计算设备的第二程序用于接收目标数据。第二计算设备的第二程序可以在收端控制域内存中将收端状态更新为准备完成状态,以表征第二计算设备的第二程序已准备完成、并可以用于接收目标数据。
需要说明的是,表2仅示例性对收端传输控制信息进行说明,并不构成对收端传输控制信息的限制,收端传输控制信息还可以包括更多或更少的信息。
S1203、在传输控制信息中确定读指针位置和写指针位置。
第二计算设备的第二程序可以访问发端控制域内存和收端控制域内存,以根据发端控制域内存中的发端传输控制信息确定写指针位置,并根据收端控制域内存中的收端传输控制信息确定读指针位置。
S1204、根据读指针位置和写指针位置,判断数据域内存中是否存在可读的数据块。
本实施例中,若写指针位置为0、或写指针位置与读指针位置相同,则第二计算设备的第二程序可以确定数据域内存中不存在可读的数据块;否则,第二计算设备的第二程序可以确定数据域内存中存在可读的数据块。
S1205、在确定数据域内存中存在可读的数据块时,在数据域内存中读取数据块。
本实施例中,第二计算设备可以通过第二程序从数据域内存中读取多个数据块,并可以根据数据块的索引对多个数据块进行组合处理,以得到目标数据。
本实施例中,第二计算设备的第二程序在所述数据域内存中读取所述数据块之后,还可以更新所述控制域内存中的如下至少一种传输控制信息:
读指针位置、已从数据域内存读取的数据大小和读取失败的数据块的索引。
第二计算设备的第二程序更新读取失败的数据块的索引后,第一计算设备的第一程序可以根据读取失败的数据块的索引,重新向数据域内存中写入读取失败的数据块。
本实施例提供的数据传输方法,第二计算设备可以向管理设备发送数据读取请求,数据读取请求中包括第二约束标识,并可以接收管理设备发送的目标内存的内存信息;可以在传输控制信息中确定读指针位置和写指针位置;可以根据读指针位置和写指针位置,判断数据域内存中是否存在可读的数据块;并可以在确定数据域内存中存在可读的数据块时,通过第二程序在数据域内存中读取数据块。上述方法中,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
在上述任一实施例的基础上,下面结合图13A,对管理设备根据内存分配请求确定目标内存的方法进行说明。
图13A为本申请实施例提供的又一种数据传输方法的流程示意图。该方法的执行主体可以为管理设备,也可以为设置在管理设备中的处理芯片。下面仅以执行主体为管理设备为例进行说明。请参见图13A,该方法可以包括:
S1301、接收第一计算设备发送的内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识。
本实施例中,管理设备可以通过FM,接收第一计算设备发送的内存分配请求。
第一约束标识为目标应用的特定任务对应的特定字符串,目标内存为分配给第一计算设备的第一程序和第二计算设备的第二程序的内存,第一程序和第二程序用于完成目标应用的特定任务。
需要说明的是,关于第一约束标识、以及目标应用的特定任务的说明可以参见图5实施例,此处不再赘述。
S1302、根据内存分配请求,为第一计算设备分配目标内存。
目标内存包括控制域内存和数据域内存;其中,控制域内存用于存储传输控制信息,数据域内存用于存储第一计算设备向第二计算设备发送的数据,传输控制信息用于控制第一计算设备通过数据域内存向第二计算设备传输数据。
具体的,数据域内存用于存储第一计算设备的第一程序向第二计算设备的第二程序发送的数据,传输控制信息用于控制第一计算设备的第一程序通过数据域内存向第二计算设备的第二程序传输数据。
第一计算设备与第二计算设备可以为同一计算设备,或,者第一计算设备与第二计算设备可以为不同的计算设备。
本实施例中,内存分配请求中可以包括目标内存的内存容量和第一约束标识。管理设备可以根据目标内存容量,在存储设备的剩余存储空间中为第一计算设备分配目标内存。
可选的,在其他实施例中,内存分配请求中可以包括目标数据的数据大小。管理设备可以根据目标数据的数据大小、以及预设容量,确定目标内存的内存容量;并可以根据内存容量,在存储设备的剩余存储空间中为第一计算设备分配目标内存。
S1303、向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息。
相应的,第一计算设备接收管理设备发送的内存分配响应。
本实施例中,管理设备还可以存储第一计算设备、第一约束标识和目标内存的内存信息的对应关系。
目标对应关系为第一计算设备、目标内存的内存信息及第一约束标识的对应关系。当然,在一些实施例中,目标对应关系还可以为第一计算设备、第二计算设备、目标内存的内存信息及第一约束标识的对应关系。
S1304、接收第二计算设备发送的数据读取请求,数据读取请求中包括第二约束标识。
本实施例中,若第二计算设备发送的第二约束标识与第一计算设备发送的第一约束标识相同,则第二计算设备的第二程序要读取的数据可以为第一计算设备的第一程序写入目标内存中的目标数据。
S1305、在第二约束标识与对应关系中的第一约束标识相同的情况下,确认对应关系为目标对应关系。
本实施例中,管理设备可以为一个或多个第一计算设备分配目标内存。针对任意一个第一计算设备,管理设备可以存储第一计算设备、第一约束标识和目标内存的内存信息的对应关系。
具体实施过程中,管理设备可以对比第二约束标识与每个对应关系中的第一约束标识。针对任意一个对应关系,若第二计算设备发送的第二约束标识与对应关系中的第一约束标识相同,可以将对应关系确定为目标对应关系,并可以将目标对应关系中包括的内存信息确定为目标内存的内存信息。
S1306、将目标对应关系中的目标内存的内存信息发送给第二计算设备。
本实施例中,管理设备确定目标内存的内存信息后,可以向第二计算设备发送目标内存的内存信息,以使第二计算设备可以根据目标内存的内存信息确定目标内存。
具体的,管理设备可以通过FM,向第二计算设备的第二LMD发送目标内存的内存信息。
本实施例中,管理设备还可以存储第一计算设备、第二计算设备、第一约束标识和目标内存的内存信息的对应关系。
可选的,管理设备还可以接收第一计算设备发送的内存释放请求;根据内存释放请求,释放目标内存。
具体而言,第一计算设备的第一程序通过目标内存向第二计算设备的第二程序传输数据结束后,可以向管理设备发送内存释放请求。管理设备可以根据内存释放请求,释放目标内存,以便于其他程序可以继续使用目标内存,使得目标内存的使用率较高。
管理设备释放目标内存时,可以删除第一计算设备、第二计算设备、第一约束标识和目标内存的内存信息的对应关系,以实现释放目标内存的目的。
本实施例提供的数据传输方法中,管理设备可以接收第一计算设备发送的内存分配请求,内存分配请求中包括第一约束标识;可以根据内存分配请求,为第一计算设备分配目标内存;可以向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息;可以在第二约束标识与对应关系中的第一约束标识相同的情况下,确认对应关系为目标对应关系;并可以将目标对应关系中的目标内存的内存信息发送给第二计算设备。上述方法中,管理设备可以为第一计算设备分配目标内存,以使第一计算设备的第一程序可以通过目标内存向第二计算设备的第二程序传输目标数据。通上述方法,第一计算设备的第一程序与第二计算设备的第二程序之间可以通过目标内存传输目标数据,数据传输过程不受网络带宽资源的限制,提高了数据传输效率。
在另一些实施例中,如图13B,图13B为本申请实施例提供的又一种数据传输方法的流程示意图。上述方法包括S1301、S1302、及S1303,具体内容可参见上述S1301、S1302、及S1303的具体描述,再此不再赘述。
在上述任一实施例的基础上,下面通过具体示例,对本申请实施例提供的数据传输方法进行说明。
图14为本申请实施例提供的又一种数据传输方法的流程示意图。请参见图14,该方法可以包括:
S1401、第一计算设备目标数据。
S1402、第一计算设备根据目标数据的数据大小,确定目标内存的内存容量。
S1403、第一计算设备向管理设备发送内存分配请求,内存分配请求包括目标内存的内存容量和第一约束标识。
需要说明的是,S1401-S1403的具体实现方式可以参见S701-S703,此处不再赘述。
S1404、管理设备根据内存分配请求,为第一计算设备分配目标内存。
S1405、管理设备向第一计算设备发送内存分配响应并记录目标对应关系,内存分配响应包括目标内存的内存信息。
需要说明的是,S1404-S1405的具体实现方式可以参见S1302-S1303,此处不再赘述。
S1406、第一计算设备将发端状态更新为准备完成状态。
S1407、管理设备接收第二计算设备发送的数据读取请求,数据读取请求中包括第二约束标识。
需要说明的是,S1405-S1406可以在S1407之前实施,或者S1405-S1406可以在S1407之后实施,或者S1405-S1406可以与S1407同时实施,本实施例对此不做限定。
S1408、在第二约束标识与对应关系中的第一约束标识相同的情况下,管理设备确认对应关系为目标对应关系。
S1409、管理设备将目标对应关系中的目标内存的内存信息发送给第二计算设备。
需要说明的是,S1407-S1409的具体实现方式可以参见S1304-S1306,此处不再赘述。
S1410、第二计算设备将收端状态更新为准备完成状态。
S1411、第一计算设备通过数据域内存向第二计算设备传输目标数据。
S1412、第一计算设备向管理设备发送内存释放请求。
S1413、管理设备根据内存释放请求,释放目标内存。
需要说明的是,S1412-S1413的具体实现方式可以参见S1306,此处不再赘述。
图15为本申请实施例提供的一种数据传输装置的结构示意图。数据传输装置10应用于管理设备,所述数据传输装置10包括接收模块11、分配模块12和发送模块13,其中,
所述接收模块11用于,接收第一计算设备发送的内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识;所述第一约束标识用于对所述第一计算设备和第二计算设备进行匹配;
所述分配模块12用于,根据所述内存分配请求,为所述第一计算设备分配目标内存,所述目标内存包括控制域内存和数据域内存;其中,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述第一计算设备向所述第二计算设备发送的数据,所述传输控制信息用于指示所述第一计算设备和所述第二计算设备的状态;
所述发送模块13用于,向所述第一计算设备发送内存分配响应并记录目标对应关系,所述内存分配响应包括所述目标内存的内存信息,所述目标对应关系为所述第一计算设备、所述目标内存的内存信息及所述第一约束标识的对应关系。
一种可能的实现方式中,
所述接收模块11还用于,接收所述第二计算设备发送的数据读取请求,所述数据读取请求中包括第二约束标识;
所述分配模块12还用于,在所述第二约束标识与对应关系中的第一约束标识相同的情况下,确认所述对应关系为目标对应关系;
所述发送模块13还用于,将所述目标对应关系中的目标内存的内存信息发送给所述第二计算设备。
一种可能的实现方式中,所述第一约束标识为目标应用的特定任务对应的特定字符串,所述目标内存为分配给所述第一计算设备的第一程序和第二计算设备的第二程序的内存,所述第一程序和所述第二程序用于完成所述目标应用的特定任务。
本实施例提供的数据传输装置,可用于执行上述方法实施例中管理设备所执行的数据传输方法,其实现原理和技术效果类似,此处不作赘述。
图16为本申请实施例提供的另一种数据传输装置的结构示意图。数据传输装置20应用于第一计算设备,所述数据传输装置20包括确定模块21、发送模块22、接收模块23和传输模块24,其中,
所述确定模块21用于,确定目标数据,所述目标数据为待向第二计算设备发送的数据;
所述发送模块22用于,向管理设备发送内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识,所述第一约束标识用于对所述第一计算设备和所述第二计算设备进行匹配;
所述接收模块23用于,接收所述管理设备发送的内存分配响应,所述内存分配响应包括所述目标内存的内存信息;所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述目标数据;
所述传输模块24用于,根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据。
一种可能的实现方式中,所述传输控制信息包括发端状态和收端状态;所述传输模块24具体用于,
将所述发端状态更新为准备完成状态;
在确定所述控制域内存中的所述收端状态为准备完成状态时,在所述数据域内存中写入所述目标数据,所述第二计算设备用于在所述数据域内存中读取所述目标数据。
一种可能的实现方式中,所述目标数据中包括多个数据块;所述传输模块24具体用于,
针对任意一个数据块,在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可写空间;
在确定所述数据域内存中存在可写空间时,在所述数据域内存的所述可写空间中写入所述数据块。
一种可能的实现方式中,在所述数据域内存的所述可写空间中写入所述数据块之后,所述传输模块24还用于,
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、所述数据块的数据块索引、已向所述第二计算设备发送的数据大小、所述数据块的校验信息。
一种可能的实现方式中,在所述数据域内存中写入所述目标数据之前,所述传输模块24还用于,
执行如下至少一种操作:
在所述传输控制信息中更新内存标识;或,
在所述传输控制信息中更新传输模式,所述传输模式为发送模式或接收模式。
一种可能的实现方式中,所述确定模块21还用于,
根据所述目标数据的数据大小,确定所述内存容量,所述内存容量大于或等于所述目标数据的大小。
本实施例提供的数据传输装置,可用于执行上述方法实施例中第一计算设备所执行的数据传输方法,其实现原理和技术效果类似,此处不作赘述。
图17为本申请实施例提供的又一种数据传输装置的结构示意图。数据传输装置30应用于第二计算设备,所述数据传输装置30包括发送模块31、接收模块32和读取模块33,其中,
所述发送模块31用于,向管理设备发送数据读取请求,所述数据读取请求中包括第二约束标识,所述第二约束标识用于对所述第二计算设备和第一计算设备进行匹配;
所述接收模块32用于,接收所述管理设备发送的目标内存的内存信息,所述内存信息包括所述目标内存的内存位置和内存容量,所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储第一计算设备写入的数据;
所述读取模块33用于,根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据。
一种可能的实现方式中,所述目标数据中包括多个数据块;所述读取模块33具体用于,
在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可读的数据块;
在确定所述数据域内存中存在可读的数据块时,在所述数据域内存中读取所述数据块。
一种可能的实现方式中,在所述数据域内存中读取所述数据块之后,所述读取模块33还用于,
更新所述控制域内存中的如下至少一种传输控制信息:
所述写指针位置、已从所述数据域内存读取的数据大小和读取失败的数据块索引。
一种可能的实现方式中,接收所述管理设备发送的目标内存的内存信息之后,所述读取模块33还用于,
在所述控制域内存中,将所述传输控制信息中的收端状态更新为准备完成状态。
本实施例提供的数据传输装置,可用于执行上述方法实施例中第二计算设备所执行的数据传输方法,其实现原理和技术效果类似,此处不作赘述。
图18为本申请实施例提供的一种管理设备的结构示意图。如图18所示,管理设备40可以包括:处理器41和存储器42,其中,处理器41和存储器42可以通信;示例性的,处理器41和存储器42通过通信总线43通信,所述存储器42用于存储计算机执行指令,所述处理器41用于调用存储器中的计算机执行指令执行上述任意方法实施例所示的数据传输方法。
可选的,管理设备40还可以包括通信接口,通信接口可以包括发送器和/或接收器。
可选的,上述处理器可以是中央处理单元(central processing unit,CPU),还可以是图形处理器(graphics processing unit,GPU)、其他通用处理器、数字信号处理器(digital signal processor,DSP)、或专用集成电路(application specific integratedcircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
图19为本申请实施例提供的一种计算设备的结构示意图。计算设备可以为第一计算设备,计算设备还可以为第二计算设备。
如图19所示,计算设备50可以包括:处理器51和存储器52,其中,处理器51和存储器52可以通信;示例性的,处理器51和存储器52通过通信总线53通信,所述存储器52用于存储计算机执行指令,所述处理器51用于调用存储器中的计算机执行指令执行上述任意方法实施例所示的数据传输方法。
可选的,计算设备50还可以包括通信接口,通信接口可以包括发送器和/或接收器。
可选的,上述处理器可以是中央处理单元(central processing unit,CPU),还可以是图形处理器(graphics processing unit,GPU)、其他通用处理器、数字信号处理器(digital signal processor,DSP)、或专用集成电路(application specific integratedcircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机执行指令;所述计算机执行指令用于实现如上述任意实施例所述的数据传输方法。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当所述计算机程序被执行时,使得计算机执行上述数据传输方法。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程终端设备的处理单元以产生一个机器,使得通过计算机或其他可编程终端设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程终端设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请实施例也意图包含这些改动和变型在内。
在本申请实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。术语“或”及其变形可以指“和/或”。本申请实施例中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请实施例中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域技术人员在考虑说明书及实践里公开的发明后,将容易想到本申请的其它实施方案。本申请实施例旨在涵盖本申请实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请实施例的一般性原理并包括本申请实施例未公开的本技术领域中的公知常识或惯用技术手段。
Claims (10)
1.一种数据传输方法,其特征在于,应用于管理设备,所述方法包括:
接收第一计算设备发送的内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识;所述第一约束标识用于对所述第一计算设备和第二计算设备进行匹配;
根据所述内存分配请求,为所述第一计算设备分配目标内存,所述目标内存包括控制域内存和数据域内存;其中,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述第一计算设备向所述第二计算设备发送的数据,所述传输控制信息用于指示所述第一计算设备和所述第二计算设备的状态;
向所述第一计算设备发送内存分配响应并记录目标对应关系,所述内存分配响应包括所述目标内存的内存信息,所述目标对应关系为所述第一计算设备、所述目标内存的内存信息及所述第一约束标识的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第二计算设备发送的数据读取请求,所述数据读取请求中包括第二约束标识;
在所述第二约束标识与对应关系中的第一约束标识相同的情况下,确认所述对应关系为目标对应关系,将所述目标对应关系中的目标内存的内存信息发送给所述第二计算设备。
3.根据权利要求1所述的方法,其特征在于,所述第一约束标识为目标应用的特定任务对应的特定字符串,所述目标内存为分配给所述第一计算设备的第一程序和第二计算设备的第二程序的内存,所述第一程序和所述第二程序用于完成所述目标应用的特定任务。
4.一种数据传输方法,其特征在于,应用于第一计算设备,所述方法包括:
确定目标数据,所述目标数据为待向第二计算设备发送的数据;
向管理设备发送内存分配请求,所述内存分配请求包括目标内存的内存容量和第一约束标识,所述第一约束标识用于对所述第一计算设备和所述第二计算设备进行匹配;
接收所述管理设备发送的内存分配响应,所述内存分配响应包括所述目标内存的内存信息;所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储所述目标数据;
根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据。
5.根据权利要求4所述的方法,其特征在于,所述传输控制信息包括发端状态和收端状态;根据控制域内存中的传输控制信息,通过所述数据域内存向所述第二计算设备传输所述目标数据,包括:
将所述发端状态更新为准备完成状态;
在确定所述控制域内存中的所述收端状态为准备完成状态时,在所述数据域内存中写入所述目标数据,所述第二计算设备用于在所述数据域内存中读取所述目标数据。
6.根据权利要求5所述的方法,其特征在于,所述目标数据中包括多个数据块;在所述数据域内存中写入所述目标数据,包括:
针对任意一个数据块,在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可写空间;
在确定所述数据域内存中存在可写空间时,在所述数据域内存的所述可写空间中写入所述数据块。
7.根据权利要求4-6任一项所述的方法,其特征在于,向管理设备发送内存分配请求之前,所述方法还包括:
根据所述目标数据的数据大小,确定所述内存容量,所述内存容量大于或等于所述目标数据的大小。
8.一种数据传输方法,其特征在于,应用于第二计算设备,所述方法包括:
向管理设备发送数据读取请求,所述数据读取请求中包括第二约束标识,所述第二约束标识用于对所述第二计算设备和第一计算设备进行匹配;
接收所述管理设备发送的目标内存的内存信息,所述内存信息包括所述目标内存的内存位置和内存容量,所述目标内存包括控制域内存和数据域内存,所述控制域内存用于存储传输控制信息,所述数据域内存用于存储第一计算设备写入的数据;
根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据。
9.根据权利要求8所述的方法,其特征在于,所述目标数据中包括多个数据块;根据所述传输控制信息,在所述数据域内存中读取第一计算设备在所述数据域内存中存储的目标数据,包括:
在所述传输控制信息中确定读指针位置和写指针位置;
根据所述读指针位置和所述写指针位置,判断所述数据域内存中是否存在可读的数据块;
在确定所述数据域内存中存在可读的数据块时,在所述数据域内存中读取所述数据块。
10.根据权利要求8或9任一项所述的方法,其特征在于,接收所述管理设备发送的目标内存的内存信息之后,还包括:
在所述控制域内存中,将所述传输控制信息中的收端状态更新为准备完成状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410405448.5A CN118316948A (zh) | 2024-04-03 | 2024-04-03 | 数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410405448.5A CN118316948A (zh) | 2024-04-03 | 2024-04-03 | 数据传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118316948A true CN118316948A (zh) | 2024-07-09 |
Family
ID=91720282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410405448.5A Pending CN118316948A (zh) | 2024-04-03 | 2024-04-03 | 数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118316948A (zh) |
-
2024
- 2024-04-03 CN CN202410405448.5A patent/CN118316948A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983449B (zh) | 数据处理的方法和存储*** | |
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
CN112153085B (zh) | 一种数据处理方法、节点及区块链*** | |
US8850158B2 (en) | Apparatus for processing remote page fault and method thereof | |
CN110825670A (zh) | 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换 | |
CN103607428B (zh) | 一种访问共享内存的方法和装置 | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
CN111427517A (zh) | 一种数据处理方法以及NVMe存储器 | |
JP6757808B2 (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
US10877701B2 (en) | Scale-out type storage system | |
CN111352873B (zh) | NVMe协议命令处理方法与装置 | |
CN112540941A (zh) | 一种数据转发芯片及服务器 | |
CN112955880B (zh) | 用于处理片上***中的地址解码的装置和方法 | |
CN109308269B (zh) | 一种内存管理方法及装置 | |
TW201432452A (zh) | 動態中央快取記憶體 | |
CN109597903B (zh) | 图像文件处理装置和方法、文件存储***及存储介质 | |
CN112799841A (zh) | 一种数据对象存储管理的方法和装置 | |
CN109783002B (zh) | 数据读写方法、管理设备、客户端和存储*** | |
CN116483740B (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN117591009A (zh) | 一种数据管理方法、存储装置及服务器 | |
CN112115521B (zh) | 数据访问方法及装置 | |
CN118316948A (zh) | 数据传输方法 | |
CN116932451A (zh) | 一种数据处理方法、主机及相关设备 | |
CN114281516A (zh) | 一种基于numa属性的资源分配方法及装置 | |
CN115203133A (zh) | 数据处理方法、装置、归约服务器及映射服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |