CN118070424A - 一种船舶三维水弹性高效并行计算方法 - Google Patents
一种船舶三维水弹性高效并行计算方法 Download PDFInfo
- Publication number
- CN118070424A CN118070424A CN202410219395.8A CN202410219395A CN118070424A CN 118070424 A CN118070424 A CN 118070424A CN 202410219395 A CN202410219395 A CN 202410219395A CN 118070424 A CN118070424 A CN 118070424A
- Authority
- CN
- China
- Prior art keywords
- calculation
- ship
- computing
- water elasticity
- parallelization
- 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.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 159
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000004044 response Effects 0.000 claims abstract description 35
- 238000013461 design Methods 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 19
- 230000009466 transformation Effects 0.000 claims abstract description 16
- 230000001133 acceleration Effects 0.000 claims abstract description 14
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 210000000476 body water Anatomy 0.000 claims abstract description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 10
- 230000005855 radiation Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000004613 tight binding model Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013016 damping Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种船舶三维水弹性高效并行计算方法,涉及船舶工程技术领域,该方法包括:建立船体水弹性响应计算模型;基于模型进行水弹性响应计算,确定计算过程中计算时间占总时间比例高的计算模块;对计算模块进行并行化可行性分析,对可进行并行化设计的计算模块进行并行化改造,实现计算模块对多线程的调用;采用并行化改造后的计算程序再次执行基于模型进行水弹性响应计算,得到不同线程下的计算时间加速比。该方法基于变量共享内存,采用在单机电脑上调用处理器多个线程同时计算的方式,解决船体水弹性响应计算单机单核计算速度慢的问题,提升计算效率,实现高效并行计算方法在船舶水弹性响应计算上的应用。
Description
技术领域
本发明涉及船舶工程技术领域,尤其是一种船舶三维水弹性高效并行计算方法。
背景技术
三维水弹性响应计算是船舶和海洋工程浮式结构物性能评估的重要方式之一。随着船舶大型化的发展、大型浮式结构物的开发等,计算对象的网格数量向规模化发展,从几千向几万增长,计算消耗的时间呈指数关系增长。计算时间的大量消耗无法满足实际工程应用快速响应的要求,急需提高代码的计算效率,缩短计算时间。在船舶三维水弹性响应计算源程序的开发过程中,为提高计算效率,针对不同的计算机硬件条件会采用不同的策略,不同策略的实施方式所需的硬件要求和达到的并行效果是不一样的。不同网格数量的计算对象通常采用不同的高效并行计算策略,对几十万、百万级以上的网格,单机电脑已经完全不能满足计算的需求,这种大规模的计算通常需要在集群服务器上进行计算,其并行策略通常采用MPI协议,通过使用发送接收语句传递数据的方式实现计算程序的快速执行。
但在很多情况下,计算对象几千、几万量级的网格数量已经可以满足工程计算的需求,随着计算机硬件的快速发展,单机电脑的内存容量和处理器的能力都得到了大幅提升,在一定程度上可以满足单机电脑快速计算的要求。那么这种硬件条件的存在给了计算人员一个可选项,即可以充分利用可方便获取的单机电脑进行高效计算,既能满足工程快速响应的需求,又可以实现计算资源的便捷获取。因此,为了实现船舶三维水弹性在单机电脑上的高效计算,有必要设计一种高效并行计算方法,充分利用已有的计算机硬件资源,提升船舶三维水弹性程序的计算效率。
发明内容
本发明人针对上述问题及技术需求,提出了一种船舶三维水弹性高效并行计算方法,基于变量共享内存,采用在单机电脑上调用处理器多个线程同时计算的方式,解决船体水弹性响应计算单机单核计算速度慢的问题,提升计算效率,实现高效并行计算方法在船舶水弹性响应计算上的应用。
本发明的技术方案如下:
一种船舶三维水弹性高效并行计算方法,包括如下步骤:
(1)建立船体水弹性响应计算模型;
(2)以过程(1)中的船体水弹性响应计算模型为计算对象,在进行水弹性响应计算时,确定计算过程中计算时间占总时间比例高的计算模块;
(3)对过程(2)中计算耗时较多的计算模块进行并行化可行性分析,区分出可进行并行化设计和不能进行化设计的模块;
(4)以过程(3)中得到的可进行并行化设计的计算模块为改造对象进行并行化改造,实现计算模块对多线程的调用;
(5)以过程(1)中的船体水弹性响应计算模型为计算对象,应用过程(4)中并行化改造后的计算程序计算船体的水弹性响应,得到不同线程下的计算时间加速比。
其进一步的技术方案为,过程(1)中的船体水弹性响应计算模型包括船体三维有限元模型、船体干表面网格模型和船体湿表面网格模型,以这些计算模型为输入开展船体模型水弹性响应计算。
其进一步的技术方案为,过程(2)中确定计算过程中计算时间占总时间比例高的计算模块,包括:
在进行水弹性响应计算时统计各主要计算模块的计算时间,并获取计算程序整体的运行时间;其中,主要计算模块包括用于计算格林函数、入射势、绕射势和辐射势的计算模块;
计算各主要计算模块的计算时间在整体运行时间中的占比,并对比值进行排序,挑选出计算时间占比多的计算模块。
其进一步的技术方案为,过程(3)中对计算模块进行并行化可行性分析,包括:
确认计算模块中是否存在运行时间超过给定阈值的循环语句计算代码,若存在则认为计算模块中的循环语句计算代码部分可进行并行化设计。
其进一步的技术方案为,过程(4)中对可进行并行化设计的计算模块进行并行化改造,包括:
采用OpenMP的方法对可进行并行化设计的计算模块中的循环语句计算代码部分进行并行化改造,使循环语句计算代码部分分为多个线程同时进行计算。
其进一步的技术方案为,采用OpenMP的方法对可进行并行化设计的计算模块中的循环语句计算代码部分进行并行化改造,包括:
搭建OpenMP并行化程序设计环境,并设定采用单频率并行方式;
在可进行并行化设计的计算模块中的循环语句计算代码部分的前后,分别增加前置语句和后置语句以调用多线程实现并行化设计。
其进一步的技术方案为,过程(5)中不同线程下的计算时间加速比的计算公式为:
其中,Sp(n)为p个线程下的计算时间加速比,ts(n)为求解一个规模为n的问题的最快串行算法在单处理器上的运行时间,tp(n)为求解该问题的并行化改造后的计算程序在p个线程下的运行时间。
其进一步的技术方案为,该方法还包括:
在并行化改造后的计算程序执行时通过read语句读入线程数p,并通过线程设置语句启动p数量的线程。
本发明的有益技术效果是:
(1)本发明建立的方法可以为并行化设计提供指导。在计算程序进行并行化设计时,明确了计算程序是否可以进行并行化、哪些计算模块可以进行并行化以及并行化的方法。本发明给出了关键的测试、分析和设计过程,可为其他船舶水动力计算程序的并行化改造提供参考。
(2)本发明建立的方法可以有效提升船舶水弹性程序在多核单机电脑上的计算速度。相比于超级计算机和大型服务器,多核单机电脑是能接触到的最多的一种计算机类型,与粘流计算相比,船舶水弹性响应计算基于广义的势流理论进行,采用较少的网格即可获得较为精确的结果。因此,多核单机电脑的硬件条件在很多情况下完全能够满足计算的需要。本发明建立的方法主要针对这样的使用需求,能够提升船舶水弹性程序在多核单机电脑上的计算效率,缩短了计算时间。
附图说明
图1是本申请提供的船舶三维水弹性高效并行计算方法流程图。
图2是本申请提供的不同线程数下船舶三维水弹性响应计算加速比对比示意图(网格数量24000)。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
请参考图1所示,本申请提供了一种船舶三维水弹性高效并行计算方法,具体包括如下步骤:
步骤1:建立船体水弹性响应计算模型,具体包括:
步骤1.1:建立船体三维有限元模型,求解浮体的弹性模态振型,选择合适的模态振型用于船体的后续计算。在求解弹性模态振型时会涉及到结构物的动力学整体方程,其表达式为:
其中,[M]为总质量阵,[C]为总阻尼阵,[K]为总刚度矩阵,{U}为物体离散后的总节点位移阵,{F}表示物体所受的外力。
步骤1.2:建立船体干表面网格模型。此网格模型可以直接采用船体有限元模型,也可以只采用有限元模型的船体外壳表面部分,但必须保证干表面网格模型与有限元模型对应部分网格的节点编号、单元编号保持完全一致。船体干表面网格模型网格单元中包含每个节点的坐标信息(x,y,z)、每个单元的节点组成及网格单元的数字编号,网格单元可以是三角形网格或者四边形网格。
步骤1.3:建立船体湿表面网格模型。其中网格单元中包含每个节点的坐标信息(x,y,z)以及每个单元的节点组成及网格单元的数字编号,网格单元可以是三角形网格或者四边形网格。
步骤1.1~步骤1.3中建立的船体有限元模型、干表面网格模型和湿表面网格模型用于输入数据的准备。在完成计算数据的准备后,开始执行步骤2。
步骤2:基于步骤1建立的模型进行船舶水弹性响应计算,确定计算过程中计算时间占总时间比例高的计算模块,具体包括:
步骤2.1:基于模型进行船舶水弹性响应计算时,在水弹性响应计算程序中调用计时函数统计各主要计算模块的计算时间(耗时),并获取计算程序整体的运行时间。其中,主要计算模块包括用于计算格林函数、入射势、绕射势和辐射势的计算模块。
步骤2.2~步骤2.5:将各主要计算模块的计算时间与整体运行时间相比,得到每一个计算模块的计算耗时占比。
步骤2.6:将各模块计算时间与整体运行时间的比值进行排序,挑选出计算时间占比多的计算模块。
步骤3:对挑选出来的计算模块进行并行化可行性分析。
可行性分析的方法是通过对计算模块的计算代码进行分析确认是否存在运行时间超过给定阈值的循环语句计算代码,即是否存在循环控制的大规模计算代码,这部分代码在运行时占用了大量时间,若存在则认为计算模块中的循环语句计算代码部分可进行并行化设计。在本实施例中,主要确认是否存在DO循环控制的大规模计算代码,且上述阈值可以根据实际计算情况和经验给定,在此不做具体限定。各计算模块的时间占比及并行可行性分析结果如表1所示。
表1计算模块时间占比及并行可行性
步骤4:对可进行并行化设计的计算模块进行并行化改造,实现计算模块对多线程的调用。在本实施例中,采用OpenMP的方法对可进行并行化设计的计算模块中的循环语句计算代码部分进行并行化改造,使循环语句计算代码部分分为多个线程同时进行计算。具体包括:
首先,搭建语言编译环境和OpenMP并行化程序设计环境,采用Intel visualstudio平台进行编程语言的编译和64位编译系统。而后,确定采用单频率内并行的方式进行并行化设计,单频率内并行涉及的变量少,并行程序开发复杂度相对较低,且对线程的使用效率更高。最后,对选择出来需要进行并行化设计并且可以进行并行化设计的计算模块中的DO循环语句进行并行化设计。经分析,对船舶三维水弹性计算中的辐射势求解、绕射势求解和格林函数计算三个模块进行并行化设计,如下面的循环部分占据了主要的计算时间:
Do i=1,m
Do j=1,n
!计算主体部分
End do
End do
对这个循环部分进行并行化改造,即在可进行并行化设计的计算模块中的循环语句计算代码部分的前后,分别增加前置语句和后置语句以调用多线程实现并行化设计。修改后的语句如下:
!$omp parallel default(private)shared(此处输入变量名称)
!$omp do
Do i=1,m
Do j=1,n
!计算主体部分
End do
End do
!$omp end do
!$omp end parallel
步骤5:采用并行化改造后的计算程序再次执行基于模型进行水弹性响应计算,得到不同线程下的计算时间加速比。
在并行化改造后的计算程序执行时通过“read”语句读入线程数p,并通过线程设置语句omp_set_num_threads()启动p数量的线程,具体如下:
read(*,*)p
call omp_set_num_threads(p)
计算给定线程下的计算时间加速比的计算公式为:
其中,Sp(n)为p个线程下的计算时间加速比,ts(n)为求解一个规模为n的问题的最快串行算法在单处理器上的运行时间(即未改造前的原有计算程序运行的时间),tp(n)为求解该问题的并行化改造后的计算程序在p个线程下的运行时间。
如图2所示,本实施例给出了采用五种不同的线程(核数)下船舶三维水弹性响应计算(分为无限水深和有限水深)的加速比对比示意图,可以看出,随着线程的增加,并行化改造后的计算程序运行时间的加速比也在逐步提升,说明本方法可以实现船舶三维水弹性响应的高效并行计算,当线程增加到一定程度时,比如p=32时,可以看出加速比增长速度变缓,最终趋于饱和。
本方法原理清晰,可以实现船舶三维水弹性响应的高效并行计算。不同处理器和内存配置的计算机,可以适配于不同网格数量船体模型的水弹性响应计算,但可以明确的是本发明提出的并行计算方法的应用可以大幅缩短计算时间,且不影响计算结果的准确性。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (8)
1.一种船舶三维水弹性高效并行计算方法,其特征在于,所述方法包括:
建立船体水弹性响应计算模型;
基于所述模型进行水弹性响应计算,确定计算过程中计算时间占总时间比例高的计算模块;
对所述计算模块进行并行化可行性分析,对可进行并行化设计的计算模块进行并行化改造,实现计算模块对多线程的调用;
采用并行化改造后的计算程序再次执行基于所述模型进行水弹性响应计算,得到不同线程下的计算时间加速比。
2.根据权利要求1所述的船舶三维水弹性高效并行计算方法,其特征在于,所述建立船体水弹性响应计算模型,包括:
建立船体三维有限元模型、船体干表面网格模型和船体湿表面网格模型。
3.根据权利要求1所述的船舶三维水弹性高效并行计算方法,其特征在于,所述确定计算过程中计算时间占总时间比例高的计算模块,包括:
在进行水弹性响应计算时统计各主要计算模块的计算时间,并获取计算程序整体的运行时间;其中,所述主要计算模块包括用于计算格林函数、入射势、绕射势和辐射势的计算模块;
计算各主要计算模块的计算时间在整体运行时间中的占比,并对比值进行排序,挑选出计算时间占比多的计算模块。
4.根据权利要求1所述的船舶三维水弹性高效并行计算方法,其特征在于,对所述计算模块进行并行化可行性分析,包括:
确认所述计算模块中是否存在运行时间超过给定阈值的循环语句计算代码,若存在则认为所述计算模块中的循环语句计算代码部分可进行并行化设计。
5.根据权利要求1所述的船舶三维水弹性高效并行计算方法,其特征在于,所述对可进行并行化设计的计算模块进行并行化改造,包括:
采用OpenMP的方法对可进行并行化设计的计算模块中的循环语句计算代码部分进行并行化改造,使所述循环语句计算代码部分分为多个线程同时进行计算。
6.根据权利要求5所述的船舶三维水弹性高效并行计算方法,其特征在于,所述采用OpenMP的方法对可进行并行化设计的计算模块中的循环语句计算代码部分进行并行化改造,包括:
搭建OpenMP并行化程序设计环境,并设定采用单频率并行方式;
在可进行并行化设计的计算模块中的循环语句计算代码部分的前后,分别增加前置语句和后置语句以调用多线程实现并行化设计。
7.根据权利要求1所述的船舶三维水弹性高效并行计算方法,其特征在于,不同线程下的计算时间加速比的计算公式为:
其中,Sp(n)为p个线程下的计算时间加速比,ts(n)为求解一个规模为n的问题的最快串行算法在单处理器上的运行时间,tp(n)为求解该问题的并行化改造后的计算程序在p个线程下的运行时间。
8.根据权利要求7所述的船舶三维水弹性高效并行计算方法,其特征在于,所述方法还包括:
在并行化改造后的计算程序执行时通过read语句读入线程数p,并通过线程设置语句启动p数量的线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410219395.8A CN118070424A (zh) | 2024-02-28 | 2024-02-28 | 一种船舶三维水弹性高效并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410219395.8A CN118070424A (zh) | 2024-02-28 | 2024-02-28 | 一种船舶三维水弹性高效并行计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118070424A true CN118070424A (zh) | 2024-05-24 |
Family
ID=91108817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410219395.8A Pending CN118070424A (zh) | 2024-02-28 | 2024-02-28 | 一种船舶三维水弹性高效并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118070424A (zh) |
-
2024
- 2024-02-28 CN CN202410219395.8A patent/CN118070424A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lim et al. | Autotuning GPU kernels via static and predictive analysis | |
Ukidave et al. | Nupar: A benchmark suite for modern gpu architectures | |
Kraus et al. | Accelerating a C++ CFD code with OpenACC | |
EP2361408A1 (en) | Method and system for parallelization of sequencial computer program codes | |
Dong et al. | Characterizing the microarchitectural implications of a convolutional neural network (cnn) execution on gpus | |
CN112559053B (zh) | 可重构处理器数据同步处理方法及装置 | |
Shen et al. | Improving performance by matching imbalanced workloads with heterogeneous platforms | |
Liang et al. | An accurate GPU performance model for effective control flow divergence optimization | |
CN113822004A (zh) | 一种用于集成电路模拟加速和仿真的验证方法及系统 | |
CN113553057B (zh) | 一种针对不同架构的gpu进行并行计算的优化系统 | |
Zhong et al. | Using arm scalable vector extension to optimize open mpi | |
Gerum et al. | Source level performance simulation of gpu cores | |
CN108021563B (zh) | 一种指令间数据依赖的检测方法和装置 | |
Dubrulle et al. | A low-overhead dedicated execution support for stream applications on shared-memory CMP | |
CN118070424A (zh) | 一种船舶三维水弹性高效并行计算方法 | |
Metz et al. | Hybrid PTX analysis for GPU accelerated CNN inferencing aiding computer architecture design | |
CN111400013B (zh) | 一种多核处理器的数据流的处理方法及系统 | |
Shimokawabe et al. | A high-productivity framework for multi-GPU computation of mesh-based applications | |
Liu et al. | SEER: A Time Prediction Model for CNNs from GPU Kernel's View | |
Al-Hashimi et al. | A proposed data partitioning approach on heterogeneous HPC platforms: Data locality perspective | |
Badr et al. | A high-level model for exploring multi-core architectures | |
Widerspick et al. | Latency measurements for an emulation platform on autonomous driving platform nvidia drive px2 | |
Singh et al. | Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction | |
Kang et al. | NNsim: Fast performance estimation based on sampled simulation of GPGPU kernels for neural networks | |
Nicolas et al. | Parallel native-simulation for multi-processing embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |