本发明专利技术提供了一种数据分布方法以及装置,所述方法包括:将第一代码所处理的第一数据块划分成多个第二数据块,其中每一个第二数据块和一个处理器核对应;根据所述第一代码确定每一个第二数据块对应的边界数据;为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间;以及根据所述第一代码生成与每一个第二数据块对应的第二代码,所述第二代码能在第二数据块对应的处理器核中根据所述第一代码的处理逻辑完成对所述第二数据块的处理。所述方法能够减少访存开销,从而提高处理器的程序执行速度。
【技术实现步骤摘要】
本专利技术涉及异构众核处理器技术,特别涉及一种数据布局方法和装置。
技术介绍
异构众核处理器包含一个主处理器核(主核)和多个从处理器核(从核),通过集成不同类型的内核来提升效率和性能。一般来说,主核负责资源管理和调度,从核负责加速应用,每个从核通常拥有一个容量有限的片上局部存储,用来存储和处理所需数据。在异构众核处理器中,某些规则的应用程序映射到多个从核上后,在程序的执行过程中,多个从核之间需要进行边界通讯来获取边界数据。目前,大部分异构众核编译器是基于共享存储编程模型将程序映射到异构众核处理器上。这种模式无法充分利用从核的片上局部存储空间,并导致额外的访存开销。 具体地,在共享存储模型中,共享数据在主存存放,从核处理所需的私有数据在从核的片上局部存储中存放,编译器通过插入DMA操作使每个协处理器核访问主存中的共享数据,由于在共享存储模型中,边界数据被看作共享数据放在主存,因此大量的边界数据会产生繁重的主存访问开销,从而降低程序性能。例如,在模板处理(stencil computation)这类问题中,多维网格中每个点的值都需要被反复更新,而更新某个元素时需要相邻元素来进行辅助处理,从核在处理时需要进行边界通讯来获取位于边界的相邻元素,如果采用共享存储模型,将模板处理映射到异构众核上会产生大量的访存,导致程序性能下降。因此,有待提出一种新的数据布局方法和装置,以充分利用从核的片上局部存储空间,减少访存开销,从而提高程序的执行速度和性能。
技术实现思路
本专利技术解决的问题是提出一种新的数据布局方法和装置,以充分利用从核的片上局部存储空间,减少访存开销,从而提高程序的执行速度和性能。为解决上述问题,本专利技术的实施例提供了一种数据布局方法,所述方法包括将第一代码所处理的第一数据块划分成多个第二数据块,其中每一个第二数据块和一个处理器核对应;根据所述第一代码确定每一个第二数据块对应的边界数据,所述边界数据是根据所述第一代码的处理逻辑完成对第二数据块的处理时所需要的但不被所述第二数据块包含的数据;为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间;以及根据所述第一代码生成与每一个第二数据块对应的第二代码,所述第二代码能在第二数据块对应的处理器核中根据所述第一代码的处理逻辑完成对所述第二数据块的处理。可选地,当所述第一数据块为所述第一代码中参与并行循环的数组时,将所述第一数据块划分成多个第二数据块的方法包括确定所述数组中参与并行循环的维度;以及根据所述数组中参与并行循环的维度将所述数组划分成多个第二数据块。可选地,所述方法还包括根据目标机中处理器核的数量以及所述第二数据块的预定大小确定所述第一数据块被划分的个数。可选地,为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间的方法包括确定所述每一个第二数据块和对应的边界数据的大小;以及根据每一个第二数据块和对应的边界数据的大小在对应的处理器核中申请局部存储空间。可选地,第二代码包括第三代码、第四代码和第五代码,所述第三代码用于将与所述第二代码对应的第二数据块以及边界数据从主存导入对应处理器核的局部存储空间,所述第四代码根据所述第一代码的处理逻辑对所述第二代码对应的第二数据块进行处理,所述第五代码用于将与所述第二代码对应的第二数据块的处理结果从对应处理器核的局部存储空间写回主存。可选地,所述第三代码和第五代码为直接内存存取操作代码(DMA)。本专利技术的实施例还提供了一种数据布局装置,所述装置包括数据划分单元,用于 将第一代码所处理的第一数据块划分成多个第二数据块,其中每一个第二数据块和一个处理器核对应;边界数据确定单元,用于根据所述第一代码确定每一个第二数据块对应的边界数据,所述边界数据是根据所述第一代码的处理逻辑完成对第二数据块的处理时所需要的但不被所述第二数据块包含的数据;数据映射单元,用于为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间;以及处理划分单元,用于根据所述第一代码生成与每一个第二数据块对应的第二代码,所述第二代码能在第二数据块对应的处理器核中根据所述第一代码的处理逻辑完成对所述第二数据块的处理。可选地,所述第一数据块为所述第一代码中参与并行循环的数组,在将所述第一数据块分成多个第二数据块的过程中,所述数据划分单元用于确定所述数组中参与并行循环的维度,以及根据所述数组中参与并行循环的维度将所述数组划分成多个第二数据块。可选地,所述数据划分单元还用于根据目标机中处理器核的数量以及所述第二数据块的预定大小确定所述第一数据块被划分的个数。可选地,在为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间的过程中,所述数据映射单元用于确定所述每一个第二数据块和对应的边界数据的大小,以及根据每一个第二数据块和对应的边界数据的大小在对应的处理器核中申请局部存储空间。可选地,第二代码包括第三代码、第四代码和第五代码,所述第三代码用于将与所述第二代码对应的第二数据块以及边界数据从主存导入对应处理器核的局部存储空间,所述第四代码根据所述第一代码的逻辑对所述第二代码对应的第二数据块进行处理,所述第五代码用于将与所述第二代码对应的第二数据块的处理结果从对应处理器核的局部存储空间与回主存。可选地,所述第三代码和第五代码为直接内存存取操作代码(DMA)。与现有技术相比,本专利技术的实施例具有以下优点在本专利技术的实施例中,将异构众核的协处理器核抽象为分布式存储系统,采用数据分布技术,不仅为每个第二数据块在对应的处理器核中申请了局部存储空间,而且为每一个第二数据块对应的边界数据对应的处理器核中申请了局部存储空间,也就是说,每一个第二数据块将和对应的边界数据一同被导入对应的处理器核,使得处理器核根据所述第一代码的处理逻辑对第二数据块进行处理时无需通过访存获取边界数据,而是直接从局部存储空间获取,减小了共享存储模型下由边界通讯导致的主存访问开销,从而提高了处理器的程序执行速度。附图说明图I是现有技术中共享存储模型的结构示意图;图2是本专利技术一实施例中数据布局方法的流程图;图3是本专利技术一实施例中数据布局的过程示意图;图4是本专利技术一实施例中划分第一数据块的过程示意图;图5是本专利技术另一实施例中划分第一数据块的过程示意图;图6是本专利技术再一实施例中划分第一数据块的过程示意图;图7是本专利技术再一实施例中确定边界数据的过程示意图;以及图8是本专利技术一实施例中数据布局装置的结构示意图。具体实施例方式现有技术中,如图I所示,异构众核各从处理器核拥有各自的片上局部存储空间, 所有的从处理器核通过片上通讯网络(on-chip network)从主存获取边界数据。经研究专利技术人发现,在共享存储模型下过大的边界数据会导致繁重的主存访问开销,从而较大地影响整个处理器的程序执行速度,如果采用分布式存储模型,通过确定各处理器核的边界数据和将所述边界数据私有化至各个处理器核来,则能够减少边界通讯带来的主存访问开销,从而提高整个处理器的程序执行速度。针对上述问题,本专利技术的实施例提供了一种数据布局方法。图2是本专利技术一实施例中数据布局方法的流程图。为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术的具体实施方式做详细的说明。在下面的描述中阐述了很多具体本文档来自技高网...
【技术保护点】
一种数据布局方法,其特征在于,包括:将第一代码所处理的第一数据块划分成多个第二数据块,其中每一个第二数据块和一个处理器核对应;根据所述第一代码确定每一个第二数据块对应的边界数据,所述边界数据是根据所述第一代码的处理逻辑完成对第二数据块的处理时所需要的但不被所述第二数据块包含的数据;为每一个第二数据块和对应的边界数据在对应的处理器核中申请局部存储空间;以及根据所述第一代码生成与每一个第二数据块对应的第二代码,所述第二代码能在第二数据块对应的处理器核中根据所述第一代码的处理逻辑完成对所述第二数据块的处理。
【技术特征摘要】
【专利技术属性】
技术研发人员:王淼,孙俊,尤洪涛,姜小成,张立博,金星,毛智辉,
申请(专利权)人:无锡江南计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。