基于CUDA的数据处理方法、计算设备及存储介质技术

技术编号:37842095 阅读:15 留言:0更新日期:2023-06-14 09:46
本申请公开一种基于CUDA的数据处理方法、计算设备及存储介质。其中,该方法包括:获取至少一个待处理任务的输入数据,该输入数据包含至少两种不同数据类型的数据;确定上述至少一个待处理任务的输入数据所需的总存储空间大小;根据总存储空间大小,向计算设备的内存申请第一存储空间,以及向计算设备的显存申请第二存储空间;将上述至少一个待处理任务的输入数据进行序列化后存放在第一存储空间;从第一存储空间将序列化后的输入数据拷贝到第二存储空间进行存储;对第二存储空间中存储的输入数据进行反序列化,并利用反序列化得到的输入数据对上述至少一个待处理任务进行任务计算。本发明专利技术能够减少数据拷贝次数,提高数据访问效率和计算效率。率和计算效率。

【技术实现步骤摘要】
基于CUDA的数据处理方法、计算设备及存储介质


[0001]本申请涉及数据处理
,特别涉及一种基于CUDA的数据处理方法、计算设备及存储介质。

技术介绍

[0002]在基于CUDA(Compute Unified Device Architecture,统一计算设备架构)的HPC (High Performance Computing,高性能计算) 软件开发过程中,数据不能直接加载到显存中,需要在内存中预先申请对应的内存空间存放输入数据,显存中也需要申请一样大小的显存空间存放输入数据,供显卡计算时访问使用。
[0003]通常的计算流程是,先将输入数据从内存拷贝到显存,显卡进行计算,然后将输出结果存放在显存中,再将结果从显存中拷贝至内存中。
[0004]目前为输入数据申请内存和显存空间时,需要根据不同的数据类型分开申请,内存和显存之间的数据拷贝也是根据不同的数据类型分开进行。
[0005]上述操作方式主要有以下几个弊端:1、多次内存和显存申请。显存的申请是一个较为耗时的开销,按照传统的开发模式,不同数据类型就需要单独申请对应类型的资源。
[0006]2、增加内存与显存间的拷贝次数。内存和显存间的数据拷贝也是一个较为耗时的开销,由于弊端1导致数据拷贝次数不得不变多。
[0007]3、不利于显存的合并访问。这样单独分区申请很容易导致数据分散存放,显卡计算时不能很好地利用显存访问的带宽优势,需要去多个地方取数据,显存访问效率不高。

技术实现思路

[0008]为解决或部分解决相关技术中存在的问题,本申请提供一种基于CUDA的数据处理方法、计算设备及存储介质,能够减少数据拷贝次数,提高数据访问效率和计算效率。
[0009]本申请第一方面提供一种基于CUDA的数据处理方法,所述方法应用于计算设备,所述方法包括:获取至少一个待处理任务的输入数据,所述输入数据包含至少两种不同数据类型的数据;确定所述至少一个待处理任务的输入数据所需的总存储空间大小;根据所述总存储空间大小,向所述计算设备的内存申请第一存储空间,以及向所述计算设备的显存申请第二存储空间;将所述至少一个待处理任务的输入数据进行序列化后存放在所述第一存储空间;从所述第一存储空间将序列化后的输入数据拷贝到所述第二存储空间进行存储;对所述第二存储空间中存储的输入数据进行反序列化,并利用反序列化得到的输入数据对所述至少一个待处理任务进行任务计算。
[0010]优选的,当所述至少一个待处理任务包括多个待处理任务时,所述确定所述至少
一个待处理任务的输入数据所需的总存储空间大小,包括:根据预设任务计算算法,确定每一个所述待处理任务的任务类型;当所述多个待处理任务均为同一任务类型时,计算所述多个待处理任务中的目标待处理任务的输入数据所需的存储空间大小;根据所述多个待处理任务的任务数量以及所述目标待处理任务的输入数据所需的存储空间大小,计算得到所述多个待处理任务的输入数据所需的总存储空间大小。
[0011]优选的,所述方法还包括:当所述多个待处理任务的任务类型均不相同时,计算每一个所述待处理任务的输入数据所需的存储空间大小,并求和,得到所述多个待处理任务的输入数据所需的总存储空间大小。
[0012]优选的,所述第一存储空间与所述第二存储空间的大小相等,均大于或等于所述总存储空间大小。
[0013]优选的,所述方法还包括:对所述至少一个待处理任务进行任务计算后,分别得到对应的输出数据;根据所述至少一个待处理任务的输出数据,向所述计算设备的内存申请第三存储空间,以及向所述计算设备的显存申请第四存储空间;将所述至少一个待处理任务的输出数据存放在所述第四存储空间;从所述第四存储空间将所述至少一个待处理任务的输出数据拷贝到所述第三存储空间进行存储。
[0014]优选的,所述确定所述至少一个待处理任务的输入数据所需的总存储空间大小,包括:根据预设任务计算算法,确定每一个所述待处理任务的输出数据的数据类型;计算所述至少一个待处理任务的输入数据和输出数据所需的总存储空间大小。
[0015]优选的,所述方法还包括:对所述至少一个待处理任务进行任务计算后,分别得到对应的输出数据;将所述至少一个待处理任务的输出数据存放在所述第二存储空间;从所述第二存储空间将所述至少一个待处理任务的输出数据拷贝到所述第一存储空间进行存储。
[0016]优选的,所述将所述至少一个待处理任务的输入数据进行序列化后存放在所述第一存储空间,包括:确定所述第一存储空间的首地址以及用于指示所述首地址的基本指针;根据所述至少一个待处理任务的输入数据的数据类型和数据大小,通过所述基本指针的转型和偏移得到各输入数据的存放地址;根据各输入数据的存放地址,将各输入数据存放在所述第一存储空间中。
[0017]本申请第二方面提供一种计算设备,包括:数据获取模块,用于获取至少一个待处理任务的输入数据,所述输入数据包含至少两种不同数据类型的数据;空间确定模块,用于确定所述至少一个待处理任务的输入数据所需的总存储空间大小;
空间申请模块,用于根据所述总存储空间大小,向所述计算设备的内存申请第一存储空间,以及向所述计算设备的显存申请第二存储空间;数据存储模块,用于将所述至少一个待处理任务的输入数据进行序列化后存放在所述第一存储空间;数据拷贝模块,用于从所述第一存储空间将序列化后的输入数据拷贝到所述第二存储空间进行存储;任务计算模块,用于对所述第二存储空间中存储的输入数据进行反序列化,并利用反序列化得到的输入数据对所述至少一个待处理任务进行任务计算。
[0018]本申请第三方面提供一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
[0019]本申请第四方面提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被计算设备的处理器执行时,使所述处理器执行如上所述的方法。
[0020]本申请的技术方案,在获取到待处理任务的不同数据类型的输入数据后,可以先获取输入数据所需的总存储空间大小,并按照总存储空间大小分别将计算设备的内存和显存各申请一块连续的存储空间;将输入数据进行序列化后存放在内存的存储空间中,再拷贝到显存的存储空间中进行存储;进一步地,可以在显存中对输入数据进行反序列化后用于任务计算。本申请可以融合不同数据类型的输入数据,并存放到一块连续的内存、显存上,不仅减少了内存、显存的存储空间的申请次数,提高了缓存利用率,降低了内存、显存申请带来的开销,而且减少了数据拷贝次数,进而能够提高数据访问效率和任务计算效率。
附图说明
[0021]图1为本专利技术实施例提供的一种基于CUDA的数据处理方法的流程示意图;图2为本专利技术实施例提供的一种数据序列化过程中内存排布的示意图;图3为本专利技术实施例提供的另一种数据序列化过程中内存排布的示意图;图4为本专利技术实施例提供的另一种基于CUDA的数据处理方法的流程示意图;图5为本专利技术实施例提供的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于CUDA的数据处理方法,其特征在于,所述方法应用于计算设备,所述方法包括:获取至少一个待处理任务的输入数据,所述输入数据包含至少两种不同数据类型的数据;确定所述至少一个待处理任务的输入数据所需的总存储空间大小;根据所述总存储空间大小,向所述计算设备的内存申请第一存储空间,以及向所述计算设备的显存申请第二存储空间;将所述至少一个待处理任务的输入数据进行序列化后存放在所述第一存储空间;从所述第一存储空间将序列化后的输入数据拷贝到所述第二存储空间进行存储;对所述第二存储空间中存储的输入数据进行反序列化,并利用反序列化得到的输入数据对所述至少一个待处理任务进行任务计算。2.根据权利要求1所述的方法,其特征在于,当所述至少一个待处理任务包括多个待处理任务时,所述确定所述至少一个待处理任务的输入数据所需的总存储空间大小,包括:根据预设任务计算算法,确定每一个所述待处理任务的任务类型;当所述多个待处理任务均为同一任务类型时,计算所述多个待处理任务中的目标待处理任务的输入数据所需的存储空间大小;根据所述多个待处理任务的任务数量以及所述目标待处理任务的输入数据所需的存储空间大小,计算得到所述多个待处理任务的输入数据所需的总存储空间大小。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:当所述多个待处理任务的任务类型均不相同时,计算每一个所述待处理任务的输入数据所需的存储空间大小,并求和,得到所述多个待处理任务的输入数据所需的总存储空间大小。4.根据权利要求1所述的方法,其特征在于,所述第一存储空间与所述第二存储空间的大小相等,均大于或等于所述总存储空间大小。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述至少一个待处理任务进行任务计算后,分别得到对应的输出数据;根据所述至少一个待处理任务的输出数据,向所述计算设备的内存申请第三存储空间,以及向所述计算设备的显存申请第四存储空间;将所述至少一个待处理任务的输出数据存放在所述第四存储空间;从所述第四存储空间将所述至少一个待处理任务的输出数据拷贝到所述第三存储空间进行存储。6.根据权利要求1所述的方法,其特征在于,所述确定所述至少一个待处理任务的输入数据所需的总...

【专利技术属性】
技术研发人员:林晓露
申请(专利权)人:深圳晶泰科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1