如何利用OpenGL巧妙实现GPU仿真

2022-09-13 09:27:14 digiproto
GPU(Graphics Processing Unit)图形处理器,是一种可以在个人电脑、工作站和移动设备(如平板电脑、智能手机等)上进行图形计算工作的微处理器,通常由图形显存控制器、压缩单元、BIOS(Basic Input Output System,基本输入输出系统)、图形和计算整列、总线接口、电源管理单元、视频管理单元等组成。


GPU不像CPU(Central Processing Unit,中央处理器)一样可以使用常规方法进行编程操作,一般作为辅助单位配合CPU工作。控制GPU工作的方法有很多,比较通用的是采用OpenGL图形库。


OpenGL(Open Graphics Library,开放式图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API,Application Programming Interface),也是调用GPU功能的编程规范,严格规定了每个函数该如何执行及其输出值。OpenGL由近350个不同的函数调用组成,通常用于实现从简单的图形绘制到复杂的三维景象,常应用于CAD(Management Software Computer Aided Design,MS-CAD,管理软件计算机辅助设计)、虚拟现实、科学可视化程序和电子游戏开发。


OpenGL并未对实现细节进行规范,无论实现形式如何,只要其功能和结果与规范相匹配(用户不会感受到功能上的差异)即可。实际的OpenGL库开发者通常是显卡的生产商,相关OpenGL版本均为该系列显卡专门开发。


GPU的使用对象(图形应用开发者)一般更为关注GPU所支持的OpenGL版本,其次是硬件资源。前者关系到自己开发应用的底层图形接口的版本,后者则涉及性能问题。就目前来讲,GPU的采购价格相对昂贵,研发阶段难以做到人手一个硬件平台。采用仿真手段及方案则可大大减少前期的研发投入,更利于进行快速验证和持续集成。


天目全数字实时仿真软件SkyEye能够以半物理化的形式实现GPU仿真,可通过SkyEye将虚拟机上对OpenGL库的调用“映射”到真实GPU上进行操作。


具体来说,在SkyEye上运行的目标机系统完全透明,开发人员可以利用多种手段捕获目标机程序中调用的特定OpenGL接口规范,并将其转译成宿主机真实GPU所支持的OpenGL接口规范,同时调用宿主机GPU来运行转译后的OpenGL接口,并将运行结果反馈给目标机,从而实现基本的图形渲染模拟及数学运算的场景。

image.gif

▲SkyEye仿真JM7200,渲染三维图形效果图


开发人员还可基于SkyEye实现触屏设备的仿真:将触屏设备的触点交互转换成对宿主机上图形窗口上的鼠标交互,确保宿主机与目标机数据互通有无,操作一致。


通过SkyEye内置的GPU仿真模块,开发人员可构建与目标机真实环境一致的运行环境。任何存在图形处理需求的场景都可以应用SkyEye,常见场景如下:

1. 航电系统领域:提供对显控计算机、飞行画面的模拟;

2. 消费电子领域:提供对移动端GPU的模拟;

3. 医疗设备领域:提供对医疗影像处理的模拟;

4. 智慧安防领域:提供对图形处理的模拟;

5. 边缘计算领域:提供对AI计算的模拟。

图形处理需求的场景都可以应用SkyEye.png


基于SkyEye的GPU仿真方案有着诸多显著优势:

1. 适配性好,方便替换各类GPU(该GPU只需要支持OpenGL即可);

2. 性能强劲,由于半虚拟化仿真的特点,可以直接接入更高性能的GPU提升渲染速度,加快图形化应用的整体运行速度,提升整个仿真系统的性能。



SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模,是真实物理硬件的数字孪生。

SkyEye宣发.png



标签: GPU 仿真建模
首页
产品
新闻
联系