CN117407004A - 一种跨架构、跨系统、跨平台的软件部署方法 - Google Patents
一种跨架构、跨系统、跨平台的软件部署方法 Download PDFInfo
- Publication number
- CN117407004A CN117407004A CN202311306235.9A CN202311306235A CN117407004A CN 117407004 A CN117407004 A CN 117407004A CN 202311306235 A CN202311306235 A CN 202311306235A CN 117407004 A CN117407004 A CN 117407004A
- Authority
- CN
- China
- Prior art keywords
- cross
- algorithm
- container
- architecture
- operating system
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 99
- 238000005457 optimization Methods 0.000 claims abstract description 10
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 6
- 230000002787 reinforcement Effects 0.000 claims abstract description 3
- 238000003860 storage Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 8
- 238000003062 neural network model Methods 0.000 claims description 7
- 238000001914 filtration Methods 0.000 claims description 6
- 238000004088 simulation Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 abstract description 20
- 238000012360 testing method Methods 0.000 abstract description 12
- 238000012795 verification Methods 0.000 abstract description 9
- 238000013461 design Methods 0.000 abstract description 8
- 238000013508 migration Methods 0.000 abstract description 7
- 230000005012 migration Effects 0.000 abstract description 7
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/092—Reinforcement learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/096—Transfer learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种跨架构、跨系统、跨平台的软件部署方法,所述方法面向对嵌入式硬件平台不同计算单元的计算需求,将需部署的软件算法分为第一算法、第二算法。第一算法是以滤波估计、优化估计为代表的部署于通用计算处理器(如CPU)的通用算法。第二算法是以卷积神经网络(CNN)、强化学习(RL)为代表的部署于智能计算处理器的智能算法。本发明针对第一算法设计了用于各模块算法单独开发测试阶段的快速迁移测试模式,以及在功能验证阶段的完整功能验证模式。本发明针对第二算法设计模型转换推理模式。
Description
技术领域
本发明属于软硬件一体化集成问题,尤其涉及一种跨架构、跨系统、跨平台的软件部署方法。
背景技术
针对无人系统高端智能控制器的发展需求,对多款硬件平台进行了通用智能算法库的部署与测试,具体包括对采用不同串行总线PCIe模式(包括EP模式与SoC模式)、不同操作系统(包括EulerOS、OpenEuler系统)、不同芯片(海思CPU、鲲鹏920CPU、昇腾310)的可控硬件平台进行软件部署实测,以一个完整的GVD路径规划算法为例,分别部署于Atlas500智能小站、PR210KI服务器与ARES500AI边缘智能计算平台三个不同的硬件平台上,并在线播放rosbag数据包,进行多机通信与算法功能测试。测试结果表明,在Atlas500智能小站上运行EP模式、海思CPUEulerOS系统、ARM架构,会出现部署Ubuntu的docker,运行roscore失败,CPU性能太差。在PR210KI服务器上运行EP模式、OpenEuler系统、ARM架构,会出现部署Ubuntu的docker,运行roscore失败,单核CPU占用率99,7%,难以运行其他任务。
因此,亟需提出一种跨架构、跨系统、跨平台的软件部署方法,以适应硬件平台的计算性能。
发明内容
针对现有技术不足,本发明提供了一种跨架构、跨系统、跨平台的软件部署方法。
第一方面,本发明实施例提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第一算法,所述方法包括:
在第一主机上部署ARM架构虚拟机,所述第一主机的操作系统为Ubuntu操作系统,所述第一主机的架构为x86架构,在ARM架构虚拟机上安装容器,并配置一Ubuntu操作系统的容器;在容器中部署第一算法,并进行编译;
在待迁移的嵌入式硬件平台上安装容器部署环境,将第一主机上的Ubuntu操作系统的容器拷贝到嵌入式硬件平台的容器部署环境中,直接运行容器部署的第一算法;
嵌入式硬件平台与多个第二主机的ROS主从机建立通信;所述第二主机与传感器耦接,第二主机通过发布ROS话题传播传感器数据,嵌入式硬件平台上的Ubuntu容器中运行的第一算法通过订阅该话题接收到ROS话题传播的传感器数据,从而实现对传感器数据的接收与处理。
第二方面,本发明实施例提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第一算法,所述方法包括:
将第一算法直接在嵌入式硬件平台上的Euler或OpenEuler操作系统上进行交叉编译,编译成功后将传感器接入嵌入式硬件平台,运行编译后的第一算法。
第三方面,本发明实施例提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第二算法,所述方法包括:
在Ubuntu操作系统、x86架构、GPU处理器的开发主机上通过CANN 工具将应用第二算法的神经网络模型进行格式转换,包括:将格式为.pth的神经网络模型转换成格式为.onnx的文件,再将格式为.onnx的文件转换为嵌入式硬件平台的智能计算处理器支持的.om模型;
在嵌入式硬件平台上配置CANN Nnrt推理环境,嵌入式硬件平台加载格式转换后的.om模型从而进行模型推理。
第四方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的跨架构、跨系统、跨平台的软件部署方法。
第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的跨架构、跨系统、跨平台的软件部署方法。
与现有技术相比,本发明的有益效果为:本发明将需部署的软件算法分为第一算法、第二算法,针对第一算法设计了用于单独开发测试阶段的快速迁移测试模式,以及在功能验证阶段的完整功能验证模式;针对第二算法设计模型转换推理模式。本发明通过跨架构、跨系统、跨平台的软件部署,以适应硬件平台的计算性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的第一算法快速迁移测试模式的流程图;
图2为本发明实施例提供的第一算法快速迁移测试模式的部署架构图;
图3为本发明实施例提供的第二算法模型转换推理模式的流程图;
图4为本发明实施例提供的第二算法模型转换推理模式的部署架构图;
图5为本发明实施例提供的一种电子设备的示意图。
实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
将算法部署到嵌入式硬件平台,需要面临如下挑战:
1)跨架构:从x86架构到ARM架构,即需要实现在x86架构上开发的代码到ARM架构上的迁移。
2)跨操作系统:从Ubuntu操作系统到Euler或OpenEuler操作系统。
3)跨通用计算处理器:从Intel的CPU到国产昇腾310芯片。
4)跨智能计算处理器:从GPU到NPU。
在本实例中,所述嵌入式硬件平台选用包含Atlas200模组、昇腾310芯片、Euler内核、ARM架构的ARES500AI硬件平台。
本发明实施例提出了一种跨架构、跨系统、跨平台的软件部署方法。所述方法面向对嵌入式硬件平台不同计算单元的计算需求,将需部署的软件算法分为两类(第一算法、第二算法)。
第一算法是以滤波估计、优化估计为代表的部署于通用计算处理器(如CPU)的通用算法。第二算法是以卷积神经网络(CNN)、强化学习(RL)为代表的部署于智能计算处理器的智能算法。本发明针对第一算法设计了2种部署方式,即用于各模块算法单独开发测试阶段的快速迁移测试模式,以及用于无人自主系统功能验证阶段的完整功能验证模式。针对第二算法设计1种部署方式,即模型转换推理模式。
其中,如图1和图2所示,本发明提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第一算法,实现快速迁移测试模式,具体包括以下步骤:
步骤S1,在第一主机上部署ARM架构虚拟机,所述第一主机的操作系统为Ubuntu操作系统,所述第一主机的架构为x86架构,在虚拟机上安装容器,并配置一Ubuntu操作系统的容器;在容器中部署第一算法,并进行编译。
具体地,首先在一块装有Ubuntu操作系统的ARM嵌入式硬件平台上使用容器配置工具生成ARM镜像,并提交到镜像云网站。所述容器配置工具一般为dockerfile工具。其中,将ARM镜像提交至镜像云网站的操作命令为:docker push [user_name/image_name:tag]。其中,user_name为用户名,由用户自定义设置;image_name为生成的ARM镜像名称,由用户自定义设置。tag为此ARM镜像的标签,可表示不同版本,由用户自定义设置。
在x86架构的第一主机上从镜像云网站拉取该ARM镜像到本机。注意该步骤执行中必须添加指定架构平台的属性,具体为docker pull user_name /[image_name:tag] --platform arm64。其中,“--platform arm64”表示指定架构为arm64,这个属性必须添加。其中,user_name为用户名,由用户自定义设置;image_name为生成的ARM镜像名称,由用户自定义设置。tag为此ARM镜像的标签,可表示不同版本,由用户自定义设置。
在第一主机上安装跨平台仿真模拟器并启动,设置其进行ARM体系架构的模拟。在本实例中,所述跨平台仿真模拟器为QEMU(Quick Emulator)工具。启动跨平台仿真模拟器的命令设置为:docker run --rm --privileged multiarch/qemu-user-static:register。
在第一主机上从所述拉取的ARM镜像中创建一个Ubuntu操作系统容器,启动并进入容器中。所述从镜像中创建容器的命令为:docker run -i -d [--name your_container_name] [-v your_path_to_src:/root/ workspace/src]user_name/[image_name:tag]。其中your_container_name是所述创建的容器的名称,由用户自定义设置;your_path_to_src为创建容器的路径,用户自定义设置;user_name为用户名,由用户自定义设置;image_name为生成的ARM镜像名称,由用户自定义设置。tag为此ARM镜像的标签,可表示不同版本,由用户自定义设置。启动容器的命令为:docker start [your_container_name]。进入容器的命令为:docker exec -it [your_container_name] bash。
在该容器中部署运行于通用计算处理器(如CPU)的第一算法,所述第一算法选自滤波估计算法、优化估计算法、图像特征提取算法和里程估计算法;所述滤波估计算法包括卡尔曼滤波、扩展卡尔曼滤波;所述优化估计算法包括高斯牛顿优化算法、LM优化算法(Levenberg-Marquardt);所述图像特征提取算法包括尺度不变特征提取算法SIFT(ScaleInvariant Feature Transform)、局部特征提取算法ORB(Oriented FAST and RotatedBRIEF);所述里程估计算法包括快速鲁棒激光雷达-惯性里程计FastLIO2(Fast DirectLiDAR-inertial Odometry)、单目视觉惯性导航VINSMono(Visual-Inertial Odometryand Navigation System for Monocular Estimation)。
需要说明的是,此时的容器环境与第一算法的开发环境相同,因此无需对第一算法进行修改,直接按照开发方式进行编译即可,无需额外进行跨平台跨系统的交叉编译,极大节省了开发人员的时间和精力。
步骤S2,在待迁移的嵌入式硬件平台上安装容器部署环境,直接将第一主机上的Ubuntu操作系统容器拷贝到嵌入式硬件平台上的容器环境中,无需重新编译,即可直接运行该Ubuntu容器中部署的第一算法。
具体地,首先在第一主机上,将完成第一算法部署和编译的Ubuntu操作系统容器提交至其所在的ARM镜像中保存。所述提交容器至镜像保存的操作通过“Docker commit”命令完成,具体为:docker commit your_container_name image_name。
将第一主机上的ARM镜像制作成压缩包,拷贝至嵌入式硬件平台上。其中,拷贝至嵌入式硬件平台的操作可通过scp命令、rz命令或者fpt工具上传完成。
在嵌入式硬件平台上加载该ARM镜像,随即进入Ubuntu操作系统容器,启动容器后可直接运行该容器中的第一算法。其中,加载该镜像的命令为:docker load<image_name.tar。进入容器的命令为:docker run -i -d [--name your_container_name] user_name/[image_name:tag]。启动容器的命令为:docker start [your_container_name]和docker exec -it [your_container_name]bash。随后可运行在前述步骤中部署并编译的第一算法。由于该第一算法已经在第一主机上完成了编译,此时无需重新编译,即可在所述的嵌入式硬件平台上直接运行。
步骤S3,嵌入式硬件平台通过有线(网线连接)或无线的方式建立与多个第二主机的ROS主从机通信链路。所述第二主机与传感器耦接,第二主机通过发布ROS话题传播传感器数据,嵌入式硬件平台上的Ubuntu容器中运行的第一算法通过订阅该话题,可成功接收到该ROS话题传播的传感器数据,从而实现对传感器数据的接收与算法处理。
需要说明的是,在没有多余操作的情况下,Ubuntu操作系统的容器内部是无法接收到发送到宿主机的数据的(在此步骤中,宿主机就是所述的嵌入式硬件平台)。例如启动一个Ubuntu操作系统容器,并在宿主机上播放一个ROS数据包,发布ROS话题传播传感器数据。此时在Ubuntu操作系统容器内通过rostopic list命令查看ROS话题列表,可以看到列表为空,表示容器内部无法接收宿主机上的ROS话题。通过嵌入式硬件平台与多个第二主机的ROS主从机通信,可以使Ubuntu操作系统容器的内部成功接收到宿主机以及第二主机发送的话题数据,从而实现Ubuntu操作系统容器内外的消息互通。
接下来,本实例将对嵌入式硬件平台与多个第二主机的ROS主从机建立通信链路的过程进行详细阐述:
在宿主机也就是嵌入式硬件平台中打开一个第一终端,启动容器。此时注意在上一步骤所述的启动嵌入式硬件平台容器的命令中额外增加网络属性,即--network host属性,将宿主机的IP和端口映射到容器内部。命令参考如下:docker run -it –network hostimage_name:tag /bin/bash。
在宿主机(即嵌入式硬件平台)中重新打开一个第二终端,在第二终端中启动ROS主机节点(即为roscore)。随后播放ROS数据包(即为rosbag),发布ROS话题。
在Ubuntu操作系统容器中打开第三终端,在第三终端中输入查看ROS话题列表的命令,查看是否可以接收到宿主机发布的ROS话题。具体命令为:rostopic list。此时可以看到第三终端输出了ROS话题的列表,表示宿主机与容器建立了通信链路。
在与宿主机(即嵌入式硬件平台)建立了ROS主从机通信的第二主机中打开第四终端,并播放ROS数据包(即为rosbag),发布ROS话题。
在容器的第三终端中输入查看ROS话题列表的命令,查看是否可以接收到第二主机发布的ROS话题。具体命令为:rostopic list。此时可以看到第三终端输出了ROS话题的列表,表示第二主机与宿主机上的容器也建立了通信链路。
需要说明的是,该方式可屏蔽硬件平台底层架构、操作系统、传感器驱动上的差异,使用户可专注于软件功能开发与测试。
进一步地,本发明实施例提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第一算法,针对第一算法的完整功能验证的模式,具体包括以下步骤:
步骤S100,将第一软件算法直接在嵌入式硬件平台上的Euler或OpenEuler操作系统上进行交叉编译,编译成功后直接将传感器接入嵌入式硬件平台,运行编译后的第一算法,实现完整功能验证。
需要说明的是,该方式实施过程中需针对跨架构、跨操作系统、跨通用计算芯片产生的编译错误进行相应的代码修改,代码修改量大,编译耗时久。但这种方式运行时可充分利用嵌入式硬件平台上的通用计算处理器的计算资源,减少由docker可能导致的延时,建议进行完整功能验证时使用。
进一步地,如图3和图4所示,本发明实施例提供了一种跨架构、跨系统、跨平台的软件部署方法,应用于第二算法,实现模型转换推理模式,具体包括以下子步骤:
步骤S200,在Ubuntu操作系统、x86架构、GPU处理器的开发主机上安装CANN(Compute Architecture for Neural Networks)工具包开发环境对智能软件算法的神经网络模型进行转换,例如,将pytorch模型.pth文件转换为开放式神经网络交换文件.onnx,再转换为嵌入式硬件平台的智能计算处理器支持的.om模型。
示例性地,将pytorch模型.pth文件转换为开放式神经网络交换文件.onnx模型,可通过安装onnx_runtime软件包完成。将onnx文件转换为嵌入式硬件平台的智能计算处理器支持的.om模型,可通过安装ATC软件包完成。
步骤S201,在嵌入式硬件平台上安装CANN Nnrt推理环境,将转换后的开发主机上的.om模型拷贝到嵌入式硬件平台上上,可实现基于NPU(Neural Network ProcessingUnit)硬件的智能计算与模型推理。
示例性,将.om模型基于NPU硬件进行智能计算与模型推理,可通用pyacl工具包完成。
需要说明的是,由于硬件平台的计算能力有限,层数很深规模较大的神经网络模型(大于10M)无法直接在硬件平台上完成转换。因此本申请选用计算能力相对较高的x86架构台式机作为开发环境,进行神经网络的转换,将嵌入式硬件平台作为推理环境,进行转换后的神经网络模型的运行。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述数据同步的方法。
本说明书还提供了图5所示的电子设备的示意结构图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述数据同步的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field ProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera HardwareDescriptionLanguage)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
以上实施例仅用于说明本发明的设计思想和特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,本发明的保护范围不限于上述实施例。所以,凡依据本发明所揭示的原理、设计思路所作的等同变化或修饰,均在本发明的保护范围之内。
Claims (10)
1.一种跨架构、跨系统、跨平台的软件部署方法,其特征在于,应用于第一算法,所述方法包括:
在第一主机上部署ARM架构虚拟机,所述第一主机的操作系统为Ubuntu操作系统,所述第一主机的架构为x86架构,在ARM架构虚拟机上安装容器,并配置一Ubuntu操作系统的容器;在容器中部署第一算法,并进行编译;
在待迁移的嵌入式硬件平台上安装容器部署环境,将第一主机上的Ubuntu操作系统的容器拷贝到嵌入式硬件平台的容器部署环境中,直接运行容器部署的第一算法;
嵌入式硬件平台与多个第二主机的ROS主从机建立通信;所述第二主机与传感器耦接,第二主机通过发布ROS话题传播传感器数据,嵌入式硬件平台上的Ubuntu容器中运行的第一算法通过订阅该话题接收到ROS话题传播的传感器数据,从而实现对传感器数据的接收与处理。
2.根据权利要求1所述的跨架构、跨系统、跨平台的软件部署方法,其特征在于,所述第一算法选自滤波估计算法、优化估计算法、图像特征提取算法和里程估计算法;所述滤波估计算法包括卡尔曼滤波、扩展卡尔曼滤波;所述优化估计算法包括高斯牛顿优化算法、LM优化算法;所述图像特征提取算法包括尺度不变特征提取算法SIFT、局部特征提取算法ORB;所述里程估计算法包括快速鲁棒激光雷达-惯性里程计FastLIO2、单目视觉惯性导航VINSMono。
3.根据权利要求1或2所述的跨架构、跨系统、跨平台的软件部署方法,其特征在于,在第一主机上部署ARM架构虚拟机,在ARM架构虚拟机上安装容器,并配置一Ubuntu操作系统的容器;在容器中部署第一算法,并进行编译包括:
在装有Ubuntu操作系统的ARM嵌入式硬件平台上生成ARM镜像;
x86架构的第一主机通过指定架构属性以拉取ARM镜像;
在第一主机上通过QEMU工具配置并运行跨平台仿真模拟器;
在第一主机上从所拉取的ARM镜像中创建一个Ubuntu操作系统容器,启动并进入容器;
在容器中部署第一算法。
4.根据权利要求1所述的跨架构、跨系统、跨平台的软件部署方法,其特征在于,在待迁移的嵌入式硬件平台上安装容器部署环境,将第一主机上的Ubuntu操作系统的容器拷贝到嵌入式硬件平台的容器部署环境中,直接运行容器部署的第一算法包括:
在第一主机上将完成第一算法部署和编译的Ubuntu操作系统容器提交至ARM镜像中保存;
在嵌入式硬件平台上加载ARM镜像,进入Ubuntu操作系统容器,启动Ubuntu操作系统容器后直接运行Ubuntu操作系统容器中的第一算法。
5.根据权利要求1所述的跨架构、跨系统、跨平台的软件部署方法,其特征在于,嵌入式硬件平台与多个第二主机的ROS主从机建立通信包括:
在嵌入式硬件平台中打开第一终端,配置网络属性以将嵌入式硬件平台的IP和端口映射到Ubuntu操作系统容器内部,启动Ubuntu操作系统容器;
在嵌入式硬件平台中打开第二终端,在第二终端中启动ROS主机节点,播放ROS数据包,发布ROS话题;在Ubuntu操作系统容器中打开第三终端,当第三终端接收到嵌入式硬件平台发布的ROS话题列表时,则表示嵌入式硬件平台与Ubuntu操作系统容器建立了通信链路;
在嵌入式硬件平台与ROS主从机通信的第二主机中打开第四终端,并播放ROS数据包,发布ROS话题;在Ubuntu操作系统容器的第三终端中输入查看ROS话题列表,当第三终端接收到第二主机发布的ROS话题时,则表示第二主机与嵌入式硬件平台上的Ubuntu操作系统容器建立了通信链路。
6.一种跨架构、跨系统、跨平台的软件部署方法,其特征在于,应用于第一算法,所述方法包括:
将第一算法直接在嵌入式硬件平台上的Euler或OpenEuler操作系统上进行交叉编译,编译成功后将传感器接入嵌入式硬件平台,运行编译后的第一算法。
7.一种跨架构、跨系统、跨平台的软件部署方法,其特征在于,应用于第二算法,所述方法包括:
在Ubuntu操作系统、x86架构、GPU处理器的开发主机上通过CANN 工具将应用第二算法的神经网络模型进行格式转换,包括:将格式为.pth的神经网络模型转换成格式为.onnx的文件,再将格式为.onnx的文件转换为嵌入式硬件平台的智能计算处理器支持的.om模型;
在嵌入式硬件平台上配置CANN Nnrt推理环境,嵌入式硬件平台加载格式转换后的.om模型从而进行模型推理。
8.根据权利要求6所述的跨架构、跨系统、跨平台的软件部署方法,其特征在于,所述第二算法为包括卷积神经网络CNN、强化学习RL在内的智能算法。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1-8任一项所述的跨架构、跨系统、跨平台的软件部署方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的跨架构、跨系统、跨平台的软件部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311306235.9A CN117407004A (zh) | 2023-10-10 | 2023-10-10 | 一种跨架构、跨系统、跨平台的软件部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311306235.9A CN117407004A (zh) | 2023-10-10 | 2023-10-10 | 一种跨架构、跨系统、跨平台的软件部署方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117407004A true CN117407004A (zh) | 2024-01-16 |
Family
ID=89493557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311306235.9A Pending CN117407004A (zh) | 2023-10-10 | 2023-10-10 | 一种跨架构、跨系统、跨平台的软件部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407004A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180173502A1 (en) * | 2016-12-21 | 2018-06-21 | Aon Global Operations Ltd (Singapore Branch) | Methods, Systems, and Portal Using Software Containers for Accelerating Aspects of Data Analytics Application Development and Deployment |
CN108762815A (zh) * | 2018-05-16 | 2018-11-06 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
CN114995811A (zh) * | 2022-06-10 | 2022-09-02 | 中国航空无线电电子研究所 | 支持多种机载嵌入式操作系统的容器接口架构系统 |
CN115599499A (zh) * | 2022-10-20 | 2023-01-13 | 湖南阿姆科技有限公司(Cn) | 一种基于容器技术的跨平台软件适配方法 |
CN115857966A (zh) * | 2022-11-30 | 2023-03-28 | 上海赫千电子科技有限公司 | 一种跨平台的神经网络模型部署方法 |
CN116578280A (zh) * | 2023-07-12 | 2023-08-11 | 北京麟卓信息科技有限公司 | 一种异构软件应用开发系统及方法 |
-
2023
- 2023-10-10 CN CN202311306235.9A patent/CN117407004A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180173502A1 (en) * | 2016-12-21 | 2018-06-21 | Aon Global Operations Ltd (Singapore Branch) | Methods, Systems, and Portal Using Software Containers for Accelerating Aspects of Data Analytics Application Development and Deployment |
CN108762815A (zh) * | 2018-05-16 | 2018-11-06 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
CN114995811A (zh) * | 2022-06-10 | 2022-09-02 | 中国航空无线电电子研究所 | 支持多种机载嵌入式操作系统的容器接口架构系统 |
CN115599499A (zh) * | 2022-10-20 | 2023-01-13 | 湖南阿姆科技有限公司(Cn) | 一种基于容器技术的跨平台软件适配方法 |
CN115857966A (zh) * | 2022-11-30 | 2023-03-28 | 上海赫千电子科技有限公司 | 一种跨平台的神经网络模型部署方法 |
CN116578280A (zh) * | 2023-07-12 | 2023-08-11 | 北京麟卓信息科技有限公司 | 一种异构软件应用开发系统及方法 |
Non-Patent Citations (2)
Title |
---|
孙微微;刘汉兴;王金凤;: "基于ARM架构鲲鹏系统的操作系统实验教学设计", 现代计算机, no. 17, 15 June 2020 (2020-06-15) * |
耿贞伟;李少华;权鹏宇;: "基于配置库管理工具的电力系统容器部署研究", 数字技术与应用, no. 02, 15 February 2017 (2017-02-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11568232B2 (en) | Deep learning FPGA converter | |
WO2014025678A1 (en) | Stacked memory device with helper processor | |
JPH11513512A (ja) | ディジタル信号プロセッサの製造方法 | |
US12073197B2 (en) | Systems and methods for generating service access points for RTE services in code or other RTE service information for use with the code | |
CN112597013A (zh) | 一种在线开发以及调试方法及装置 | |
CN113641413A (zh) | 目标模型加载更新方法及装置、可读介质和电子设备 | |
CN109445845A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
US10387584B1 (en) | Streaming on hardware-software platforms in model based designs | |
CN103793263A (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
CN107733866A (zh) | Rpc请求、rpc请求处理方法、装置以及设备 | |
CN117407004A (zh) | 一种跨架构、跨系统、跨平台的软件部署方法 | |
CN115017915B (zh) | 一种模型训练、任务执行的方法及装置 | |
CN114564241B (zh) | 硬件设备的访问方法、装置、计算机设备和存储介质 | |
CN114327660B (zh) | 基于fpga的外接内存的初始化方法 | |
CN111241031A (zh) | 一种数据计算系统、方法以及装置 | |
Lapalme et al. | . NET framework-a solution for the next generation tools for system-level modeling and simulation | |
CN112052040A (zh) | 处理方法、装置、计算机设备和存储介质 | |
CN111832714B (zh) | 运算方法及装置 | |
US20210216691A1 (en) | Verifying a hardware design for a multi-stage component | |
CN113779756A (zh) | 一种对适配器分离进行仿真分析的方法、装置和电子设备 | |
CN1661552B (zh) | 用于具有有限资源的微处理器的进程语言 | |
Lysaght et al. | Configuration controller synthesis for dynamically reconfigurable systems | |
US20200349304A1 (en) | Method, apparatus, device, and medium for implementing simulator | |
CN111105015A (zh) | 一种通用cnn推理加速器及其控制方法、可读存储介质 |
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 |