CN117648211B - 人工智能框架的运行时统一接口、服务器及调用方法 - Google Patents

人工智能框架的运行时统一接口、服务器及调用方法 Download PDF

Info

Publication number
CN117648211B
CN117648211B CN202410116709.1A CN202410116709A CN117648211B CN 117648211 B CN117648211 B CN 117648211B CN 202410116709 A CN202410116709 A CN 202410116709A CN 117648211 B CN117648211 B CN 117648211B
Authority
CN
China
Prior art keywords
interface
runtime
framework
board card
memory
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.)
Active
Application number
CN202410116709.1A
Other languages
English (en)
Other versions
CN117648211A (zh
Inventor
刘辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Computer Technology Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202410116709.1A priority Critical patent/CN117648211B/zh
Publication of CN117648211A publication Critical patent/CN117648211A/zh
Application granted granted Critical
Publication of CN117648211B publication Critical patent/CN117648211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7803System on board, i.e. computer system on one or more PCB, e.g. motherboards, daughterboards or blades
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及人工智能框架技术领域,公开了一种人工智能框架的运行时统一接口、服务器及调用方法,该运行时统一接口包括对接框架接口和运行时基础接口;运行时基础接口,用于与板卡设备的运行时接口连接;对接框架接口,用于向人工智能框架表明运行时统一接口包括的接口,并在接收到来自于人工智能框架的调用请求时,用于通过运行时基础接口,调用板卡设备的运行时接口。本发明通过设置运行时统一接口,能够减少板卡设备与人工智能框架的对接时长,提升用户的使用体验。

Description

人工智能框架的运行时统一接口、服务器及调用方法
技术领域
本发明涉及人工智能框架技术领域,具体涉及一种人工智能框架的运行时统一接口、服务器及调用方法。
背景技术
人工智能(Artificial Intelligence,AI)框架是用于开发和部署人工智能模型的软件工具包,AI框架提供了一系列的库、API和工具,能够帮助开发者在人工智能项目中进行数据处理、模型构建、训练和推理等任务。常用的AI框架有开源机器学习框架(TensorFlow)、开源深度学习框架(PyTorch)和飞桨(PaddlePaddle)等,AI框架通常与加速卡(也称板卡设备)进行对接实现任务加速,以提高计算效率和性能。
但是,某一类加速卡的运行时接口与AI框架中的运行时接口可能并不适配,受限于加速卡厂商的人力投入和成本,目前加速卡在与不同类型的AI框架对接时,需要根据AI框架的类型进行适配,以将加速卡的运行时接口接入AI框架。在用户更换AI框架的类型之后,花费在加速卡与AI框架对接的时间较长,影响用户的使用体验。
具体地,如图1所示,板卡商或用户根据接口功能将板卡设备的运行时接口100接入到自定义运行时接口200之后,PaddlPpaddle框架300通过调用自定义运行时接口200即可完成与板卡设备的逻辑交互,进而完成对板卡设备的使用。但是,PaddlePaddle框架定义的运行时接口只适用于PaddlePaddle框架,并不适用于其他类型的AI框架,并不能很好的解决加速卡与AI框架对接的时间较长的问题。
发明内容
有鉴于此,本发明提供了一种人工智能框架的运行时统一接口、服务器及调用方法,以解决加速卡与AI框架对接的时间较长,影响用户的使用体验的问题。
第一方面,本发明提供了一种人工智能框架的运行时统一接口,运行时统一接口包括对接框架接口和运行时基础接口;运行时基础接口,用于与板卡设备的运行时接口连接;对接框架接口,用于向人工智能框架表明运行时统一接口包括的接口,并在接收到来自于人工智能框架的调用请求时,用于通过运行时基础接口,调用板卡设备的运行时接口。
本发明提供的AI框架的运行时统一接口,在将运行时基础接口与板卡设备的运行时接口连接之后,若对接框架接口接收到来自于AI框架的调用请求,对接框架接口通过调用运行时基础接口,即可调用板卡设备的运行时接口。本实施例通过设置AI框架的运行时统一接口,用户只需要简单的按照接口要求将板卡设备的运行时接口接入运行时统一接口,即可完成板卡设备与各类AI框架的对接,使AI框架通过板卡设备完成相应的数据处理过程,减少了板卡设备与AI框架的对接时长,提升了用户的使用体验。
在一种可选的实施方式中,与运行时基础接口连接的板卡设备的数量为多个,多个板卡设备中的每个板卡设备配置有设备号,运行时基础接口包括设备管理模块;设备管理模块,用于确定目标板卡设备的设备号,其中,目标板卡设备为多个板卡设备中执行调用请求的板卡设备。
在本实施例中,通过设置设备管理模块,可以对接入运行时基础接口的板卡设备进行管理,方便用户查看接入的板卡设备的相关信息。
在一种可选的实施方式中,运行时基础接口还包括内存管理模块;内存管理模块,用于分配目标板卡设备的内存或分配人工智能框架的内存,以将数据从人工智能框架同步传输或异步传输到目标板卡设备,或将数据从目标板卡设备同步传输或异步传输到人工智能框架,其中,人工智能框架的内存为人工智能框架所在的服务器的内存;内存管理模块,还用于在将数据从人工智能框架同步传输或异步传输到目标板卡设备之后,释放目标板卡设备的内存,以及用于在将数据从目标板卡设备同步传输或异步传输到人工智能框架之后,释放人工智能框架的内存。
在本实施例中,通过设置内存管理模块,可以更方便快捷的管理板卡设备端的内存或AI框架所在服务器的内存。同步传输可以确保数据在发送和接收方之间以可控的速度进行传输,减少数据丢失和错误,提升数据传输稳定性,异步传输可以容忍一定的传输延迟和抖动,具有较高的容错性和灵活性。
在一种可选的实施方式中,运行时基础接口还包括第一流管理模块;第一流管理模块,用于创建流,其中,创建的流用于存储来自于人工智能框架的多个操作任务;第一流管理模块,还用于向板卡设备发送创建的流,使板卡设备按顺序处理同一流上的操作任务,并行处理不同流上的操作任务。
在本实施例中,AI框架下发到板卡设备的操作任务基于流完成,能够实现对操作任务的时序控制。
在一种可选的实施方式中,运行时基础接口还包括事件管理模块;事件管理模块,用于在创建的流上创建事件,其中,创建的事件用于确定流上的多个操作任务是否执行完成;事件管理模块,还用于在记录的事件被执行之后,触发第一流管理模块同步流,以指示事件所在流上的在事件之前的操作任务已经全部执行完成;第一流管理模块,用于在事件被执行之后同步流,并用于在创建的流上的所有操作任务执行完成之后销毁流,以释放创建的流所占用的服务器的资源。
在本实施例中,通过设置事件管理模块,能够更方便的了解流上操作任务的执行情况。
在一种可选的实施方式中,运行时基础接口还包括版本管理模块;版本管理模块,用于获取板卡设备的运行时版本号和驱动版本号。
在本实施例中,通过设置版本管理模块获取板卡设备的运行时版本号和驱动版本号,能够方便AI框架查看当前连接的板卡设备的运行时接口的版本信息。
在一种可选的实施方式中,运行时统一接口还包括扩展接口,扩展接口包括第二流管理模块,第二流管理模块配置有预先创建的多个流;第二流管理模块,用于在接收到来自于人工智能框架的创建流的指示信息之后,向人工智能框架发送目标流,其中,目标流为多个流中的一个或多个;第二流管理模块,还用于获取板卡设备默认的流,用于获取板卡设备当前使用的流,以及用于设置或切换板卡设备当前使用的流,以便于人工智能框架调用板卡设备。
在本实施例中,在AI框架从后端(运行时统一接口)申请流时,运行时统一接口直接从多个流中取出预先申请好的流给AI框架,节省了频繁创建流和销毁流的时间。
在一种可选的实施方式中,扩展接口还包括缓存模块,缓存模块的缓存池中配置有预申请的内存;缓存模块,用于在人工智能框架申请内存时,向人工智能框架发送目标内存,其中,目标内存为缓存池中的内存;缓存模块,还用于在人工智能框架释放目标内存时,将目标内存标记为未使用状态,并将目标内存重新保存在缓存池中,以及用于在目标内存被使用之后释放目标内存。
在本实施例中,通过缓存机制,能够避免内存从板卡设备端频繁的申请和释放。
在一种可选的实施方式中,缓存模块,还用于通过事件记录目标内存使用的时间节点,以在目标内存被使用之后释放目标内存。
在本实施例中,AI框架在释放内存时只需要直接调用内存释放接口即可,通过缓存模块保证内存在被使用后才被释放,延缓释放时间。
在一种可选的实施方式中,运行时统一接口还包括调试接口,调试接口包括日志模块;日志模块,用于提供不同等级的日志。
在本实施例中,将日志设置成不同等级,在调试场景下,可以调出目标等级对应的所有日志,以获取更加详细的日志信息辅助分析问题。
在一种可选的实施方式中,调试接口还包括错误检查模块;错误检查模块,用于将接收的来自于板卡设备的执行结果转换为状态返回值,并用于向人工智能框架发送状态返回值。
在本实施例中,通过设置错误检查模块,能够方便AI框架了解操作任务的完成情况。
在一种可选的实施方式中,调试接口还包括跟踪调试模块;跟踪调试模块,用于在运行时统一接口故障时,输出调用栈信息。
在本实施例中,通过设置跟踪调试模块,能够在运行时统一接口故障时,输出调用栈信息,以辅助分析故障原因。
第二方面,本发明提供了一种服务器,服务器包括上述第一方面或其对应的任一实施方式的运行时统一接口。
第三方面,本发明提供了一种板卡设备的运行时接口的调用方法,应用于上述第一方面或其对应的任一实施方式的运行时统一接口的对接框架接口,运行时统一接口包括对接框架接口和运行时基础接口,运行时基础接口连接板卡设备的运行时接口,方法包括:接收来自于人工智能框架的调用请求;通过运行时基础接口,调用板卡设备的运行时接口。
本发明提供的AI框架的运行时统一接口,在将运行时基础接口与板卡设备的运行时接口连接之后,若对接框架接口接收到来自于人工智能框架的调用请求,对接框架接口通过运行时基础接口,即可调用板卡设备的运行时接口,使人工智能框架完成与板卡设备的运行时接口的逻辑交互,进而完成对板卡设备的使用。
在一种可选的实施方式中,方法还包括:将运行时统一接口编译为第一文件,其中,第一文件包括头文件和动态链接库文件,头文件用于向人工智能框架表明运行时统一接口包括的接口,动态链接库文件用于连接运行时统一接口包括的接口。
在本实施例中,将运行时统一接口编译为第一文件,在AI框架需要调用相应的接口时,通过加载动态链接库文件,即可将运行时统一接口添加到AI框架,方便AI框架调用板卡设备的运行时接口。
附图说明
为了更清楚地说明本发明具体实施方式或相关技术中的技术方案,下面将对具体实施方式或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是加速卡与飞桨框架对接的示意图;
图2是根据本发明实施例的一种人工智能框架的运行时统一接口的示意图;
图3是根据本发明实施例的另一种人工智能框架的运行时统一接口的示意图;
图4是根据本发明实施例的一种板卡设备的运行时接口的调用方法的流程示意图;
图5是根据本发明实施例的一种人工智能框架使用运行时统一接口的方法的流程示意图;
图6是本发明实施例的服务器的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明提供的AI框架的运行时统一接口进行详细说明。
如图2所示,AI框架的运行时统一接口400包括对接框架接口410和运行时基础接口420。
其中,运行时基础接口420用于与板卡设备的运行时接口100连接。对接框架接口410用于向人工智能(AI)框架500表明运行时统一接口400包括的接口,并在接收到来自于AI框架500的调用请求时,用于通过运行时基础接口420,调用板卡设备的运行时接口100。
具体地,由于常见的AI框架对运行时接口的需求具有较高的相似性,通过调研统计常见的AI框架中需要支持的接口,然后归纳常见的几类AI框架所需接口的最小集合,将最小集合中的接口作为运行时基础接口,最小集合为常见的几类AI框架对应的接口集合的交集。板卡设备的运行时接口100按照运行时基础接口420的要求配置基础接口文件,即可将运行时基础接口420与板卡设备的运行时接口100连接。
对接框架接口410可以向AI框架500表明运行时统一接口400包括的接口,在AI框架500发送调用请求之后,对接框架接口410通过运行时基础接口420,调用板卡设备的运行时接口100,使AI框架500完成与板卡设备的运行时接口100的逻辑交互,进而完成对板卡设备的使用。示例性的,AI框架可以为开源深度学习框架(Pytorch)、飞桨(Paddlepaddle)框架或其他AI框架,但不限于此。板卡设备可以为寒武纪370、沐曦MXC500或英伟达(NVIDIA)A30,但不限于此。
示例性的,可以将运行时统一接口400编译成第一文件,AI框架500通过加载动态链接库(so)文件调用运行时基础接口420。其中,第一文件包括头文件和动态链接库文件,头文件用于向AI框架500表明运行时统一接口400包括的接口,动态链接库文件用于连接运行时统一接口400包括的接口。
本发明提供的AI框架的运行时统一接口400,在将运行时基础接口420与板卡设备的运行时接口100连接之后,若对接框架接口410接收到来自于AI框架500的调用请求,对接框架接口410通过调用运行时基础接口420,即可调用板卡设备的运行时接口100。本实施例通过设置AI框架的运行时统一接口400,用户只需要简单的按照接口要求将板卡设备的运行时接口100接入运行时统一接口400,即可完成板卡设备与各类AI框架的对接,使AI框架通过板卡设备完成相应的数据处理过程,减少了板卡设备与AI框架的对接时长,提升了用户的使用体验。
下面对运行时基础接口420进行详细说明。
具体地,运行时基础接口420可以包括设备管理模块、内存管理模块、第一流管理模块、事件管理模块和版本管理模块中的至少一种。
示例性的,设备管理模块(Set Device)用于确定目标板卡设备的设备号,其中,与运行时基础接口420连接的板卡设备的数量为多个,多个板卡设备中的每个板卡设备配置有设备号,目标板卡设备为从多个板卡设备中选择的执行调用请求的板卡设备。
具体地,设备管理模块的接口和功能可以如表1所示。如表1,设备管理模块还可以用于对板卡设备进行初始化(Init),用于获取当前与运行时基础接口420连接的板卡设备的设备号(Get Device),用于获取当前与运行时基础接口420连接的板卡设备的数量(GetDevice Count),以及用于在目标板卡设备执行完相应调用请求之后,释放初始化时获取的资源(DeInit)。
表1
示例性的,设备管理模块的部分代码1如下所示:
/** Set current device */;确定目标板卡设备的设备号;
TGStatus (*set_device_)(const TGDevice device);将从目标板卡设备获取的目标板卡设备的设备号通过运行时统一接口自定义类型表示,以便参数类型统一,并显示操作结果(例如设置成功或设置失败)。
其中,运行时统一接口自定义类型可以为数据类型(int)的封装。将从板卡设备获取的目标板卡设备的设备号做统一转换,方便与AI框架的运行时接口对接。
具体地,以寒武纪板卡为例,寒武纪板卡提供的运行时接口也包括设备管理模块,例如,寒武纪板卡中的确定目标板卡设备的设备号的接口为cnrtSetDevice,cnrtSetDevice设置了板卡使用的设备号。
示例性的,设备管理模块的部分代码2如下所示:
TGStatus SetDevice(const TGDevice device) {
DEBUG_LOG();
CHECK_RT_SUCCESS(cnrtSetDevice(device));
return ret;
};该函数功能是将板卡设备(例如寒武纪370)的接口(例如cnrtSetDevice)封装转换为运行时统一接口中功能对应的接口(例如Set Device)。
具体地,由于设备管理模块是板卡设备具备的基础接口,直接将板卡设备的设备管理模块转换封装,即可将板卡设备的运行时接口接入运行时统一接口。
在本实施例中,通过设置设备管理模块,可以对接入运行时基础接口420的板卡设备进行管理,方便用户查看接入的板卡设备的相关信息。
示例性的,内存管理模块用于分配(或申请)目标板卡设备(Device)的内存(Memory)或分配AI框架500的内存,以将数据从AI框架500传输到目标板卡设备,或将数据从目标板卡设备传输到AI框架500。其中,AI框架500的内存可以为AI框架500所在服务器(Host)的内存。
示例性的,内存管理模块的部分代码3可以如下所示:
TGStatus Allocate(const TGDevice device, void **ptr, size_t size) 将板卡设备申请内存的接口转换为运行时统一接口自定义类型的申请板卡设备内存的接口的函数实现。
具体地,寒武纪370板卡中的内存管理模块的接口cnrtMalloc(ptr, size)与内存管理模块的接口Device/Host Memory Allocate对接。
可选地,内存管理模块还可以用于释放(Deallocate)目标板卡设备(Device)的内存(Memory)或释放AI框架500所在服务器的内存,内存管理模块还可将目标板卡设备中的数据同步传输或异步传输到AI框架(Sync_d2h/Async_d2h),也可以将AI框架中的数据同步传输或异步传输到目标板卡设备(Sync_h2d/Async_h2d)。
具体地,内存管理模块的接口和功能可以如表2所示。
表2
在本实施例中,通过设置内存管理模块,可以更方便快捷的管理板卡设备端的内存或AI框架所在服务器的内存。
应理解,在同步传输中,发送方(为人工智能框架或板卡设备)和接收方(为板卡设备或人工智能框架)需要保持时间上的同步,即发送方每次发送数据时,接收方必须准备好接收并立即响应,发送方必须等待接收方的响应后才能继续发送下一段数据。在异步传输中,发送方和接收方之间没有严格的时间约束,发送方可以按照自身的节奏发送数据,而接收方则以自身的节奏接收数据。同步传输可以确保数据在发送和接收方之间以可控的速度进行传输,减少数据丢失和错误,提升数据传输稳定性,异步传输可以容忍一定的传输延迟和抖动,具有较高的容错性和灵活性。
示例性的,第一流管理模块用于创建流(Create Stream),还用于向板卡设备发送创建的流,使板卡设备按顺序处理同一流上的操作任务,并行处理不同流上的操作任务。其中,创建的流用于存储来自于AI框架的多个操作任务,操作任务可以为读取数据、写入数据或删除数据等操作。
示例性的,第一流管理模块的部分代码4可以如下所示:
TGStatus (*create_stream_)(const TGDevice device, TGStream *stream);将板卡设备创建流的接口转换为运行时统一接口自定义类型的创建流的接口的函数实现。
可选地,第一流管理模块还可以用于销毁流(Destroy Stream),以及用于同步流(Sync Stream),即等待指定流上面的操作任务完成。
具体地,第一流管理模块的接口和功能可以如表3所示。
表3
在本实施例中,AI框架下发到板卡设备的操作任务基于流完成,能够实现对操作任务的时序控制。在流上的操作任务完成后,销毁流能够及时释放流占用的***资源,以避免资源浪费,提升***的性能和响应能力,销毁流还能够避免流可能包含的敏感数据(例如个人信息或机密文档等)被不当访问或泄露,提升数据安全性,同时,销毁流还能够使代码文件更加清晰和易读,减少不必要的复杂性,提高代码的可维护性。
销毁流的具体方法取决于所使用的编程语言和框架。一般而言,根据所用的流对象的类型和上下文,可以调用合适的方法或函数来销毁流,并释放相关资源。例如,关闭文件流、关闭网络连接、释放内存等。
示例性的,事件管理模块用于创建事件(Create Event),其中,创建的事件用于确定流上的多个操作任务是否执行完成。具体地,当在流上面记录(Record)一个事件(Event)后,由于同一流上的操作任务是顺序执行的,当事件被触发时,表示在事件之前的操作任务已经执行完成,进而完成事件之前的操作任务同步功能。
可选地,事件管理模块还可以用于销毁事件(Destroy Event),用于同步事件(Sync Event),即指示事件之前的操作任务已经全部执行完成,用于在流上记录事件(Record Event),用于等待记录的事件被执行(触发)后同步流(Wait Event),以及用于查询事件(Query Event)状态,确定事件是否执行完成。具体地,事件管理模块的接口和功能可以如表4所示。
示例性的,事件管理模块的部分代码5可以如下所示:
TGStatus CreateEvent(const TGDevice device, TGEvent *event) {
DEBUG_LOG();
CHECK_RT_SUCCESS(cnrtNotifierCreate(reinterpret_cast<cnrtNotifier_t *>(event)));
return ret;};将板卡设备创建event的接口转换为运行时统一接口自定义类型的创建event的函数实现。
即,将板卡设备(例如寒武纪370)自定义类型的创建event的接口(cnrtNotifier_t)封装为运行时统一接口中的Create Event,在对接时,可以通过强制类型转换来赋值。
具体地,事件管理模块在第一流管理模块创建的流上创建事件,在事件被执行(触发)之后,触发第一流管理模块同步流,第一流管理模块响应触发同步流,并在确定创建的流上的所有操作任务被执行完成之后销毁流,释放创建的流所占用的服务器的资源。
表4
在本实施例中,通过设置事件管理模块,能够更方便的了解流上操作任务的执行情况。
示例性的,版本管理模块用于获取板卡设备的运行时版本号(Get RuntimeVersion)和获取板卡设备的驱动版本号(Get Driver Version),具体地,版本管理模块的接口和功能可以如表5所示。
在本实施例中,通过设置版本管理模块获取板卡设备的运行时版本号和驱动版本号,能够方便AI框架查看当前连接的板卡设备的运行时接口的版本信息。
表5
示例性的,版本管理模块时基础接口之一,版本管理模块的设置与上述类似,在此不在说明。
为了提升AI框架操作板卡设备的效率,在一些可选的实施方式中,如图3所示,AI框架的运行时统一接口400还包括扩展接口430和/或调试接口440。也就是说,AI框架的运行时统一接口400可以包括扩展接口430或调试接口440,也可以包括扩展接口430和调试接口440。
具体地,扩展接口430和/或调试接口440直接提供给AI框架侧使用,但不需要与板卡设备的运行时接口对接,扩展接口430和/或调试接口440可以通过运行时基础接口420调用板卡设备的运行时接口100。
下面对扩展接口430和调试接口440做详细说明。
示例性的,扩展接口430可以包括第二流管理模块431、缓存模块432和事件模块433中的至少一种。示例性的,第二流管理模块431可以通过第一流管理模块与板卡设备的运行时接口连接,缓存模块432可以通过内存管理模块与板卡设备的运行时接口连接,事件模块433可以通过事件管理模块与板卡设备的运行时接口连接。
具体地,第二流管理模块431设置有流池(stream pool),流池配置有预先创建的多个流,例如,配置有预先创建的N个流,N为整数,N可以由开发人员根据经验配置,比如N为16、32或64等。第二流管理模块431用于在接收到来自于AI框架500的创建流的指示信息之后,向AI框架500发送目标流,其中,目标流为多个流中的一个或多个,多个流可以循环使用。示例性的,当流池中的流都被AI框架使用后,再次创建流式,第二流管理模块431可以从头将流池中的第一个流发送至AI框架,循环重复使用。
在本实施例中,在AI框架从后端(运行时统一接口)申请流时,运行时统一接口400直接从多个流中取出预先申请好的流给AI框架,节省了频繁创建流和销毁流的时间。
可选地,第二流管理模块431还可以用于获取板卡设备默认的流(Get DefaultStream),用于获取板卡设备当前使用的流(Get Current Stream),以及用于设置或切换板卡设备当前使用的流(Set Current Stream)。其中,板卡设备为与运行时统一接口连接的板卡设备。
具体地,在接收到调用请求之后,运行时统一接口可以从对接的板卡设备的运行时接口中调用创建流的接口(cnrtQueueCreate)来获取板卡设备的流信息,另外,可以将获取的板卡设备的流信息赋值给Default Stream,作为默认的流给AI框架使用。在初始状态下,板卡设备当前使用的流可以为Default Stream,AI框架可以通过调用Set CurrentStream将板卡设备当前使用的流切换为指定的流,AI框架可以调用第一流管理模块创建流,并将新建的流作为板卡设备当前使用的流,以便后面逻辑使用。
具体地,版本管理模块的接口和功能可以如表6所示。在本实施例中,通过设置第二流管理模块431,能够获取板卡设备默认的流、获取板卡设备当前使用的流和设置或切换板卡设备当前使用的流,使AI框架更加高效的操作板卡设备。
表6
具体地,缓存模块432的缓存池中配置有预申请的内存,缓存模块432用于在AI框架500申请内存时,向AI框架500发送目标内存。其中,目标内存为缓存池中的内存。即,当AI框架500需要申请内存时,缓存模块432直接按照算法从缓存池中选取匹配的内存给AI框架500使用。另外,当AI框架500释放此内存时,缓存模块432会将该内存标记为未使用,继续保存在缓存池中,直到程序退出释放缓存池中的内存。
在本实施例中,通过缓存(Caching)机制,能够避免内存从板卡设备端频繁的申请和释放。
具体地,缓存模块432将缓存池中的内存分配情况存在链表中,当需要分配内存时,遍历链表找到大小合适的内存返回,然后更新链表信息,当AI框架内存释放时,更新链表将该地址空间对应的链表节点设置为未使用,如果该链表节点的前后链表节点也是未使用状态,那么可以合并为一个链表节点。
当缓存模块432的内存不足时,可以再次从板卡设备中申请内存,并将申请的内存放在缓存池,以满足AI框架内存申请需求。当AI框架申请的内存缓存池中没有满足大小的,且板卡设备中也没有足够大小的内存时,缓存模块432进行任务同步操作,等待异步操作执行完成后,即异步操作占用的内存全部处于未使用状态之后,将缓存池中处于未使用状态的内存归还板卡设备,之后再次从板卡设备申请内存。
AI框架一般为异步操作,即内存分配好后,执行异步操作使用该内存,之后释放内存。由于异步操作并不是下发完异步操作命令后就立刻执行使用该内存,会按照流上面的操作任务顺序,在后面的某个时间点才会执行,导致缓存模块无法确定释放该内存的时间点。
基于上面的异步操作场景,缓存模块还用于通过事件来记录目标内存使用的时间点,在目标内存被使用后,才释放目标内存。即,AI框架在释放内存时只需要直接调用内存释放接口即可,通过缓存模块保证内存在被使用后才被释放,延缓释放时间。
由于目前常见的AI框架500中并没有对事件提出更多的要求,运行时基础接口中的事件管理模块即可满足现有AI框架500需求,扩展接口中配置事件模块433,用于在AI框架500有新需求时对接。
示例性的,调试接口440包括日志模块441、错误检查模块442和跟踪调试模块443中的至少一种。
具体地,日志(LOG)模块441用于提供不同等级的日志。示例性的,可以通过环境变量为日志设置等级。
在本实施例中,将日志设置成不同等级,在调试场景下,可以调出目标等级对应的所有日志,以获取更加详细的日志信息辅助分析问题。
例如,在调试场景下,需要了解每个接口的参数,但在正常执行的情况下,不需要了解每个接口的参数,此时,通过日志模块为接口参数对应的日志设置等级,在调试场景下通过调用对应等级的日志,输出接口的参数,也能够避免在正常执行的情况下,输出接口的参数,影响服务器的性能。
具体地,错误(Error)检查模块442用于将接收的来自于板卡设备的执行结果转换为状态返回值,并用于向人工智能框架发送状态返回值。
在本实施例中,通过设置错误检查模块442,能够方便AI框架500了解操作任务的完成情况。
可选地,错误检查模块442还用于调用板卡设备在错误发生时,错误对应的字符串信息,并在显示设备上显示错误对应的字符串信息,方便用户了解错误的详细信息。其中,显示设备可以为运行时统一接口所在服务端的显示装置。
具体地,跟踪调试模块443用于在运行时统一接口故障(Core Dump)时,输出调用栈信息,以辅助分析故障原因。
在本实施例中,还提供了一种板卡设备的运行时接口的调用方法,可用于上述的运行时统一接口的对接框架接口,运行时统一接口的运行时基础接口与板卡设备的运行时接口连接,图4是根据本发明实施例的一种板卡设备的运行时接口的调用方法的流程示意图,如图4所示,该方法包括如下步骤:
步骤S401,接收来自于人工智能框架的调用请求。
其中,调用请求为调用目标接口的请求信息,目标接口为运行时统一接口中的其中一个接口,例如,目标接口可以为运行时基础接口中的任一模块、扩展接口中的任一模块或调试接口中的任一模块。
步骤S402,通过运行时基础接口,调用板卡设备的运行时接口。
本发明提供的AI框架的运行时统一接口,在将运行时基础接口与板卡设备的运行时接口连接之后,若对接框架接口接收到来自于人工智能框架的调用请求,对接框架接口通过运行时基础接口,即可调用板卡设备的运行时接口,使人工智能框架完成与板卡设备的运行时接口的逻辑交互,进而完成对板卡设备的使用。
在一些可选的实施方式中,板卡设备的运行时接口的调用方法还包括:将运行时统一接口编译为第一文件。其中,第一文件包括头文件和动态链接库文件,头文件用于向人工智能框架表明运行时统一接口包括的接口,动态链接库文件用于连接运行时统一接口包括的接口。
在本实施例中,将运行时统一接口编译为第一文件,在AI框架需要调用相应的接口时,通过加载动态链接库文件,即可将运行时统一接口添加到AI框架,方便AI框架调用板卡设备的运行时接口。
在本实施例中,还提供了一种人工智能框架使用运行时统一接口的方法,可用于配置人工智能框架和运行时统一接口的处理器、计算机或服务器等,图5是根据本发明实施例的一种人工智能框架使用运行时统一接口的方法的流程示意图,如图5所示,该方法包括如下步骤:
步骤S501,通过环境变量指定第一文件的存储位置。
其中,第一文件通过编译运行时统一接口确定。第一文件包括头文件和动态链接库文件,头文件用于表明运行时统一接口包括的接口,动态链接库文件用于连接运行时统一接口包括的接口。
具体地,运行时统一接口与板卡设备的运行时接口对接,可以通过在板卡设备中配置基础接口文件,使运行时统一接口与板卡设备的运行时接口对接,在多个板卡设备与运行时统一接口对接时,可以通过定义后端名称(Define BACKEND_NAME)区分多个板卡设备对应的基础接口文件。在编译时,可以通过指定BACKEND_NAME来选择基础接口文件,进而只编译指定的板卡设备的运行时统一接口。
步骤S502,以插件形式加载动态链接库文件。
具体地,人工智能框架下发操作任务时,通过第一文件的指定路径(BACKEND_PATH)加载动态链接库文件,进而将该动态链接库文件对应的后端接口(运行时统一接口)添加到人工智能框架中,以便人工智能框架使用运行时统一接口。
示例性的,可以通过动态加载共享库的函数(dlopen),加载动态链接库文件。
步骤S503,通过运行时统一接口调用板卡设备的运行时接口,使板卡设备执行人工智能框架下发的操作任务。
具体地,在将运行时统一接口接入人工智能框架之后,可以通过运行时统一接口调用板卡设备的运行时接口,进而使板卡设备执行人工智能框架下发的操作任务。
本实施例提供的人工智能框架使用运行时统一接口的方法,通过加载动态链接库文件,可以方便快捷的将运行时统一接口添加到人工智能框架,然后通过运行时统一接口,使人工智能框架完成与板卡设备的运行时接口的逻辑交互,进而完成对板卡设备的使用。
另外,在AI框架为PaddlePaddle框架时,本申请提供的运行时统一接口兼容PaddlePaddle框架定义的运行时接口,因此,针对PaddlePaddle框架,可以直接将运行时统一接口添加到PaddlePaddle框架,或者通过少量修改,即可将运行时统一接口添加到PaddlePaddle框架。
本发明实施例还提供一种服务器,具有上述图2或图3所示的运行时统一接口。
请参阅图6,图6是本发明可选实施例提供的一种服务器的结构示意图,如图6所示,该服务器设备包括:一个或多个处理器610、存储器620,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在服务器设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个服务器设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图6中以一个处理器610为例。
处理器610可以是中央处理器,网络处理器或其组合。其中,处理器610还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器620存储有可由至少一个处理器610执行的指令,以使所述至少一个处理器610执行实现上述实施例示出的方法。
存储器620可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据服务器设备的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器620可选包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至该服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器620可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器620还可以包括上述种类的存储器的组合。
该服务器设备还包括输入装置630和输出装置640。处理器610、存储器620、输入装置630和输出装置640可以通过总线或者其他方式连接,图6中以通过总线连接为例。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用服务器、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,服务器、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被服务器、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入本发明所限定的范围之内。

Claims (13)

1.一种人工智能框架的运行时统一接口,其特征在于,运行时统一接口包括对接框架接口、运行时基础接口、扩展接口和调试接口;
所述运行时基础接口,用于与板卡设备的运行时接口连接,所述运行时基础接口为多个人工智能框架对应的接口集合的交集中的接口;
所述对接框架接口,用于向人工智能框架表明所述运行时统一接口包括的接口,并在接收到来自于所述人工智能框架的调用请求时,用于通过所述运行时基础接口,调用所述板卡设备的运行时接口,所述调用请求为调用目标接口的请求信息,所述目标接口为所述运行时统一接口中的其中一个接口,在所述目标接口为所述扩展接口或所述调试接口时,所述扩展接口或所述调试接口通过所述运行时基础接口调用所述板卡设备的运行时接口;
所述扩展接口包括第二流管理模块和缓存模块,所述第二流管理模块配置有预先创建的多个流,所述缓存模块的缓存池中配置有预申请的内存;
所述第二流管理模块,用于在接收到来自于所述人工智能框架的创建流的指示信息之后,向所述人工智能框架发送目标流,其中,所述目标流为所述多个流中的一个或多个;
所述第二流管理模块,还用于获取所述板卡设备默认的流,用于获取所述板卡设备当前使用的流,以及用于设置或切换所述板卡设备当前使用的流,以便于所述人工智能框架调用所述板卡设备;
所述缓存模块,用于在所述人工智能框架申请内存时,向所述人工智能框架发送目标内存,其中,所述目标内存为所述缓存池中的内存;
所述缓存模块,还用于在所述人工智能框架释放所述目标内存时,将所述目标内存标记为未使用状态,并将所述目标内存重新保存在缓存池中,以及用于在所述目标内存被使用之后释放所述目标内存。
2.根据权利要求1所述的运行时统一接口,其特征在于,与所述运行时基础接口连接的所述板卡设备的数量为多个,多个所述板卡设备中的每个所述板卡设备配置有设备号,所述运行时基础接口包括设备管理模块;
所述设备管理模块,用于确定目标板卡设备的设备号,其中,所述目标板卡设备为多个所述板卡设备中执行所述调用请求的板卡设备。
3.根据权利要求2所述的运行时统一接口,其特征在于,所述运行时基础接口还包括内存管理模块;
所述内存管理模块,用于分配所述目标板卡设备的内存或分配所述人工智能框架的内存,以将数据从所述人工智能框架同步传输或异步传输到所述目标板卡设备,或将数据从所述目标板卡设备同步传输或异步传输到所述人工智能框架,其中,所述人工智能框架的内存为所述人工智能框架所在的服务器的内存;
所述内存管理模块,还用于在将数据从所述人工智能框架同步传输或异步传输到所述目标板卡设备之后,释放所述目标板卡设备的内存,以及用于在将数据从所述目标板卡设备同步传输或异步传输到所述人工智能框架之后,释放所述人工智能框架的内存。
4.根据权利要求1至3中任一项所述的运行时统一接口,其特征在于,所述运行时基础接口还包括第一流管理模块;
所述第一流管理模块,用于创建流,其中,创建的流用于存储来自于所述人工智能框架的多个操作任务;
所述第一流管理模块,还用于向所述板卡设备发送创建的流,使所述板卡设备按顺序处理同一流上的操作任务,并行处理不同流上的操作任务。
5.根据权利要求4所述的运行时统一接口,其特征在于,所述运行时基础接口还包括事件管理模块;
所述事件管理模块,用于在创建的流上创建事件,其中,创建的事件用于确定流上的多个操作任务是否执行完成;
所述事件管理模块,还用于在记录的事件被执行之后,触发所述第一流管理模块同步流,以指示事件所在流上的在事件之前的操作任务已经全部执行完成;
所述第一流管理模块,用于在事件被执行之后同步流,并用于在创建的流上的所有操作任务执行完成之后销毁流,以释放创建的流所占用的服务器的资源。
6.根据权利要求1至3中任一项所述的运行时统一接口,其特征在于,所述运行时基础接口还包括版本管理模块;
所述版本管理模块,用于获取所述板卡设备的运行时版本号和驱动版本号。
7.根据权利要求1所述的运行时统一接口,其特征在于,
所述缓存模块,还用于通过事件记录所述目标内存使用的时间节点,以在所述目标内存被使用之后释放所述目标内存。
8.根据权利要求1至3中任一项所述的运行时统一接口,其特征在于,所述调试接口包括日志模块;
所述日志模块,用于提供不同等级的日志。
9.根据权利要求8所述的运行时统一接口,其特征在于,所述调试接口还包括错误检查模块;
所述错误检查模块,用于将接收的来自于所述板卡设备的执行结果转换为状态返回值,并用于向所述人工智能框架发送所述状态返回值。
10.根据权利要求8所述的运行时统一接口,其特征在于,所述调试接口还包括跟踪调试模块;
所述跟踪调试模块,用于在所述运行时统一接口故障时,输出调用栈信息。
11.一种服务器,其特征在于,服务器包括如权利要求1至10中任一项所述的运行时统一接口。
12.一种板卡设备的运行时接口的调用方法,其特征在于,应用于如权利要求1至10中任一项所述的运行时统一接口的对接框架接口,所述运行时统一接口包括所述对接框架接口、运行时基础接口、扩展接口和调试接口,所述运行时基础接口连接板卡设备的运行时接口,所述方法包括:
接收来自于所述人工智能框架的调用请求,所述调用请求为调用目标接口的请求信息,所述目标接口为所述运行时统一接口中的其中一个接口;
通过所述运行时基础接口,调用所述板卡设备的运行时接口。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
将所述运行时统一接口编译为第一文件,其中,所述第一文件包括头文件和动态链接库文件,所述头文件用于向人工智能框架表明所述运行时统一接口包括的接口,所述动态链接库文件用于连接所述运行时统一接口包括的接口。
CN202410116709.1A 2024-01-29 2024-01-29 人工智能框架的运行时统一接口、服务器及调用方法 Active CN117648211B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410116709.1A CN117648211B (zh) 2024-01-29 2024-01-29 人工智能框架的运行时统一接口、服务器及调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410116709.1A CN117648211B (zh) 2024-01-29 2024-01-29 人工智能框架的运行时统一接口、服务器及调用方法

Publications (2)

Publication Number Publication Date
CN117648211A CN117648211A (zh) 2024-03-05
CN117648211B true CN117648211B (zh) 2024-05-24

Family

ID=90045388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410116709.1A Active CN117648211B (zh) 2024-01-29 2024-01-29 人工智能框架的运行时统一接口、服务器及调用方法

Country Status (1)

Country Link
CN (1) CN117648211B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338631A (zh) * 2018-12-18 2020-06-26 北京奇虎科技有限公司 一种通用接口框架的生成方法、装置和计算设备
WO2020199469A1 (zh) * 2019-04-04 2020-10-08 平安科技(深圳)有限公司 基于django框架的接口调用记录方法、装置、设备及存储介质
CN112698939A (zh) * 2020-12-01 2021-04-23 武汉虹信科技发展有限责任公司 一种atca架构核心网的操作维护方法及***
CN115827285A (zh) * 2023-02-23 2023-03-21 苏州浪潮智能科技有限公司 一种跨平台通信方法、***、装置、设备及介质
CN117291260A (zh) * 2023-09-27 2023-12-26 中科曙光国际信息产业有限公司 深度学习框架适配方法、装置、设备、存储介质和产品
CN117407195A (zh) * 2023-10-31 2024-01-16 浙江讯盟科技有限公司 一种应用***与第三方***的接口***、集成方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338631A (zh) * 2018-12-18 2020-06-26 北京奇虎科技有限公司 一种通用接口框架的生成方法、装置和计算设备
WO2020199469A1 (zh) * 2019-04-04 2020-10-08 平安科技(深圳)有限公司 基于django框架的接口调用记录方法、装置、设备及存储介质
CN112698939A (zh) * 2020-12-01 2021-04-23 武汉虹信科技发展有限责任公司 一种atca架构核心网的操作维护方法及***
CN115827285A (zh) * 2023-02-23 2023-03-21 苏州浪潮智能科技有限公司 一种跨平台通信方法、***、装置、设备及介质
CN117291260A (zh) * 2023-09-27 2023-12-26 中科曙光国际信息产业有限公司 深度学习框架适配方法、装置、设备、存储介质和产品
CN117407195A (zh) * 2023-10-31 2024-01-16 浙江讯盟科技有限公司 一种应用***与第三方***的接口***、集成方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PYNQ Environment on Versal Devices;Nemanja Filipović et al.;2023 31st Telecommunications Forum (TELFOR);20240101;第1-4页 *
国产高性能智能计算服务器研究;靳文兵 等;火力与指挥控制;20221130;第47卷(第11期);第140页 *

Also Published As

Publication number Publication date
CN117648211A (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
WO2019095936A1 (zh) 容器镜像的构建方法、***、服务器、装置及存储介质
US6074427A (en) Apparatus and method for simulating multiple nodes on a single machine
EP0622714A1 (en) Integrated automation development system and method
US20030233634A1 (en) Open debugging environment
CN108628626B (zh) 开发环境搭建方法、代码更新方法及装置
US11010144B2 (en) System and method for runtime adaptable applications
US20210232486A1 (en) Synthesizing printf and scanf statements for generating debug messages in high-level synthesis (hls) code
CN111651169A (zh) 基于web容器的区块链智能合约运行方法及***
CN109542464B (zh) IoT设备脚本程序的开发部署***、方法及存储介质
CN110083366B (zh) 应用运行环境的生成方法、装置、计算设备及存储介质
CN117648211B (zh) 人工智能框架的运行时统一接口、服务器及调用方法
CN115633073B (zh) 微服务调用方法、电子设备、***及可读存储介质
CN1988479A (zh) 一种记录***信息的方法和对象桩
CN109739666A (zh) 单例方法的跨进程调用方法、装置、设备及存储介质
CN115827120A (zh) 用户态网络栈调用、用户态接口设置方法和装置
US7552440B1 (en) Process communication multiplexer
TW200834419A (en) Method and apparatus for administering a process filesystem with respect to program code conversion
CN114428702A (zh) 含有通用接口模块的信息物理测试***
CN106922189B (zh) 设备代理装置及其控制方法
US7702764B1 (en) System and method for testing network protocols
US20140298303A1 (en) Method of processing program and program
Dantam et al. Unix philosophy and the real world: Control software for humanoid robots
CN117376229B (zh) 基于嵌入式设备的ftp文件***软件交叉调试方法及***
Boulifa et al. Model generation for distributed Java programs
CN117251118B (zh) 支持虚拟NVMe仿真与集成方法及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240705

Address after: 2324, Building 1, Aosheng Building, No. 1166 Xinluo Street, High tech Zone, Jinan City, Shandong Province, 250000

Patentee after: Inspur Computer Technology Co.,Ltd.

Country or region after: China

Address before: Room 401, 4th Floor, Gangsheng Building, No. 2177 Gangxi Road, High-tech Zone, Jinan City, Shandong Province, 250101

Patentee before: Shandong Yunhai guochuang cloud computing equipment industry innovation center Co.,Ltd.

Country or region before: China