CN109656868B - 一种cpu与gpu之间的内存数据转移方法 - Google Patents

一种cpu与gpu之间的内存数据转移方法 Download PDF

Info

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
Application number
CN201811375005.7A
Other languages
English (en)
Other versions
CN109656868A (zh
Inventor
陈根浪
张佳健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ningbo Institute of Technology of ZJU
Original Assignee
Ningbo Institute of Technology of ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ningbo Institute of Technology of ZJU filed Critical Ningbo Institute of Technology of ZJU
Priority to CN201811375005.7A priority Critical patent/CN109656868B/zh
Publication of CN109656868A publication Critical patent/CN109656868A/zh
Application granted granted Critical
Publication of CN109656868B publication Critical patent/CN109656868B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/17Interprocessor 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之间的内存数据转移方法
技术领域
本发明涉及计算机技术领域,尤其是涉及一种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端的功能,并与函数其他操作并行进行。
CN201811375005.7A 2018-11-19 2018-11-19 一种cpu与gpu之间的内存数据转移方法 Active CN109656868B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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