System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及仿真领域,特别地,涉及一种基于opencl模型仿真的方法、装置及计算设备。
技术介绍
1、数字化仿真在航天、航空、汽车等领域的研发过程中得到了广泛的应用。这些仿真实验中会产生大量的仿真数据,如仿真的模型、参数配置和仿真结果等数据,都是宝贵的技术积累与资产,尤其是仿真结果数据。在数字仿真领域,对gpu的仿真的难度主要体现在gpu的复杂功能逻辑:一方面gpu包含的逻辑模块繁多,一个gpu包括图形显存控制器、压缩单元、bios、图形和计算整列、总线接口、电源管理单元、视频管理单元、显示界面等。面对如此复杂的功能逻辑模块进行硬件行为级仿真,其难度和工作量都极大。另一方面,gpu的并行计算能力,当下几乎难以用普通设备模拟的方式来实现仿真。
2、现有技术中即便采用api级别的仿真去实现gpu设备相关功能,但技术受限于某种特定的硬件平台,通用性不佳,无法兼容其它嵌入式系统的gpu应用。
3、为此,亟需一种新的仿真方案来解决现有技术之缺陷。
技术实现思路
1、本专利技术之目的在于提供一种半实物opencl模型仿真方法、装置及计算设备,在半实物仿真的基础上,以兼容不同嵌入式系统的opencl功能函数仿真为目的,采用多端通信的方式,不仅能规避gpu复杂设备属性的问题,还能实现基于虚拟仿真平台的低负担的gpu的opencl逻辑功能的虚拟仿真。
2、根据本申请的一个方面,提供了一种半实物opencl模型仿真方法,包括:分别建立目标机、管道和客户端的仿真抽象层,
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的传输机制实现多进程/多线程/多机通信。分配缓存区和线程来分发数据包括:将触屏设备的触点信号发给管道,通过管道的调度器来分发触点信号来实现画面显示及触屏交互的场景。在客户端一侧的仿真抽象层创建兼容显卡驱动运算且能与管道通信的进程,该模型接收进程间通信的进程的数据进行同步并行仿真运算,仿真运算后返回相应仿真参数及结果至管道一侧。显卡驱动加载客户端一侧的仿真本文档来自技高网...
【技术保护点】
1.一种半实物OpenCL模型仿真方法,其特征在于,包括:
2.如权利要求1所述的方法,其中,分配缓存区和线程来分发并调度经进程间通信的进程交互后的仿真参数及结果包括:
3.如权利要求2所述的方法,其中,对接收到的数据进行解码分析处理及将仿真运算结果输出给相应显示外设包括:
4.如权利要求3所述的方法,其中,实现对应OpenCL的驱动接口包括对内存模型、内核模型、线程模型、命令队列以及同步机制模型进行分析和处理;
5.如权利要求2所述的方法,其中,
6.如权利要求3所述的方法,其中,调用API执行的结果或事件信息包括:
7.如权利要求2所述的方法,其中,对数据作解码分析处理包括:
8.一种半实物OpenCL模型仿真装置,其特征在于,包括目标机、管道和客户端:
9.一种计算设备,包括:
10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令在被计算设备执行时,使得所述计算设备执行如权利要求1-7中任一项所述的方法。
【技术特征摘要】
1.一种半实物opencl模型仿真方法,其特征在于,包括:
2.如权利要求1所述的方法,其中,分配缓存区和线程来分发并调度经进程间通信的进程交互后的仿真参数及结果包括:
3.如权利要求2所述的方法,其中,对接收到的数据进行解码分析处理及将仿真运算结果输出给相应显示外设包括:
4.如权利要求3所述的方法,其中,实现对应opencl的驱动接口包括对内存模型、内核模型、线程模型、命令队列以及同步机制模型进行分析和处理;
5.如权利要求2...
【专利技术属性】
技术研发人员:曾子强,康烁,
申请(专利权)人:浙江迪捷软件科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。