掌桥专利:专业的专利平台
掌桥专利
首页

空间邻居粒子的搜索方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:57:11


空间邻居粒子的搜索方法、装置、电子设备及存储介质

技术领域

本申请涉及粒子搜索领域,尤其涉及一种空间邻居粒子的搜索方法、装置、电子设备及存储介质。

背景技术

在使用光滑粒子流体力学(Smoothed Particle Hydrodynamics,SPH)方法模拟流体运动的过程中,“最邻近粒子搜索”(Nearest Neighbour Particle Search,NNPS)过程庞大的计算量严重影响着流体模拟总体过程的快速进行。快速、准确地进行SPH方法中单粒子周围空间邻居粒子的搜索,受到了学术和工业界的大量关注。然而,当前常见的NNPS方法仅在物理问题的求解模型上给出了设计,并没有考虑在大规模计算阵列上实现时“计算承载节点需要将发生在其上的计算任务结果返回给数据提供节点,但数据传输带宽受限、数据提供节点不能及时收到返回计算结果、后续计算任务无法开展”的传输等待问题。另外,随着流体运动,初始化粒子列表周围粒子不再聚集,难以根据粒子标号构建粒子支持域的动态计算任务索引问题。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种空间邻居粒子的搜索方法、装置、电子设备及存储介质。

根据本申请实施例的一个方面,提供了一种空间邻居粒子的搜索方法,包括:

获取计算任务,并按照所述计算任务对问题域对应的目标空间进行拆分得到多个计算节点,其中,每个所述计算节点存储有该计算节点所在空间所有粒子的第一粒子信息;

获取每个所述计算节点的相邻计算节点,并提取所述相邻计算节点所在空间所有粒子的第二粒子信息,并将所述第二粒子信息与所述第一粒子信息合并存储,得到目标粒子信息;

对所述计算节点进行分割,得到所述计算节点中的多个网格块,其中,每个所述网格块分布有多个粒子对应的子目标粒子信息;

利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对,并确定所述网格块作用对中每个粒子对应的相邻粒子集合。

进一步的,所述获取每个所述计算节点的相邻计算节点,包括:

获取最大收集半径;

将所述计算节点为圆心,按照所述最大收集半径在所述目标空间内构建所述计算节点对应的壳状区域;

将落入所述壳状区域的其他计算节点确定为所述相邻计算节点。

进一步的,所述对所述计算节点进行分割,得到所述计算节点中的多个网格块,包括:

构建长宽高均为所述最大收集半径的立方体;

利用所述立方体对所述计算节点所在空间进行分割,得到多个网格块。

进一步的,在利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对之前,所述方法还包括:

获取预先构建的目标模型;

按照所述目标模型从所述计算节点的网格块中选择目标数量的目标网格块。

进一步的,所述利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对,包括:

基于每两个所述目标网格块的子目标粒子信息,判断每两个所述目标网格块是否发生作用;

将发生作用的两个目标网格块确定为所述网格块作用对。

进一步的,所述确定所述网格块作用对中每个粒子对应的相邻粒子集合,包括:

从所述网格块作用对中任意选取一个目标网格块作为基准网格块,并将所述网格块作用对中除所述基准网格块之外的目标网格块作为配对网格块;

利用所述基准网格块中的子目标粒子信息以及所述配对网格块中的子目标粒子信息,计算所述基准网格块中每个粒子与所述配对网格块中每个粒子之间的距离信息;

利用所述距离信息确定所述基准网格块中每个粒子对应的相邻粒子集合。

进一步的,所述利用所述距离信息确定所述基准网格块中每个粒子对应的相邻粒子集合,包括:

对比所述距离信息与最大收集半径;

利用所述配对网格块中选取所述距离信息小于所述最大收集半径的粒子,构建所述基准网格块中每个粒子对应的相邻粒子集合。

根据本申请实施例的另一方面,还提供了一种空间邻居粒子的搜索装置,包括:

获取模块,用于获取计算任务,并按照所述计算任务对问题域对应的目标空间进行拆分得到多个计算节点,其中,每个所述计算节点存储有该计算节点所在空间所有粒子的第一粒子信息;

提取模块,用于获取每个所述计算节点的相邻计算节点,并提取所述相邻计算节点所在空间所有粒子的第二粒子信息,并将所述第二粒子信息与所述第一粒子信息合并存储,得到目标粒子信息;

处理模块,用于对所述计算节点进行分割,得到所述计算节点中的多个网格块,其中,每个所述网格块分布有多个粒子对应的子目标粒子信息;

遍历模块,用于利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对,并确定所述网格块作用对中每个粒子对应的相邻粒子集合。

根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。

根据本申请实施例的另一方面,还提供了一种电子装置,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。

本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。

本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的方法收集并存储相邻计算节点的粒子信息,将当前计算节点的粒子信息与相邻计算节点的粒子信息合并存储。同时对计算节点分割为固定的网格块,即可得到每个网格块对应的子粒子信息,以此通过对固定网格块内粒子的索引,实现了针对计算任务的追踪以及相邻粒子的搜索。提高了粒子搜索效率以及流体模拟过程的准确度。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种空间邻居粒子的搜索方法的流程图;

图2为本申请实施例提供的问题域的拆分结果示意图;

图3为本申请实施例提供的壳状区域的示意图;

图4为本申请实施例提供的采用壳状区域收集粒子信息的示意图;

图5为本申请实施例提供计算节点的分割示意图;

图6为本申请实施例提供的目标模型的结构示意图;

图7为本申请实施例提供的一种空间邻居粒子的搜索装置的框图;

图8为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个类似的实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本申请实施例提供了一种空间邻居粒子的搜索方法、装置、电子设备及存储介质。本发明实施例所提供的方法可以应用于任意需要的电子设备,例如,可以为服务器、终端等电子设备,在此不做具体限定,为描述方便,后续简称为电子设备。

根据本申请实施例的一方面,提供了一种空间邻居粒子的搜索方法的方法实施例。图1为本申请实施例提供的一种空间邻居粒子的搜索方法的流程图,如图1所示,该方法包括:

步骤S11,获取计算任务,并按照计算任务对问题域对应的目标空间进行拆分得到多个计算节点,其中,每个计算节点存储有该计算节点所在空间所有粒子的第一粒子信息。

本申请实施例提供的方法应用于数据处理设备,例如:电脑,移动手机,iPad等等。具体的,数据处理设备可以预先针对流体运动的问题域构建一个长方体空间,即问题域对应的目标空间,目标空间在直角坐标系下的长、宽、高分别为L

作为一个示例,计算阵列在该三维上计算节点分别为N

步骤S12,获取每个计算节点的相邻计算节点,并提取相邻计算节点所在空间所有粒子的第二粒子信息,并将第二粒子信息与第一粒子信息合并存储,得到目标粒子信息。

在本申请实施例中,由于粒子需要周边半径R=kh支持域范围内的粒子求解作用于该粒子的内力、外力。所以需要获取每个计算节点的相邻计算节点。如图3所示,计算节点承担的长方体问题域边界处的粒子i将需要相邻计算节点中的粒子j的信息完成计算。同时考虑到不同阵列节点数据传输带宽受限、频繁在节点间完成数据传输会带来额外的时间消耗,通过预设范围其他节点的粒子信息收集,计算结束后不返还的防守,抵消上述的时间消耗。

具体的,获取每个计算节点的相邻计算节点,包括以下步骤A1-A3:

步骤A1,获取最大收集半径。

步骤A2,将计算节点为圆心,按照最大收集半径在目标空间内构建计算节点对应的壳状区域。

步骤A3,将落入壳状区域的其他计算节点确定为相邻计算节点。

具体的,首先,根据问题特性选取特定值,确定一在流体运动过程中能使得问题域中所有的粒子作用对(i,j)在任意时间步满足预设r

其次,在得到最大收集半径后,在当前计算节点周围以R=K

需要说明的是,通过加入最大收集半径,并利用最大收集半径构建的壳状区域收集粒子信息,使得面对光滑长度可变的流体模拟问题,改进的方法不用再动态重构网格,保持较高搜索效率的同时降低了分配计算任务到计算网格所需的时间。另外,将收集的粒子信息进行存储,抵消了数据传输的等待时间,在对计算效率指标要求较高的大规模计算阵列中,有效提升了计算效率。

步骤S13,对计算节点进行分割,得到计算节点中的多个网格块,其中,每个网格块分布有多个粒子对应的子目标粒子信息。

在本申请实施例中,步骤S13,对计算节点进行分割,得到计算节点中的多个网格块,包括以下步骤B1-B2:

步骤B1,构建长宽高均为最大收集半径的立方体。

步骤B2,利用立方体对计算节点所在空间进行分割,得到多个网格块。

在本申请实施例中,首先确定计算节点对应的子物理问题,然后在计算节点确定的子物理问题空间建立网格,即使用长、宽、高均为K

如图5所示。[·]表示向上取大于等于它的最小正整数,l

步骤S14,利用每个网格块对应的子目标粒子信息得到计算节点中的网格块作用对,并确定网格块作用对中每个粒子对应的相邻粒子集合。

在本申请实施例中,在利用每个网格块对应的子目标粒子信息得到计算节点中的网格块作用对之前,方法还包括以下步骤C1-C2:

步骤C1,获取预先构建的目标模型。

步骤C2,按照目标模型从计算节点的网格块中选择目标数量的目标网格块。

需要说明的是,在考虑粒子与最邻近粒子的相互作用时,通过空间定位的方式,能够更细致的粒度筛选出可能发生作用的计算节点网格块作用对。由于网格块宽度即为粒子在计算过程中的最大支持域半径,每个网格块需要其周围邻接的3×3×3-2=26个网格块发生块间集合距离打包计算。然而,由于粒子分别存储在不同的网格块中,遍历单个计算节点中所有网格块完成邻域距离打包计算将引入大量的计算任务重复,降低NNPS效率。

基于此,本申请实施例采用目标模型的方式,从计算节点的网格块中选择目标数量的目标网格块,其中,如图5所示,目标模型为半陀螺模型,在图5所示的半陀螺模型中,仅标号(1,-1,0)、(1,0,0)、(1,1,0)、(0,0,1)、(0,0,-1)的每两个网格块之间不同网格块完成后续S6内部粒子对间NNP的精筛,而周围其他26-5=21个网格块则不参与以当前(0,0,0)中心格点构造的半陀螺细筛模型的网格块作用对任务计算。通过使用如图6所示的半陀螺模型,在计算单个计算节点内部网格块作用对任务上可以做到不重复、不遗漏,大大提高了单计算节点NNP搜索效率。同时,由于降低了相互作用的网格块作用对的数量,也降低了网格块之间存储粒子的数据传输量,降低了传输引入的时间消耗。

在本申请实施例中,利用每个网格块对应的子目标粒子信息得到计算节点中的网格块作用对,包括以下步骤D1-D2:

步骤D1,基于每两个目标网格块的子目标粒子信息,判断每两个目标网格块是否发生作用。

步骤D2,将发生作用的两个目标网格块确定为网格块作用对。

在本申请实施例中,确定网格块作用对中每个粒子对应的相邻粒子集合,包括以下步骤E1-E3:

步骤E1,从网格块作用对中任意选取一个目标网格块作为基准网格块,并将网格块作用对中除基准网格块之外的目标网格块作为配对网格块。

在本申请实施例中,网格块作用对中包括:网格块1和网格块2,可以将网格块1作为基准网格块,网格块2作为配对网格块。或者,在网格块2为基准网格块,网格块1位配对网格块。

步骤E2,利用基准网格块中的子目标粒子信息以及配对网格块中的子目标粒子信息,计算基准网格块中每个粒子与配对网格块中每个粒子之间的距离信息。

步骤E3,利用距离信息确定基准网格块中每个粒子对应的相邻粒子集合。

在本申请实施例中,利用距离信息确定基准网格块中每个粒子对应的相邻粒子集合,包括:对比距离信息与最大收集半径;利用配对网格块中选取距离信息小于最大收集半径的粒子,构建基准网格块中每个粒子对应的相邻粒子集合。

在本申请实施例中,在每个网格块作用对(例如{(1,-1,0),(1,0,0)})内部,以其中一个网格块为基准网格块,计算该网格块内部所有粒子与配对网格块内所有粒子的距离信息(即几何距离)r

作为一个示例,基准网格块中包括:粒子p1,粒子p2。配对网格块中包括:粒子q1,粒子q2以及粒子q3。粒子p1分别与粒子q1,粒子q2以及粒子q3之间的距离为r1,r2,r3。粒子p2分别与粒子q1,粒子q2以及粒子q3之间的距离为r3,r4,r5。然后分别将r1,r2,r3与最大收集半径进行对比,以及将r3,r4,r5与最大收集半径对比,即可得到粒子p1,粒子p2的相邻粒子集合。

本申请实施例提供的方法按照壳状区域-目标模型的搜索顺序,对所需粒子信息进行分别收集,再对计算任务进行遍历计算,即可遍历完成问题域中所有粒子的相互作用计算。此邻域粒子搜索方法可以减少NNPS过程发生时计算节点间频繁数据交互。同时,将计算任务与粒子对解绑,通过对固定子空间区域内粒子的索引,可完成所有计算任务的追踪、最邻近粒子的搜索,能够有效提高流体模拟过程的计算效率、准确度。

图7为本申请实施例提供的一种空间邻居粒子的搜索装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图7所示,该装置包括:

获取模块71,用于获取计算任务,并按照计算任务对问题域对应的目标空间进行拆分得到多个计算节点,其中,每个计算节点存储有该计算节点所在空间所有粒子的第一粒子信息;

提取模块72,用于获取每个计算节点的相邻计算节点,并提取相邻计算节点所在空间所有粒子的第二粒子信息,并将第二粒子信息与第一粒子信息合并存储,得到目标粒子信息;

处理模块73,用于对计算节点进行分割,得到计算节点中的多个网格块,其中,每个网格块分布有多个粒子对应的子目标粒子信息;

遍历模块74,用于利用每个网格块对应的子目标粒子信息得到计算节点中的网格块作用对,并确定网格块作用对中每个粒子对应的相邻粒子集合。

在本申请实施例中,提取模块72,用于获取最大收集半径;将计算节点为圆心,按照最大收集半径在目标空间内构建计算节点对应的壳状区域;将落入壳状区域的其他计算节点确定为相邻计算节点。

在本申请实施例中,处理模块73,用于构建长宽高均为最大收集半径的立方体;利用立方体对计算节点所在空间进行分割,得到多个网格块。

在本申请实施例中,空间邻居粒子的搜索装置还包括:筛选模块,用于获取预先构建的目标模型;按照目标模型从计算节点的网格块中选择目标数量的目标网格块。

在本申请实施例中,遍历模块74,用于基于每两个目标网格块的子目标粒子信息,判断每两个目标网格块是否发生作用;将发生作用的两个目标网格块确定为网格块作用对。

在本申请实施例中,遍历模块64,用于从网格块作用对中任意选取一个目标网格块作为基准网格块,并将网格块作用对中除基准网格块之外的目标网格块作为配对网格块;利用基准网格块中的子目标粒子信息以及配对网格块中的子目标粒子信息,计算基准网格块中每个粒子与配对网格块中每个粒子之间的距离信息;利用距离信息确定基准网格块中每个粒子对应的相邻粒子集合。

在本申请实施例中,遍历模块74,用于对比距离信息与最大收集半径;利用配对网格块中选取距离信息小于最大收集半径的粒子,构建基准网格块中每个粒子对应的相邻粒子集合。

本申请实施例还提供一种电子设备,如图8所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。

存储器1503,用于存放计算机程序;

处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例的步骤。

上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行以下实施例中所述的空间邻居粒子的搜索方法,方法包括:

获取计算任务,并按照所述计算任务对问题域对应的目标空间进行拆分得到多个计算节点,其中,每个所述计算节点存储有该计算节点所在空间所有粒子的第一粒子信息;

获取每个所述计算节点的相邻计算节点,并提取所述相邻计算节点所在空间所有粒子的第二粒子信息,并将所述第二粒子信息与所述第一粒子信息合并存储,得到目标粒子信息;

对所述计算节点进行分割,得到所述计算节点中的多个网格块,其中,每个所述网格块分布有多个粒子对应的子目标粒子信息;

利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对,并确定所述网格块作用对中每个粒子对应的相邻粒子集合。

进一步的,所述获取每个所述计算节点的相邻计算节点,包括:

获取最大收集半径;

将所述计算节点为圆心,按照所述最大收集半径在所述目标空间内构建所述计算节点对应的壳状区域;

将落入所述壳状区域的其他计算节点确定为所述相邻计算节点。

进一步的,所述对所述计算节点进行分割,得到所述计算节点中的多个网格块,包括:

构建长宽高均为所述最大收集半径的立方体;

利用所述立方体对所述计算节点所在空间进行分割,得到多个网格块。

进一步的,在利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对之前,所述方法还包括:

获取预先构建的目标模型;

按照所述目标模型从所述计算节点的网格块中选择目标数量的目标网格块。

进一步的,所述利用每个网格块对应的子目标粒子信息得到所述计算节点中的网格块作用对,包括:

基于每两个所述目标网格块的子目标粒子信息,判断每两个所述目标网格块是否发生作用;

将发生作用的两个目标网格块确定为所述网格块作用对。

进一步的,所述确定所述网格块作用对中每个粒子对应的相邻粒子集合,包括:

从所述网格块作用对中任意选取一个目标网格块作为基准网格块,并将所述网格块作用对中除所述基准网格块之外的目标网格块作为配对网格块;

利用所述基准网格块中的子目标粒子信息以及所述配对网格块中的子目标粒子信息,计算所述基准网格块中每个粒子与所述配对网格块中每个粒子之间的距离信息;

利用所述距离信息确定所述基准网格块中每个粒子对应的相邻粒子集合。进一步的,所述利用所述距离信息确定所述基准网格块中每个粒子对应的相邻粒子集合,包括:

对比所述距离信息与最大收集半径;

利用所述配对网格块中选取所述距离信息小于所述最大收集半径的粒子,构建所述基准网格块中每个粒子对应的相邻粒子集合。。

在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的空间邻居粒子的搜索方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk)等。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种题目搜索、批改方法、装置、电子设备和存储介质
  • 搜索结果的刷新方法、装置、存储介质及电子设备
  • 对象搜索方法、装置、电子设备及计算机可读存储介质
  • 相关搜索词的确定方法、装置、存储介质及电子设备
  • 目标搜索词生成方法及装置、电子设备、存储介质
  • 搜索空间组切换方法、装置、电子设备及存储介质
  • 搜索空间的生成方法及装置、电子设备及存储介质
技术分类

06120116452209