半实物OpenCL模型仿真方法、装置及计算设备与流程
- 国知局
- 2024-07-31 23:47:48
本技术涉及仿真领域,特别地,涉及一种基于opencl模型仿真的方法、装置及计算设备。
背景技术:
1、数字化仿真在航天、航空、汽车等领域的研发过程中得到了广泛的应用。这些仿真实验中会产生大量的仿真数据,如仿真的模型、参数配置和仿真结果等数据,都是宝贵的技术积累与资产,尤其是仿真结果数据。在数字仿真领域,对gpu的仿真的难度主要体现在gpu的复杂功能逻辑:一方面gpu包含的逻辑模块繁多,一个gpu包括图形显存控制器、压缩单元、bios、图形和计算整列、总线接口、电源管理单元、视频管理单元、显示界面等。面对如此复杂的功能逻辑模块进行硬件行为级仿真,其难度和工作量都极大。另一方面,gpu的并行计算能力,当下几乎难以用普通设备模拟的方式来实现仿真。
2、现有技术中即便采用api级别的仿真去实现gpu设备相关功能,但技术受限于某种特定的硬件平台,通用性不佳,无法兼容其它嵌入式系统的gpu应用。
3、为此,亟需一种新的仿真方案来解决现有技术之缺陷。
技术实现思路
1、本发明之目的在于提供一种半实物opencl模型仿真方法、装置及计算设备,在半实物仿真的基础上,以兼容不同嵌入式系统的opencl功能函数仿真为目的,采用多端通信的方式,不仅能规避gpu复杂设备属性的问题,还能实现基于虚拟仿真平台的低负担的gpu的opencl逻辑功能的虚拟仿真。
2、根据本技术的一个方面,提供了一种半实物opencl模型仿真方法,包括:分别建立目标机、管道和客户端的仿真抽象层,采用静态/动态编码技术配合驱动抽象层。抽象层基于模块化构建,以动态库的形式被虚拟仿真平台加载。在目标机一侧的仿真抽象层创建内存模型及通过相应进程加载内存模型。在管道一侧的仿真抽象层创建相应进程和线程来监听内存模型更新的数据,通过调度器来进行设备的解析来区分各种数据源且做好分发操作,以及分配缓存区和线程来分发并调度经进程间通信的进程交互后的仿真参数及结果至目标机一侧。进程间通信的进程交互包括:管道访问及转发编码组包协议创建的数据包,该编码组包协议为采用api数据流及轻量化描述进行数据组包编码。轻量化描述进行数据组包编码包括将数据包封装为接口的编码、总的长度和该传递给该接口的参数的格式。管道获取了数据组包编码数据后,通过tcp/udp的传输机制实现多进程/多线程/多机通信。分配缓存区和线程来分发数据包括:将触屏设备的触点信号发给管道,通过管道的调度器来分发触点信号来实现画面显示及触屏交互的场景。在客户端一侧的仿真抽象层创建兼容显卡驱动运算且能与管道通信的进程,该模型接收进程间通信的进程的数据进行同步并行仿真运算,仿真运算后返回相应仿真参数及结果至管道一侧。显卡驱动加载客户端一侧的仿真运算结果并输出给相应显示外设。
3、可选地,在根据本技术的方法中,分配缓存区和线程来分发并调度经进程间通信的进程交互后的仿真参数及结果包括:a模块将数据组包编码通过ipc协议将数据发送给b模块。b模块通过ipc协议接收相应数据及将数据进行解码,对接收到的数据进行解码分析处理。并且,将仿真运算结果输出给相应显示外设。
4、可选地,在根据本技术的方法中,对接收到的数据进行解码分析处理及将仿真运算结果输出给相应显示外设包括:将所有的opencl api函数的数据包逐个的进行接口解析。并且,根据解码的结果,调用本地机的显卡驱动实现对应opencl的驱动接口。若api需要返回值或一些输入设备产生的输入事件被捕获时,则将本地调用api执行的结果或事件信息,经过管道回传给目标机。模拟opencl设备的主机处理器cpu及其它的硬件设备。模拟opencl的并行模型,包括任务并行和数据并行,使用多线程或者其他方式实现并行运算。模拟opencl的事件机制,用以对并行流程的同步控制和互斥。
5、可选地,在根据本技术的方法中,实现对应opencl的驱动接口包括对内存模型、内核模型、线程模型、命令队列以及同步机制模型进行分析和处理。处理内核模型包括对opencl内核函数解析、对opencl对象创建和销毁和进行opencl事件处理。处理内存模型包括对内存进行分配和释放、对内存进行读写操作、对内存对象进行映射和取消、对内存缓冲区对象进行创建和释放和对工作组局部内存的操作。处理线程模型包括对工作项、工作组和内核线程分配进行处理。处理命令队列包括解析opencl应用程序中的命令队列,模拟指令的执行过程。处理同步机制模型包括处理事件同步,以及处理工作项和工作组的同步。
6、可选地,在根据本技术的方法中,a模块和b模块存在同一个进程内,b模块为a模块的线程。或者,a模块和b模块作为两个单独的进程,a模块和b模块并行运行在一台物理机器上。或者,a模块和b模块分别运行在两台支持远程通信的物理机器上,作为单独的进程运行a模块将数据组包编码通过ipc协议将数据发送给b模块。
7、可选地,在根据本技术的方法中,调用api执行的结果或事件信息包括:在无返回值时,若参数为数值类型,则将接口编码和参数直接写入设备内存中。在无返回值时,若参数为传递数组数据类型,则将接口编码和参数直接写入设备内存中且额外记录数组数据的长度,再将数组数据全部写入。在有返回值时,则将接口编码和参数直接写入设备内存中且调用回读的循环等待主机端的返回值。
8、可选地,在根据本技术的方法中,对数据作解码分析处理包括:函数解码,对所有的opencl api函数的数据包逐个进行接口解析。模拟设备,模拟opencl设备的主机处理器cpu以及其它的硬件设备。并行运算框架。处理协作同步机制,模拟opencl的事件机制,用以对并行流程的同步控制和互斥。
9、根据本技术的再一方面,提供了一种半实物opencl模型仿真装置,其包括目标机、管道和客户端:分别在相应设备上建立目标机、管道和客户端的仿真抽象层,采用静态/动态编码技术配合驱动抽象层。抽象层基于模块化构建,以动态库的形式被虚拟仿真平台加载。在目标机一侧的仿真抽象层创建内存模型及通过相应进程加载内存模型。在管道一侧的仿真抽象层创建相应进程和线程来监听内存模型更新的数据,通过调度器来进行设备的解析来区分各种数据源且做好分发操作,以及分配缓存区和线程来分发并调度经进程间通信的进程交互后的仿真参数及结果至目标机一侧。进程间通信的进程交互包括:管道访问及转发编码组包协议创建的数据包,该编码组包协议为采用api数据流及轻量化描述进行数据组包编码。轻量化描述进行数据组包编码包括将数据包封装为接口的编码、总的长度和该传递给该接口的参数的格式。管道获取了数据组包编码数据后,通过tcp/udp的传输机制实现多进程/多线程/多机通信。分配缓存区和线程来分发数据包括:将触屏设备的触点信号发给管道,通过管道的调度器来分发触点信号来实现画面显示及触屏交互的场景。在客户端一侧的仿真抽象层创建兼容显卡驱动运算且能与管道通信的进程,该模型接收进程间通信的进程的数据进行同步并行仿真运算,仿真运算后返回相应仿真参数及结果至管道一侧。显卡驱动加载客户端一侧的仿真运算结果并输出给相应显示外设。
10、根据本技术的再一方面,提供了一种计算设备,包括:一个或多个处理器存储器。一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行如上任一方法的指令。
11、根据本技术的再一方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令在被计算设备执行时,使得计算设备执行如上的任一方法。
12、综上,根据本技术的方案,在半实物opencl仿真的基础上,以兼容不同嵌入式系统的opencl功能函数仿真为目的,采用多端通信的方式,不仅能规避gpu复杂设备属性的问题,还能实现基于虚拟仿真平台的低负担的gpu的opencl逻辑功能的虚拟仿真。与现有技术相比,本发明与软件层/应用层耦合性低能兼容运行任何图形应用,易于扩展,并且,在快速实现对各种gpu设备的仿真的同时,不会产生额外工作开销。
13、本发明相对于现有技术具备如下优势:
14、优势一:扩展性好,灵活度高。
15、本发明由于是基于接口仿真,只需实现目标gpu对应的静态编码和动态编码的opencl等图形标准规范库库版本即可,由于两种接口规范都具备向下兼容性,因此大部分接口已经实现的情况下,重新实现一个gpu仿真模块,只需要仿真少量接口即可。同时整个仿真模型,基于模块化构建,非常灵活,易于扩展。
16、优势二:性能强劲。
17、本发明本质是直接调用了宿主机的gpu设备,来完成对目标gpu的功能实现,相比于传统的处理器设备仿真模型,直接调用宿主机的gpu设备运算效率肯定比模拟gpu设备的性能效率要高。
18、优势三:通用性好。
19、本发明的技术方案在实现上,对各个组成部分机进行了插件化,可以根据实际的业务场景,进行微调,来满足不同业务的差异化需求。通用性好,适配性高。
本文地址:https://www.jishuxx.com/zhuanli/20240730/198553.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。