一种基于GPU并行的接触搜索方法与流程

文档序号:37306334发布日期:2024-03-13 20:54阅读:11来源:国知局
一种基于GPU并行的接触搜索方法与流程

本发明涉及工程中的高性能数值仿真分析,具体涉及一种基于gpu并行的接触搜索方法。


背景技术:

1、接触现象是普遍存在的,在实际工程力学仿真过程中往往涉及复杂的接触情况,例如,汽车碰撞过程中涉及大量部件的接触和滑移,接触不仅发生在车与外界之间、汽车各个部件之间,而且汽车的某一个部件都可能发生自身的接触碰撞。接触搜索是接触-碰撞问题仿真中最为耗时的部分,因此,高效的接触搜索算法是提高数值分析效率的关键。

2、常采用的接触搜索算法包含主从面法、级域法、一体化法以及八叉树全局搜索法。尽管这些算法已能较准确地搜索到接触对象,但随着仿真场景规模的增大,在单处理器上实现的接触碰撞检测算法已经难以满足实际工程对计算效率的要求。接触搜索即对接触点的搜寻,是通过计算找出所有离被接触块足够近而应作为已接触点处理的节点。可以分为两种情况,一种是接触前搜寻,另一种是接触后搜寻。接触前搜寻是针对前一次计算中未处于接触状态的节点而言的,其目的是找出可能的新的接触节点。而接触后搜寻是针对前一次计算已经处于接触状态的节点而言的,其目的是找出已接触点上新的接触位置,并检查是否有已接触点脱离接触状态。因此,只要给定一个节点的坐标和可能与这个节点接触的接触块的节点坐标,就能计算出这个节点与那些接触块的相对位置,从而判别这个节点是否应作为已接触点处理。在此过程中,不仅要准确地找出每一个已接触点及相应的接触块,还要尽量地减少计算工作量。实践表明,在复杂的接触问题中,接触搜寻占据求解时间的40%~50%。从工程应用的角度讲,计算量的大小也是一个十分重要的问题,计算速度的提高意味着同样的时间内可做更多的工作,或者用更多的单元求解同样的问题从而提高计算精度。因此,接触点搜寻中的一个十分重要的问题是如何减少计算工作量并尽量少占用内存空间。因此,有必要提出一种基于gpu并行的接触搜索方法,以解决上述问题。


技术实现思路

1、本发明的目的在于针对现有技术的不足之处,提供一种基于gpu并行的接触搜索方法,以解决现有技术在单处理器上实现的接触碰撞检测算法难以满足实际工程对计算效率的要求的问题。

2、本发明提供一种基于gpu并行的接触搜索方法,包括:

3、计算接触块扩展域,其中,在cuda架构下,采用单个cuda线程对应单个接触块的计算方式,计算每个接触块扩展域,并存入到全局显存中用于存储混合表的一维数组中;

4、找到落入所述接触块扩展域内的接触点,形成测试对;

5、从所述测试对找到接触对。

6、进一步地,计算接触块扩展域,包括:

7、计算整个接触体系的最长边方向;

8、将接触点和接触块扩展域的下限点在最长边方向的坐标按照前半部分接触块扩展域,后半部分接触点的顺序存入同一数组中得到混合表;

9、将混合表中的坐标按从小到大的顺序排序得到排序表。

10、进一步地,找到落入所述接触块扩展域内的接触点,形成测试对,包括:

11、在排序表中进行测试对第一次搜寻,从排序表的第一个元素开始逐个检测,当发现一个扩展域下限点后就计算出扩展域在最长边方向上的跨度,并在排序表中找到落入该跨度内的接触点编号;其中,第一次搜寻由两层循环组成,将两层循环中的外循环扩展到每个cuda线程上;

12、在最长边方向的搜索结束后,得到包括接触块扩展域和接触点从属关系的数组,通过直接比较另外两个方向的坐标值,检测接触点是否真正在该接触块的扩展域内;如果接触点另外两个方向的坐标值也处于接触块扩展域内,则形成一个测试对。

13、进一步地,从所述测试对找到接触对,包括:

14、从面级开始,面级构成接触对的测试对再进入到边级进行检测,边级检测成功的测试对再进入到点级的接触检测,最终形成真正的接触对关系。

15、进一步地,所述面级、边级以及点级中的每一级接触检测中,均需要以测试对为基本计算单元,计算测试对中接触点与对应级的几何关系,以此来判断是否满足接触关系。

16、进一步地,以测试对为基本计算单元,计算测试对中接触点与对应级的几何关系时,采用一个线程与一个测试对对应的方式在gpu中实现并行计算。

17、进一步地,所述面级、边级以及点级中的级与级之间测试对的更新均在同一个数组空间内进行操作。

18、进一步地,从面级开始,面级构成接触对的测试对再进入到边级进行检测,边级检测成功的测试对再进入到点级的接触检测,最终形成真正的接触对关系,包括:

19、对数个测试对并行进行接触判断;

20、如果当前测试对满足接触条件,则将该测试对的编号保存;

21、如果当前测试对不满足接触条件,则将该测试对编号设为一个极大数,得到一个新的测试对数组;所述极大数大于总测试对数;

22、采用thrust函数对测试对进行从小到大的排序,使满足接触条件的接触对全部排到数组的前面部分,通过寻找第一个极大数出现的位置得到共有多少个接触对产生,同时也满足顺序存储的要求。

23、本发明具有以下有益效果:本发明提供的基于gpu并行的接触搜索方法,针对接触碰撞仿真领域对高效接触搜索算法的需求,提出了基于gpu并行的接触搜索策略,针对接触搜索过程中出现的大量接触块与节点形成的测试对和接触对,发展线程与接触块的映射策略及gpu并行排序技术,充分利用gpu的众核特性将此类数据量大的独立任务利用gpu线程来进行计算,实现测试对和接触对搜索的gpu加速。



技术特征:

1.一种基于gpu并行的接触搜索方法,其特征在于,包括:

2.根据权利要求1所述的基于gpu并行的接触搜索方法,其特征在于,计算接触块扩展域,包括:

3.根据权利要求2所述的基于gpu并行的接触搜索方法,其特征在于,找到落入所述接触块扩展域内的接触点,形成测试对,包括:

4.根据权利要求3所述的基于gpu并行的接触搜索方法,其特征在于,从所述测试对找到接触对,包括:

5.根据权利要求4所述的基于gpu并行的接触搜索方法,其特征在于,所述面级、边级以及点级中的每一级接触检测中,均需要以测试对为基本计算单元,计算测试对中接触点与对应级的几何关系,以此来判断是否满足接触关系。

6.根据权利要求5所述的基于gpu并行的接触搜索方法,其特征在于,以测试对为基本计算单元,计算测试对中接触点与对应级的几何关系时,采用一个线程与一个测试对对应的方式在gpu中实现并行计算。

7.根据权利要求6所述的基于gpu并行的接触搜索方法,其特征在于,所述面级、边级以及点级中的级与级之间测试对的更新均在同一个数组空间内进行操作。

8.根据权利要求7所述的基于gpu并行的接触搜索方法,其特征在于,从面级开始,面级构成接触对的测试对再进入到边级进行检测,边级检测成功的测试对再进入到点级的接触检测,最终形成真正的接触对关系,包括:


技术总结
本发明公开一种基于GPU并行的接触搜索方法,包括:计算接触块扩展域,其中,在CUDA架构下,采用单个CUDA线程对应单个接触块的计算方式,计算每个接触块扩展域,并存入到全局显存中用于存储混合表的一维数组中;找到落入所述接触块扩展域内的接触点,形成测试对;从所述测试对找到接触对。本发明针对接触碰撞仿真领域对高效接触搜索算法的需求,提出了基于GPU并行的接触搜索策略,针对接触搜索过程中出现的大量接触块与节点形成的测试对和接触对,发展线程与接触块的映射策略及GPU并行排序技术,充分利用GPU的众核特性将此类数据量大的独立任务利用GPU线程来进行计算,实现测试对和接触对搜索的GPU加速。

技术研发人员:李射
受保护的技术使用者:湖南迈曦软件有限责任公司
技术研发日:
技术公布日:2024/3/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1