CN109656868B - 一种cpu与gpu之间的内存数据转移方法 - Google Patents
一种cpu与gpu之间的内存数据转移方法 Download PDFInfo
- Publication number
- CN109656868B CN109656868B CN201811375005.7A CN201811375005A CN109656868B CN 109656868 B CN109656868 B CN 109656868B CN 201811375005 A CN201811375005 A CN 201811375005A CN 109656868 B CN109656868 B CN 109656868B
- Authority
- CN
- China
- Prior art keywords
- data
- gpu
- cpu
- memory
- function
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明涉及一种CPU与GPU之间的内存数据转移方法,通过在CPU端开辟三段内存空间(intMem、floatMem、charMem),存储三种类型的变量(int、float、char),同时在GPU的全局内存中开三个缓冲区(intMemBuffer、floatMemBuffer、charMemBuffer),三个缓冲区分别用来存储与主机内存相对应的三种类型的变量(int、float、char),给GPU中的kernel函数设置同步点,同步点处将所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区三种类型数据读取到CPU内存相对应的数据存储空间内,将三种类型数据备份到CPU中,实现了变量的备份与恢复,有利于合理分配资源,同时GPU内存数据通过PCIe总线转移到CPU端的操作与其他运算可并行计算,提高函数执行速度,实现GPU的加速。本发明改善了GPU调度的性能,有效利用资源。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种CPU与GPU之间的内存数据转移方法。
背景技术
1999年8月,NVIDIA公司发布了一款名为Geforce 256的图形芯片,是第一款提出GPU概念的产品,同时期的OpenGL和DirectX 7都提供了硬件顶点变换的编程接口,GPU的概念因此而出现。从2003年开始,NVIDIA和ATI发布的新产品都同时具备了良好的可编程性,编程时无需再过度关注于GPU的其他硬件特性,从此,GPU又多了一个可编程的属性,也叫做可编程图形处理单元。
OpenCL是第一个面向异构系统通用目的并行编程的开放式免费标准,也是一个统一的编程环境,是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成,OpenCL提供了基于任务分割和数据分割的并行计算机制。
在异构计算系统上进行的并行计算通常称为异构计算,它所使用的计算资源具有多种类型的计算能力,是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。
本发明是基于OpenCL语言编程的基础上进行,实现不同结构设备间的内存迁移,为实现GPU加速作准备,同时为更有效实验异构计算作出新的尝试。
发明内容
本发明所要解决的技术问题是提供一种CPU与GPU之间的内存数据转移方法,该方法能够实现不同设备间的内存迁移,实现程序的中断与恢复,实现在程序被中断、资源被抢占之后,依然能够重新从断点处恢复运算,同时实现了GPU的加速,改善了GPU调度的性能,有效利用资源。
本发明所采用的技术方案是,一种CPU与GPU之间的内存数据转移方法,包括下列步骤:
(1)、扫描GPU端的函数程序,将所有函数程序运行的变量获取下来;
(2)、在CPU端开辟一段存储空间,存储空间分为三段:intMem;floatMem;charMem,用于存储三种类型的变量:int、float、char,在GPU端开辟一段存储空间,存储空间分为三个缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,分别用来存储与CPU相对应的三种类型的变量,三个缓冲区作为GPU与CPU之间数据传递的媒介;
(3)、在CPU端创建指令队列,命名为command queue,该指令队列用于存储GPU端所需要的相关操作指令;
(4)、在CPU端构造结构体MCB,用来管理数据的状态;
(5)、在CPU端,将函数的运行过程分成若干个相同的while循环体,在进入每一次循环体时,先从CPU中读取数据,再运行循环体,在函数运行过程中,通过设置一个检查点,然后检测检查点的数值从而来判断函数运行状态,该检查点定义为stepno,若判断到stepno为特定值,则表示函数运行结束,跳出while循环,否则while循环进行运行;
(6)、在GPU端,设置checkpoint()作为同步点,在函数程序中插入checkpoint()来暂停每个work-item的运算,同时通过checkpoint()来同步所有的work-item的运算状态,利用每个work group中的第一个work-item来同步work group的运算状态;
(7)、在GPU端,在同步点checkpoint()完成工作后,调用指令队列,在同步点处将所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区中三种类型的数据读取到CPU中对应的存储空间内,存储到结构体中,完成GPU内存数据的迁移,并与函数的其他操作并行进行。
本发明的有益效果是:本发明针对CPU与GPU间不同数据存储方式而设计的内存数据转移方法,实现了变量的备份与恢复,实现了函数的中断与恢复,有利于合理分配资源,同时GPU内存数据通过PCIe总线转移到CPU端的操作与其他运算可并行计算,提高函数执行速度,实现GPU的加速。本发明改善了GPU调度的性能,有效利用资源。
作为优先,在步骤(4)中,构造结构体MCB具体过程为:将函数中需要备份的变量数据进行封装就形成一个结构体,结构体中的参数包括内存ID、CPU端备份变量数据的变量名、GPU端用于备份三种类型数据的缓冲区地址、CPU端用于备份三种类型数据的地址、变量数组的长度、变量数组的内存大小,变量的数据类型。
作为优先,在步骤(6)中,通过checkpoint()来同步所有的work-item的运算状态,将所有的work-item同步到同一个时间节点。
作为优先,在步骤(7)中,指令队列中的指令在CPU端处于阻塞状态,一旦GPU端数据到达checkpoint()所在位置,将GPU内存中端数据传入CPU端,此时唤醒处于阻塞状态的指令队列中的读指令,并由读指令通过PCIe总线实现数据从GPU内存传入CPU端的功能,并与函数其他操作并行进行。
附图说明
图1为本发明中CPU与GPU之间的内存数据转移方法的总体示意图;
图2为本发明中CPU与GPU之间的内存数据转移过程的结构示意图;
图3为本发明实施方式中测试实验方案性能结果示意图;
具体实施方式
以下参照附图并结合具体实施方式来进一步描述发明,以令本领域技术人员参照说明书文字能够据以实施,本发明保护范围并不受限于该具体实施方式。
本发明涉及一种CPU与GPU之间的内存数据转移方法,如图1所示,包括下列步骤:
(1)、扫描GPU端的函数程序,将所有函数程序运行的变量获取下来;
(2)、在CPU端开辟一段存储空间,存储空间分为三段:intMem;floatMem;charMem,用于存储三种类型的变量:int、float、char,在GPU端开辟一段存储空间,存储空间分为三个缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,分别用来存储与CPU相对应的三种类型的变量,三个缓冲区作为GPU与CPU之间数据传递的媒介;
(3)、在CPU端创建指令队列,命名为command queue,该指令队列用于存储GPU端所需要的相关操作指令;
(4)、在CPU端构造结构体MCB,用来管理数据的状态;
(5)、在CPU端,将函数的运行过程分成若干个相同的while循环体,在进入每一次循环体时,先从CPU中读取数据,再运行循环体,在函数运行过程中,通过设置一个检查点,然后检测检查点的数值从而来判断函数运行状态,该检查点定义为stepno,若判断到stepno为特定值,则表示函数运行结束,跳出while循环,否则while循环进行运行;
(6)、在GPU端,设置checkpoint()作为同步点,在函数程序中插入checkpoint()来暂停每个work-item的运算,同时通过checkpoint()来同步所有的work-item的运算状态,利用每个work group中的第一个work-item来同步work group的运算状态;
(7)、在GPU端,在同步点checkpoint()完成工作后,调用指令队列,在同步点处将所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区中三种类型的数据读取到CPU中对应的存储空间内,存储到结构体中,完成GPU内存数据的迁移,并与函数的其他操作并行进行。
在步骤(4)中,构造结构体MCB具体过程为:将函数中需要备份的变量数据进行封装就形成一个结构体,结构体中的参数包括内存ID、CPU端备份变量数据的变量名、GPU端用于备份三种类型数据的缓冲区地址、CPU端用于备份三种类型数据的地址、变量数组的长度、变量数组的内存大小,变量的数据类型。
在步骤(5)中,函数运行过程中,函数通过调用指令队列来读取GPU端的内存数据指令,该操作与函数的其他操作并行进行。
在步骤(6)中,通过checkpoint()来同步所有的work-item的运算状态,将所有的work-item同步到同一个时间节点。
在步骤(7)中,指令队列中的指令在CPU端处于阻塞状态,一旦GPU端数据到达checkpoint()所在位置,将GPU内存中端数据传入CPU端,此时唤醒处于阻塞状态的指令队列中的读指令,并由读指令通过PCIe总线实现数据从GPU内存传入CPU端的功能,并与函数其他操作并行进行。
本发明涉及一种内存数据转移方法,针对CPU与GPU间不同数据存储方式而设计的,可以实现不同设备间的内存状态迁移,实现程序的中断与恢复,实现在程序被中断、资源被抢占之后,依然能够重新从断点处恢复运算,有利于资源的充分利用。同时本发明针对不同设备之间进行涉及,对于通过异构方式解决问题有很大的帮助。
该方法涉及到几个核心部分,包括存储数据缓冲区的设计、存储变量结构体的设计、CPU内存与GPU全局内存的对应关系的设计、同步点的设计以及指令队列Command queue的设计。通过这几个核心部分的设计与实现,可以完成整个发明过程,从而能够实现不同设备之间的内存状态迁移,方便进行异构设备间的协调运算。
关于存储数据缓冲区的设计:
在CPU内存中开辟一段存储空间分为三个部分,intMem;floatMem;charMem,这三个部分存储空间的地址存储在结构体中,同时在CPU与之间间开辟相对应的三段缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,作为数据传输的媒介,其中intMemBuffer、intMem均用于备份int型变量;floatMemBuffer、floatMem均用于备份float型变量;charMemBuffer、charMem均用于备份char型变量。
关于存储变量结构体的设计:
在CPU端,将GPU端的函数中需要备份的的变量数据封装为一个结构体(memorycontrol block,MCB),该结构体参数包括内存ID、host端备份变量数据的变量名、GPU全局内存中用于备份三种类型数据的缓冲区地址、主机内存中用于备份三种类型数据的地址、变量数组的长度、变量数组的内存大小,变量的数据类型。结构体可用来管理备份数据的状态。
关于CPU内存与GPU全局内存的对应关系的设计:
在GPU全局内存中开辟出缓冲区进行缓冲数据的存储,同时CPU内存中备份缓冲区的数据。存储在CPU内存的指针指向缓冲区的地址,在程序中通过clEnqueueReadBuffer函数将缓冲区的数据读到指定地址的主机内存中去,而通过clEnqueueWriteBuffer函数将备份在主机内存的数据写到缓冲区,用于恢复缓冲区的数据。
同步点的设计:
在GPU端的程序中,设置阻塞函数barrier同步work group中不同work item的运行状态,阻塞函数由barrier(CLK_GLOBAL_MEM_FENCE)函数实现,该函数为现有函数。用于同步work group运行状态的函数(命名为lock函数)的实现原理则是:对每一个work group中item0进行原子操作减一,所有的item0在运行时将进入循坏状态,直至最后一个workgroup实现减一,以此可实现work group保持统一运行状态,达到同步点的作用。在本发明中,我们将阻塞函数barrier与lock函数组成checkpoint(),将其称之为同步点,其作用则是使得运行程序的所有线程都将处于同样的运行状态。
检查点stepNo的设计:
stepNo用于记录CPU端程序的运算节点,也称为计步变量,初始值为0,表示第一次运行。每当kernel函数被调用一次,将stepNo自加1,表示运行步数的推进。当kernel函数运行完成后,则将stepNo设置为-2(特殊值),表示可以跳出kernel函数运行的while循环,即结束kernel函数的运行。
本发明的整体实现思路为,如图2所示,在CPU端开辟三段内存空间(intMem、floatMem、charMem),存储三种类型的变量(int、float、char),同时在GPU的全局内存中开三个缓冲区(intMemBuffer;floatMemBuffer;charMemBuffer),三个缓冲区分别用来存储与主机内存相对应的三种类型的变量(int、float、char),缓冲区作为主机与GPU数据传递的媒介。给GPU中的kernel函数设置同步点,同步点处将调用指令队列(command queue),所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区三种类型数据读取到CPU内存相对应的数据存储空间内,将三种类型数据备份到CPU中,存储到结构体中,与函数其他操作并行进行,kernel函数运行结束后退出。
相关解释:
Kernel函数:是指一个用opencl c语言编写的、代表一个单一执行实例的代码单元。opencl术语中把这种kernel实例称为work-item(工作项)。
work_item:是定义在一个很大的并行执行空间中的一小部分。是并行操作中每一部分的实例化。通俗来说,可以理解为kernel里定义的执行函数。当kernel启动后会创建大量work_item来同时执行,以完成并行任务。work_item之是的运行是相互独立的,不同步的。
work_group:opencl将全局执行空间划分为大量大小相等的work_item集合,这个集合就是work_group。在work_group内部,各个work_item之间允许一定程度的通信。而有work_group保证并发执行来允许其内部的work_item之间的本地同步。
(上述解释源于OpenCL的定义,非自己编写)
如图1所示,本发明具体实施分为两部分,一部分为运行在CPU上的主要程序global.c,另一个则是运行在GPU上的设备函数程序kernel.cl。具体实现如下:
kernel.cl
设置计步变量stepNo,记录函数运行的状态。
1、进行kernel函数的运算,涉及到kernel函数中变量数值的修改,进行运算后,设置同步点checkpoint()进行运算同步,同步点同步后,调用指令队列(command queue),将所有的数据信息写到PCIe总线,并存储到结构体MCB中完成GPU内存数据的迁移。
global.c
1、对涉及到的设备kernel函数进行扫描,同时进行预编译;
2、声明存储数据的数据结构体;
3、定义错误函数CALL_ERROR,用于检查代码运行过程中是否出错;定义platform创建函数createPlatform、Device创建函数createDevice、Program创建函数createProgram、Program构造函数buildProgram,为kernel函数提供运行环境;
4、对结构体MCB进行初始化,对结构体元素中结构体长度、结构体大小结构体数据类型、内存编号、对应kernel变量名称进行赋值;
5、对结构体中中用于备份三种类型数据的主机内存地址进行分配空间;
6、创造kernel函数的运行环境;
7、创建三种数据类型的缓冲区,用于迁移结构体MCB的变量数据;创建stepNo_buffer,用于存储计步变量stepNo;创建mutex_group_buffer,用于控制同步点;
8、设置在GPU中运行的kernel函数的变量;
9、进入while(1)循环;
10、判断计步变量stepNo的状态,stepNo为0时,表示第一次运行kernel函数,将stepNo写入stepNo_buffer,用于及时修改运行状态,当stepNo不为0时,表示非第一次运行kernel函数,将CPU所开辟的内存空间中存放同步点处GPU内存中的数据赋给GPU中所开辟的三种类型的缓冲区,用于同步点处kernel函数中global变量数据恢复;
11、将work group的数量写入mutex_group_buffer,用于kernel函数同步点设置;
12、kernel函数的运行;
13、kernel函数通过PCIe总线进行将GPU端的数据保存到CPU。在kernel函数调用指令队列(command queue)时,读取GPU内存数据的指令通过指令队列(command queue)调用,与函数其他操作可以并行进行。
当以上程序求解结束后,内存迁移的问题得以解决。本发明提出了一种针对CPU与GPU间不同数据存储方式而设计的内存数据转移方法,对内存迁移提出了具体的解决方案。采用该方法,系统在计算机上可实现多平台的内存迁移,同时提高效率,减少运算时间。
利用以上方法,采用NVIDIA Tesla K40型号的GPU以及并采用自行编写的加法程序进行验证。
实验平台信息如下:采用NVIDIA Tesla K40型号的GPU,1.4TFLOPS性能,12GB内存,288GB/s的吞吐量。
图3展示了测试结果,本测试是基于编写的加法程序进行,展示了程序在中断以及重新调度时,可继续运行,表示数据能够成功备份在CPU内存中,并可以成功从CPU内存中调度到GPU的全局内存中。
本发明提出了一种针对CPU与GPU间不同数据存储方式而设计的内存数据转移方法,设计了一整套的内存迁移方法,包括数据结构的设计、存储空间的设计方案,数据进行迁移与调度的实现方案,同时本发明通过编写加法程序验证了该设计方案的可行性。
Claims (4)
1.一种CPU与GPU之间的内存数据转移方法,其特征在于:包括下列步骤:
(1)、扫描GPU端的函数程序,将所有函数程序运行的变量获取下来;
(2)、在CPU端开辟一段存储空间,存储空间分为三段:intMem;floatMem;charMem,用于存储三种类型的变量:int、float、char,在GPU端开辟一段存储空间,存储空间分为三个缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,分别用来存储与CPU相对应的三种类型的变量,三个缓冲区作为GPU与CPU之间数据传递的媒介;
(3)、在CPU端创建指令队列,该指令队列用于存储GPU端所需要的相关操作指令;
(4)、在CPU端构造结构体MCB,用来管理数据的状态;
(5)、在CPU端,将函数的运行过程分成若干个相同的while循环体,在进入每一次循环体时,先从CPU中读取数据,再运行循环体,在函数运行过程中,通过设置一个检查点,然后检测检查点的数值从而来判断函数运行状态,该检查点定义为stepno,若判断到stepno为特定值,则表示函数运行结束,跳出while循环,否则while循环进行运行;
(6)、在GPU端,设置checkpoint()作为同步点,在函数程序中插入checkpoint()来暂停每个work-item的运算,同时通过checkpoint()来同步所有的work-item的运算状态,利用每个work group中的第一个work-item来同步work group的运算状态;
(7)、在GPU端,在同步点checkpoint()完成工作后,调用指令队列,在同步点处将所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区中三种类型的数据读取到CPU中对应的存储空间内,存储到结构体中,完成GPU内存数据的迁移,并与函数的其他操作并行进行。
2.根据权利要求1所述的一种CPU与GPU之间的内存数据转移方法,其特征在于:在步骤(4)中,构造结构体MCB具体过程为:将函数中需要备份的变量数据进行封装就形成一个结构体;结构体中的参数包括内存ID、CPU端备份变量数据的变量名、GPU端用于备份三种类型数据的缓冲区地址、CPU端用于备份三种类型数据的地址、变量数组的长度、变量数组的内存大小,变量的数据类型。
3.根据权利要求1所述的一种CPU与GPU之间的内存数据转移方法,其特征在于:在步骤(6)中,通过checkpoint()来同步所有的work-item的运算状态,将所有的work-item同步到同一个时间节点。
4.根据权利要求1所述的一种CPU与GPU之间的内存数据转移方法,其特征在于:在步骤(7)中,指令队列中的指令在CPU端处于阻塞状态,一旦GPU端数据到达checkpoint()所在位置,将GPU内存中端数据传入CPU端,此时唤醒处于阻塞状态的指令队列中的读指令,并由读指令通过PCIe总线实现数据从GPU内存传入CPU端的功能,并与函数其他操作并行进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811375005.7A CN109656868B (zh) | 2018-11-19 | 2018-11-19 | 一种cpu与gpu之间的内存数据转移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811375005.7A CN109656868B (zh) | 2018-11-19 | 2018-11-19 | 一种cpu与gpu之间的内存数据转移方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656868A CN109656868A (zh) | 2019-04-19 |
CN109656868B true CN109656868B (zh) | 2022-12-06 |
Family
ID=66112059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811375005.7A Active CN109656868B (zh) | 2018-11-19 | 2018-11-19 | 一种cpu与gpu之间的内存数据转移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656868B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506420B (zh) * | 2020-03-27 | 2023-09-22 | 北京百度网讯科技有限公司 | 内存同步方法、装置、电子设备及存储介质 |
CN113157407B (zh) * | 2021-03-18 | 2024-03-01 | 浙大宁波理工学院 | 一种在gpu中并行处理视频压缩的动态任务迁移调度方法 |
CN115098107B (zh) * | 2022-06-21 | 2024-04-19 | 清华大学 | 神经网络任务的代码生成方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1173799A (en) * | 1966-03-25 | 1969-12-10 | Ericsson Telefon Ab L M | Computer Arrangement for Controlling a Plurality of Co-operating Means |
CN103973431A (zh) * | 2014-04-16 | 2014-08-06 | 华南师范大学 | 一种基于OpenCL的AES并行化实现方法 |
CN104572509A (zh) * | 2014-12-26 | 2015-04-29 | 中国电子科技集团公司第十五研究所 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8397241B2 (en) * | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
-
2018
- 2018-11-19 CN CN201811375005.7A patent/CN109656868B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1173799A (en) * | 1966-03-25 | 1969-12-10 | Ericsson Telefon Ab L M | Computer Arrangement for Controlling a Plurality of Co-operating Means |
CN103973431A (zh) * | 2014-04-16 | 2014-08-06 | 华南师范大学 | 一种基于OpenCL的AES并行化实现方法 |
CN104572509A (zh) * | 2014-12-26 | 2015-04-29 | 中国电子科技集团公司第十五研究所 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109656868A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1983196B (zh) | 用于将执行线程分组的系统和方法 | |
TWI498728B (zh) | 非搶占式圖形處理單元上互動除錯之方法和裝置 | |
US9354944B2 (en) | Mapping processing logic having data-parallel threads across processors | |
CN110597606B (zh) | 一种高速缓存友好的用户级线程调度方法 | |
US8990827B2 (en) | Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
US7398376B2 (en) | Instructions for ordering execution in pipelined processes | |
Mukherjee et al. | A comprehensive performance analysis of HSA and OpenCL 2.0 | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
US20130117753A1 (en) | Many-core Process Scheduling to Maximize Cache Usage | |
CN101777007B (zh) | 片上多核处理器的并行功能仿真系统及其方法 | |
US9513923B2 (en) | System and method for context migration across CPU threads | |
CN109308213B (zh) | 基于改进任务调度机制的多任务断点调试方法 | |
US9830157B2 (en) | System and method for selectively delaying execution of an operation based on a search for uncompleted predicate operations in processor-associated queues | |
US20160147516A1 (en) | Execution of complex recursive algorithms | |
US10838768B2 (en) | Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和系统 | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
CN112346835B (zh) | 一种基于协程的调度处理方法及系统 | |
CN112948136A (zh) | 一种嵌入式操作系统异步日志记录的实现方法 | |
CN103699363A (zh) | 一种用于在多核平台下优化关键临界区的方法 | |
US20080098403A1 (en) | Data flow execution of methods in sequential programs | |
Lázaro-Muñoz et al. | A tasks reordering model to reduce transfers overhead on GPUs | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment | |
DE102023101520A1 (de) | Effizientes Starten von Aufgaben auf einem Prozessor |
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 |