CN107066378B - 一种实时在线gpu通用计算模拟及调试方法 - Google Patents
一种实时在线gpu通用计算模拟及调试方法 Download PDFInfo
- Publication number
- CN107066378B CN107066378B CN201710052412.3A CN201710052412A CN107066378B CN 107066378 B CN107066378 B CN 107066378B CN 201710052412 A CN201710052412 A CN 201710052412A CN 107066378 B CN107066378 B CN 107066378B
- Authority
- CN
- China
- Prior art keywords
- gpu
- thread
- code
- cpu
- general
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- 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/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种实时在线GPU通用计算模拟及调试方法,首先将GPU上的通用计算代码原生的映射为CPU上运行的高级语言代码,这样使得整个的程序的代码全部转换成CPU代码,保证了模拟后的GPU代码能实时的在线调试。对于GPU的并行运算,本发明构建了相等数量线程的CPU线程池模拟GPU的并行运算,这保证了模拟GPU通用计算程序的运行速度。同时对于多线程的模拟GPU并行运算程序,本发明可以指定特定线程序号进行调试,这为并行计算的调试提供了极大的便捷性。
Description
技术领域
本发明属于GPU通用计算技术领域,具体涉及一种实时在线GPU通用计算模拟及调试方法的设计。
背景技术
GPU(Graphic Processing Unit,图形处理单元)具有很好的并行处理能力,经过2001年与2002年的两次重大变革,程序员能够灵活地编程控制GPU的顶点着色器与像素着色器,使得GPU不再局限于最初的图形渲染加速。利用GPU可以实现计算地并行化,从而大大地缩短计算时间,提高算法地执行效率。微软DirectX11API加入Computer Shader的新特性,在Compute Shader的帮助下,程序员可直接将GPU作为并行处理器加以利用,GPU将不仅具有3D渲染的能力,同时具有进行通用计算的能力。
随着各行业对GPU通用计算越来越广泛的使用,编写GPU上运行的通用计算代码也逐渐成为程序开发人员一项普通的工作。GPU代码的复杂度从最初简单的四则运算已经扩展到复杂的逻辑运算,代码的编写量也大大增加。这使得开发人员迫切需要获得一种GPU代码的调试方法来跟踪程序运行的过程,检验程序运行每个步骤的中间结果,最终确保代码在GPU上运行能得到正确的结果。同时为了保证在不支持GPU通用计算的低端显卡上的电脑上,程序也能正常运行,也需要将GPU代码转换成在CPU上能编译执行的代码,这样就能保证程序的正常运行。
现有的GPU通用计算平台,如微软推出的Direct Computer,对GPU通用计算都提供了一定程度的CPU上的软件模拟,同时也提供了一些工具对GPU程序运行过程中的调试信息进行输出。微软的Microsoft Visual Studio 2013及之后的版本对DirectX 3D(包括Direct Computer)也提供了代码的调试功能。但这些平台提供的调试功能要么只提供调试信息的输出而不能直接对代码进行调试,要么能提供代码的调试功能但是只能获取GPU某一时刻状态及数据从而只能对GPU某一时刻的状态进行代码进行调试(如MicrosoftVisual Studio提供的Graphics Debugging工具)。这样都难以满足程序开发人员对大规模GPU通用计算代码的调试需求。
发明内容
本发明的目的是为了解决现有的GPU通用计算代码调试方法难以满足程序开发人员对大规模GPU通用计算代码的调试需求的问题,提出了一种实时在线GPU通用计算模拟及调试方法。
本发明的技术方案为:一种实时在线GPU通用计算模拟及调试方法,包括以下步骤:
S1、将GPU通用计算代码映射成对应的CPU高级语言代码;
S2、模拟GPU同CPU的数据交换过程;
S3、构建线程池,模拟GPU通用计算的过程;
S4、指定固定线程,对模拟的GPU通用计算代码进行调试。
进一步地,步骤S1包括以下分步骤:
S11、将GPU通用计算代码使用的基础数据类型映射成CPU高级语言的数据类型;
S12、将GPU通用计算中的寄存器变量映射成CPU高级语言中的结构体变量;
S13、将GPU通用计算中指定线程组各分量上线程数目的设定方式映射为CPU高级语言的设定方式;
S14、将GPU通用计算中的入口函数映射成CPU高级语言的被调函数。
进一步地,步骤S2具体为:
在步骤S12生成的结构体变量中分配相同大小的内存,同时通过对GPU寄存器的宏定义区分这些变量的不同寄存器类型及索引;在CPU代码中设定“是否进行GPU模拟”的标志位,当进行GPU计算时标志位值为“真”,向GPU寄存器内写入和读取数据;当使用CPU代码模拟GPU计算时标志位值为“假”,CPU代码直接将数据送入内存,计算结束时将数据从相应的内存中读出。
进一步地,步骤S3包括以下分步骤:
S31、设在GPU中允许的线程组内最大线程数目为GPU_MAX_THREADNUM,那么在CPU代码中初始建立GPU_MAX_THREADNUM数目的线程,线程的入口函数ThreadFun(threadID)相同,其中参数threadID为线程的索引,且threadID=1,2,…,GPU_MAX_THREADNUM;
S32、设在步骤S1中GPU通用计算代码被映射成了C++类:GPU_SIM,在调用GPU模拟代码的文件中,定义GPU_SIM类型的变量GPU_SIM_CODE;构建函数Fun_Set()用于向步骤S31中的入口函数ThreadFun(threadID)传递GPU线程组及线程组内各分量的线程个数,以及变量GPU_SIM_CODE的指针;
S33、在入口函数ThreadFun(threadID)中进行映射,将GPU中三维结构的线程映射到一维的线程池中,使得CPU调用的GPU模拟函数参数和GPU的入口函数中的参数含义一致,完成线程池的构建;
S34、程序启动时,启动线程执行入口函数ThreadFun(threadID),当程序调用GPU模拟计算部分的代码时,程序告知线程模拟器GPU并行计算的线程数目,同时向入口函数ThreadFun(threadID)告知GPU模拟代码的入口地址,ThreadFun(threadID)计算出GPU模拟代码的参数后便调用GPU模拟代码完成并行计算,最后从相应内存读入计算后的数据。
进一步地,步骤S4具体为:
定义“是否指定线程ID运行”的标志位bRunOnlyThread,同时定义允许运行的三维线程ID变量ThreadID,根据已构建的GPU模拟器,在入口函数ThreadFun(threadID)内判断标志位bRunOnlyThread,如果标志位为真,则通过过滤非ThreadID的线程来指定ThreadID的线程的运行,从而只针对ThreadID的线程进行调试。
本发明的有益效果是:本发明首先将GPU上的通用计算代码原生的映射为CPU上运行的高级语言代码,这样使得整个的程序的代码全部转换成CPU代码,保证了模拟后的GPU代码能实时的在线调试。对于GPU的并行运算,本发明构建了相等数量线程的CPU线程池模拟GPU的并行运算,这保证了模拟GPU通用计算程序的运行速度。同时对于多线程的模拟GPU并行运算程序,本发明可以指定特定线程序号进行调试,这为并行计算的调试提供了极大的便捷性。
附图说明
图1为本发明提供的一种实时在线GPU通用计算模拟及调试方法流程图。
图2为本发明实施例的GPU线程组成方式示意图。
具体实施方式
下面结合附图对本发明的实施例作进一步的说明。
本发明提供了一种实时在线GPU通用计算模拟及调试方法,如图1所示,包括以下步骤:
S1、将GPU通用计算代码映射成对应的CPU高级语言代码,相应的高级语言代码可以嵌入当前GPU通用计算程序的代码中。
该步骤具体包括以下分步骤:
S11、将GPU通用计算代码使用的基础数据类型映射成CPU高级语言的数据类型。
本发明实施例中,GPU通用计算方法采用DirectX的Computer Shader进行计算,使用HLSL语言进行GPU代码的编写,而CPU部分的代码采用VC++语言进行编写。这里将HLSL的基础数据映射成C++语言的含有相应数据成员的结构体,即在C++头文件里定义和GPU数据类型同名的结构体,此结构体内包含和GPU同名的数据成员,这样在C++语言里也能定义与HLSL相同类型的变量。对于GPU基础数据类型的符号运算,C++语言中可以通过运算符重载的方式进行映射,如HLSL中的float3数据类型,包含x,y,z三个float类型的数据成员,那么映射到C++中便是struct float3{float x;float y;float z;}。
S12、将GPU通用计算中的寄存器变量映射成CPU高级语言中的结构体变量。
本发明实施例中,包括用于向GPU进行数据输入的变量类型:StructuredBuffer<Type>InputVar REGISTER(t0);用于从GPU进行数据输出的变量类型:RWStructuredBuffer<Type>OutputVar REGISTER(u0)。在C++语言中使用定义模板类的方法,定义相应的StructuredBuffer,RWStructuredBuffer类型,同时通过宏定义将REGISTER(t0)替换成C++上获取相应数据类型的变量的函数。这样就可以将GPU上使用的寄存器变量映射成CPU上使用的结构体变量了。
S13、将GPU通用计算中指定线程组各分量上线程数目的设定方式映射为CPU高级语言的设定方式。
本发明实施例中,GPU线程组各分量线程数目的设定位于入口函数上方:[numthreads(x,y,z)],这里通过宏定义的方式将GPU中线程数目设定方式转换成C++中通过函数返回包含各分量线程数目信息的变量,此变量用于运行时线程数目的设定。
S14、将GPU通用计算中的入口函数映射成CPU高级语言的被调函数。
通过步骤S11-S13的映射,GPU中HLSL内使用的入口函数可以自然的映射为C++中相应的函数。本发明实施例中,通过宏映射的方式将HLSL文件包含的变量及函数封装到统一的C++类,方便CPU上通用计算代码的调用。
通过以上四个步骤的映射,就成功将用于GPU上运行的HLSL源代码文件转换成CPU上运行的C++源代码文件了,将此文件包含于调用它的C++调用代码文件之中,便可用其进行计算了。
S2、模拟GPU同CPU的数据交换过程。
从S1可以看到,GPU中HLSL代码包含接收数据输入的变量和用于数据输出的变量。我们通常用于GPU通用计算的程序包括CPU代码和GPU代码两部分,CPU代码主要用于整个程序框架的构建(包括程序的输入及界面的显示),而GPU代码主要用于并行计算。通常用于计算的输入信息通过内存传到GPU,GPU计算完毕之后数据再传回内存用于进一步处理或输出。
这里我们利用步骤S12中对StructuredBuffer,RWStructuredBuffer的C++结构体(C++类)的定义,在此结构体中分配相同大小的内存,同时通过对GPU寄存器(REGISTER)的宏定义区分这些变量的不同寄存器类型及索引。那么便可以在CPU代码中设定“是否进行GPU模拟”的标志位,当进行GPU计算时标志位值为“真”,就可以向GPU寄存器内写入和读取数据了;当使用CPU代码模拟GPU计算时标志位值为“假”,那么CPU代码就直接将数据送入内存,计算结束时将数据中相应的内存中读出。这样便到达模拟GPU同CPU进行数据交换过程的目的。
S3、构建线程池,模拟GPU通用计算的过程。
为了在CPU代码中并行的模拟GPU代码的运行,这里需要构建GPU模拟器(GPUSimulator),即构建线程池将GPU中设定的线程组内各分量的线程映射到CPU线程池中。该步骤具体包括以下分步骤:
S31、设在GPU中允许的线程组内最大线程数目为GPU_MAX_THREADNUM,那么在CPU代码中初始建立GPU_MAX_THREADNUM数目的线程,线程的入口函数ThreadFun(threadID)相同,其中参数threadID为线程的索引,且threadID=0,1,2,…,GPU_MAX_THREADNUM。
S32、设在步骤S1中GPU通用计算代码被映射成了C++类:GPU_SIM,在调用GPU模拟代码的文件中,定义GPU_SIM类型的变量GPU_SIM_CODE。构建函数Fun_Set()用于向步骤S31中的入口函数ThreadFun(threadID)传递GPU线程组及线程组内各分量的线程个数,以及变量GPU_SIM_CODE的指针。
S33、由于在步骤S1中建立的线程池是线性的,而GPU中线程组成方式是三维的线程组Dispatch(X,Y,Z)及线程组内三维的线程threadnum[x,y,z],如图2所示。这里需要将GPU中这种三维结构的线程映射到一维的线程池中。这里我们在入口函数ThreadFun(threadID)中进行映射,对于GPU线程组Dispatch(X,Y,Z),令ThreadGroupNum=X*Y*Z,循环调用ThreadGroupNum次线程组线程,对每次循环的次数i,令GroupIDZ=i%Z,GroupIDXY=i/Z,GroupIDY=GroupIDXY%Y,GroupIDX=GroupIDXY/Y;同理对线程组内的线程threadnum[x,y,z],令threadz=threadID%z,threadxy=threadID/z,thready=threadxy%y,threadx=threadxy/y,这样就把一维的线程组和一维的组内线程映射成三维的线程组及三维的组内线程了,那么通过简单组合就能使得CPU调用的GPU模拟函数参数和HLSL中GPU的入口函数void CSMain(uint3Gid,uint3DTid,uint3GTid,uint GI){}中的参数含义一致。
S34、通过步骤S31-S33的构建,程序启动时,启动线程执行入口函数ThreadFun(threadID),当程序调用GPU模拟计算部分的代码时,程序告知线程模拟器GPU并行计算的线程数目,同时向入口函数ThreadFun(threadID)告知GPU模拟代码的入口地址,这样ThreadFun(threadID)计算出GPU模拟代码的参数后便调用GPU模拟代码完成并行计算,最后从相应的内存读入计算后的数据。
S4、指定固定线程,对模拟的GPU通用计算代码进行调试。
在步骤S3中我们构建的GPU模拟器的线程池线程数目和GPU并行计算的线程数目是相同的,且成功将GPU并行计算所用的线程映射到线性的线程池中。但是对于开发过多线程程序的开发人员就知道,对于使用相同入口函数的多线程程序,每个线程调用入口函数的顺序是不定的,在某一个线程执行入口函数的过程中,线程因时间片使用完毕就会发Context Switch,此线程被暂停,交由另一个线程执行入口函数,这样在模拟GPU运算的代码的调试过程中会不停的发生线程切换,导致大大增加代码调试的难度。在本发明实施例中,我们设定“是否指定线程ID运行”的标志位bRunOnlyThread,同时定义允许运行的三维线程ID变量ThreadID,那么我们可以根据已构建的GPU模拟器,在入口函数ThreadFun(threadID)内判断标志位bRunOnlyThread,如果标志位为真,那么我们可以通过过滤非ThreadID的线程来指定ThreadID的线程的运行,这样就可以只针对ThreadID的线程进行调试,大大增加了模拟GPU通用计算代码调试的便捷性。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (3)
1.一种实时在线GPU通用计算模拟及调试方法,其特征在于,包括以下步骤:
S1、将GPU通用计算代码映射成对应的CPU高级语言代码;步骤S1包括以下分步骤:
S11、将GPU通用计算代码使用的基础数据类型映射成CPU高级语言的数据类型;
S12、将GPU通用计算中的寄存器变量映射成CPU高级语言中的结构体变量;
S13、将GPU通用计算中指定线程组各分量上线程数目的设定方式映射为CPU高级语言的设定方式;
S14、将GPU通用计算中的入口函数映射成CPU高级语言的被调函数;
S2、模拟GPU同CPU的数据交换过程;步骤S2具体为:
利用步骤S12中对StructuredBuffer,RWStructuredBuffer的C++结构体的定义,在步骤S12生成的结构体变量中分配相同大小的内存,同时通过对GPU寄存器的宏定义区分这些变量的不同寄存器类型及索引;在CPU代码中设定“是否进行GPU模拟”的标志位,当进行GPU计算时标志位值为“真”,向GPU寄存器内写入和读取数据;当使用CPU代码模拟GPU计算时标志位值为“假”,CPU代码直接将数据送入内存,计算结束时将数据从相应的内存中读出;
S3、构建线程池,模拟GPU通用计算的过程;
S4、指定固定线程,对模拟的GPU通用计算代码进行调试。
2.根据权利要求1所述的实时在线GPU通用计算模拟及调试方法,其特征在于,所述步骤S3包括以下分步骤:
S31、设在GPU中允许的线程组内最大线程数目为GPU_MAX_THREADNUM,那么在CPU代码中初始建立GPU_MAX_THREADNUM数目的线程,线程的入口函数ThreadFun(threadID)相同,其中参数threadID为线程的索引,且threadID=0,1,2,…,GPU_MAX_THREADNUM-1;
S32、设在步骤S1中GPU通用计算代码被映射成了C++类:GPU_SIM,在调用GPU模拟代码的文件中,定义GPU_SIM类型的变量GPU_SIM_CODE;构建函数Fun_Set()用于向步骤S31中的入口函数ThreadFun(threadID)传递GPU线程组及线程组内各分量的线程个数,以及变量GPU_SIM_CODE的指针;
S33、在入口函数ThreadFun(threadID)中进行映射,将GPU中三维结构的线程映射到一维的线程池中,使得CPU调用的GPU模拟函数参数和GPU的入口函数中的参数含义一致,完成线程池的构建;
S34、程序启动时,启动线程执行入口函数ThreadFun(threadID),当程序调用GPU模拟计算部分的代码时,程序告知线程模拟器GPU并行计算的线程数目,同时向入口函数ThreadFun(threadID)告知GPU模拟代码的入口地址,ThreadFun(threadID)计算出GPU模拟代码的参数后便调用GPU模拟代码完成并行计算,最后从相应内存读入计算后的数据。
3.根据权利要求2所述的实时在线GPU通用计算模拟及调试方法,其特征在于,所述步骤S4具体为:
定义“是否指定线程ID运行”的标志位bRunOnlyThread,同时定义允许运行的三维线程ID变量ThreadID,根据已构建的GPU模拟器,在入口函数ThreadFun(threadID)内判断标志位bRunOnlyThread,如果标志位为真,则通过过滤非ThreadID的线程来指定ThreadID的线程的运行,从而只针对ThreadID的线程进行调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710052412.3A CN107066378B (zh) | 2017-01-24 | 2017-01-24 | 一种实时在线gpu通用计算模拟及调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710052412.3A CN107066378B (zh) | 2017-01-24 | 2017-01-24 | 一种实时在线gpu通用计算模拟及调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066378A CN107066378A (zh) | 2017-08-18 |
CN107066378B true CN107066378B (zh) | 2020-12-04 |
Family
ID=59598014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710052412.3A Active CN107066378B (zh) | 2017-01-24 | 2017-01-24 | 一种实时在线gpu通用计算模拟及调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066378B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108652610B (zh) * | 2018-06-04 | 2020-12-22 | 成都皓图智能科技有限责任公司 | 一种多人心跳的非接触式检测方法 |
CN109063340B (zh) * | 2018-08-03 | 2023-08-25 | 格兰菲智能科技有限公司 | 基于仿真的gpu性能的测试方法及装置 |
CN111383340B (zh) * | 2018-12-28 | 2023-10-17 | 成都皓图智能科技有限责任公司 | 一种基于3d图像的背景过滤方法、装置及系统 |
CN110287100A (zh) * | 2019-05-21 | 2019-09-27 | 北京达佳互联信息技术有限公司 | 着色器代码的调试方法、装置、电子设备及存储介质 |
CN110287106B (zh) * | 2019-05-24 | 2023-09-26 | 北京达佳互联信息技术有限公司 | 着色器代码的调试方法、装置、电子设备及存储介质 |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN115794419B (zh) * | 2023-02-06 | 2023-04-18 | 深流微智能科技(深圳)有限公司 | Gpu的调控系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183400B (zh) * | 2007-12-21 | 2011-06-15 | 威盛电子股份有限公司 | 图形硬件设计中调试与验证的方法与系统 |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
KR101136850B1 (ko) * | 2010-07-22 | 2012-04-20 | 연세대학교 산학협력단 | 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템 |
CN102207987B (zh) * | 2011-05-31 | 2012-11-21 | 中国航天标准化研究所 | 基于OpenCL的GPU加速三维时域有限差分电磁场仿真的方法 |
CN104391679A (zh) * | 2014-11-18 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种非规则流中高维数据流的gpu处理方法 |
-
2017
- 2017-01-24 CN CN201710052412.3A patent/CN107066378B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107066378A (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066378B (zh) | 一种实时在线gpu通用计算模拟及调试方法 | |
US8400444B2 (en) | Method to render a root-less scene graph with a user controlled order of rendering | |
US5615333A (en) | Integration testing method for object-oriented software | |
EP1018071A1 (en) | Control program tracking and display system | |
Nusrat et al. | How developers optimize virtual reality applications: A study of optimization commits in open source unity projects | |
Liang et al. | The study of soft PLC running system | |
CN107038060B (zh) | 一种页面着色器代码调试方法、装置 | |
Johnsen et al. | Modeling resource-aware virtualized applications for the cloud in Real-Time ABS | |
Bandener et al. | Extending DMM behavior specifications for visual execution and debugging | |
CN111773727A (zh) | 一种基于WebGL的网页游戏的开发方法 | |
JP2011138494A (ja) | 仮想タスクを使用したマルチコアプロセッサの性能解析のための関係モデル化 | |
US7096453B2 (en) | Data definition language | |
CN111580409A (zh) | 面向实时嵌入式系统的故障仿真测试方法 | |
Faryabi | Data-oriented Design approach for processor intensive games | |
CN113705004B (zh) | 一种适合dsp的实时系统行为级软件仿真方法 | |
CN116126366B (zh) | 芯片输入输出接口配置方法,装置,介质及电子设备 | |
Revie | Designing a Data-Driven Renderer | |
Seo et al. | Pvot: An interactive authoring tool for virtual reality | |
JP3270729B2 (ja) | 拡張命令セット・シミュレータ | |
CN115904971A (zh) | 基于VxWorks系统的机载平台软件的封装和测试方法 | |
Cornaglia | Early Timing Exploration of Embedded Software for Heterogeneous Platforms | |
CN118154759A (zh) | 一种可编程管线gpu中固定管线功能实现方法 | |
CN118210478A (zh) | 基于云计算的仿真开发设施设计方法、装置及计算机设备 | |
CN109032574A (zh) | 一种面向多操作对象的编程系统 | |
Zhong et al. | Research on Function Block Programmable Technology of Machine Vision |
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 |