基于高性能GPU计算的城市建筑群震害模拟 [*]

韩博1 陆新征1 许镇1 李易1,2

1. 清华大学土木工程系,土木工程安全与耐久教育部重点实验室,北京 100084

2. 北京工业大学城市与工程安全减灾教育部重点实验室,北京,100124

自然灾害学报/Journal of Natural Disasters, 2012, 21(5): 16-22.

下载全文/Download PDF version

摘要:为适应不断提高的震害预测需求,精细化模型已经成为城市区域震害预测的主要发展方向。然而传统的基于CPU平台的计算方法成本过高,使得精细化模型的应用受限。近年来,GPU技术由于其强大的并行计算能力和较为低廉的价格优势,在通用计算领域得到快速发展和应用。本文基于GPU-CPU协同计算技术,建立了城市区域震害的计算模拟方法,显著缩短了城市区域震害预测的时间。并采用该方法对某中型城市的真实震害进行了模拟应用,展示了GPU技术在大区域城市建筑群震害模拟中的独特优势。

关键词:城市区域震害模拟,GPU,并行计算

Seismic damage simulation for urban buildings based on high performance GPU computing

Han Bo1Lu Xinzheng1Xu Zhen1Li Yi1,2

(1.Department of civil engineering, China Key Laboratory of Civil Engineering Safety and Durability of China Education Ministry, Tsinghua University, Beijing 100084;

2. Key Laboratory of Urban Security and Disaster Engineering of Ministry of Education, Beijing University of Technology, Beijing, 100124)

Abstract: Refined models have been an important development trend of urban regional seismic damage prediction. However, the application of the refined models has been limited because of the high cost of computation if it is implemented on traditional CPU platform. In recent years, GPU technology has been developed rapidly due to its powerful parallel computing capability and cheaper price. In this paper, a simulating method for urban regional seismic damage is developed based on GPU-CPU cooperative computing technology, which can significantly reduce the computing time. Then, an application for the seismic damage simulation of a medium-sized city is conduced by using the proposed method to illustrate the unique advantages of GPU technology in large-scale regional seismic damage simulation.

Keywordsurban regional seismic damage simulation, GPU, parallel computing

1       概述

我国是世界上地震灾害最为严重的国家之一,科学预测地震灾害对防震减灾有着极其重要的意义。目前世界各国都在不断改进传统震害预测方法,而其中的一个重要方面就是通过一定的建模方法,将城市中的所有建筑都建立起相应的计算模型,从而得到城市区域震害预测精细化模型,以满足震害预测准确、高效和多样化的需求。如日本东京大学地震研究所开展的“Full computation of earthquake hazards and disasters”项目,通过建立整个东京市区建筑群的精细化地震模型,利用日本的超级计算机,完成了整个东京市地震震害预测的模拟,取得了很多重要成果。但是,计算平台是这种方法的一个重要制约,特别是需要迅速得到模拟结果时,必须依赖非常强大的计算机系统。现有城市区域震害精细化模拟很多都是基于超级计算机平台,其价格昂贵、体积庞大、维护代价高昂,难以得到广泛推广。因而目前城市区域震害精细化模拟还大都只停留在“可行”而非“可用”的阶段[1,2,3,4]

近年来,随着GPUGraphic Processing Unit,图形处理器)技术的飞速发展,为城市区域震害精细化模拟的应用打开了一个全新的天地。传统的计算都是基于CPUCentral Processing Unit,中央处理器)的,而CPU发展遵循摩尔定律,单核性能越来越强劲,但核心数较少,且价格昂贵。而对于GPU,虽然每个计算核心的能力都不是很强,但是GPU里面集成了成百上千个计算核心。这样一来,其总浮点计算能力就远远超过了CPU,且价格低廉,其价格只有同等传统CPU计算机的百分之几。特别是NVIDIA公司推出了CUDACompute Unified Device Architecture,统一计算架构)之后,大大降低了GPU通用计算程序的开发难度。目前GPU计算已经在生物、电磁、地球等学科中发挥了越来越重要的作用 [5,6,7]

当然,GPU计算并非十全十美,由于GPU中每个核心的计算能力有限,所以一个计算任务中子任务的数量越多,且单个子任务的工作量大小适中,子任务间数据交互越少,就越能充分发挥GPU计算强大的能力。而城市区域建筑群震害模拟就具有这个特点:一个城市区域中建筑物的数量成千上万,但对于一般单体建筑而言,层模型等宏观模型已经可以满足其震害预测的精度需要,每个单体非线性模型的自由度不多,且不同建筑物之间在地震下的相互影响不大。这正是最能充分发挥GPU核心能力的计算领域。对于动辄几百个核心的GPU而言,由每个GPU核心负责一个单体建筑的分析,这样即便是一座城市有成千上万栋建筑,也只需要数次任务分配就可以批量完成,效率极高。

GPU/CPU协同计算为城市区域震害预测提供了良好的硬件条件,但要真正实现基于GPU/CPU协同计算的城市区域震害精细化模拟,尚有很多问题有待解决。本文对基于GPU的大区域城市建筑群震害模拟进行了初步研究,其手段和成果可供有关研究人员参考。

2       计算流程与模型选择

本研究采用显式动力弹塑性时程分析来计算结构的动力响应,其计算程序流程如图1

图1 单座建筑地震反应分析流程

1 单座建筑地震反应分析流程

Figure 1 Seismic analysis process for a single building

在大多数情况中,城市建筑群中多为普通多层建筑,因此在本研究中,采用剪切层模型进行模拟。层间剪力-层间位移滞回模型可采用平行四边形弹塑性模型或陆新征-曲哲10参数滞回模型[8]。平行四边形模型计算最为简便,且不同建筑的不同受力阶段计算量相当,故选取其用来进行计算效率的比较。而陆新征-曲哲10参数滞回模型可以模拟屈服、强化、软化等比较复杂的层间行为,具有较强的通用性,通过调整参数,可以得到比较精确的模拟结果,因此用来进行真实城市建筑群倒塌震害的模拟。

2 平行四边形滞回模型示意图

Figure 2 Diagram of the bilinear hysteretic model

O

 
图2 平行四边形滞回模型示意图

Vy-=bVy+

陆新征-曲哲滞回模型示意图    3 陆新征-曲哲滞回模型示意图

Figure 3 Diagram of Lu-Qu hysteretic model

GPU计算中,如果存在大量的逻辑分支运算,则计算效率会显著下降。且本文的震害模拟需要考虑倒塌问题,隐式计算方法存在非线性迭代不收敛的问题,综合上述两点考虑,本文采用中心差分法[10]进行动力方程求解。其计算公式为:

              (1)

其中阻尼矩阵采用经典瑞雷阻尼,式中参数意义可参见文献[10]

3       计算程序架构

3.1   设计原则

(1)    利用CPU强大的逻辑分析功能完成数据的读取和计算任务分配,利用GPU强大的并行处理能力完成单体建筑物的非线性时程计算。

(2)    通过合理的程序架构设计,减少因CPUGPU数据交换等导致的计算效率下降。

3.2   CPU端功能

(1)    读取地震动数据和结构参数数据,并将其存储于系统内存中;

(2)    CPUGPU之间需要交换的数据在系统内存和显存上分别进行存储空间分配;

(3)    将数据在系统内存和显存之间进行拷贝,以供CPUGPU使用;

(4)    调用GPUCUDA语言的global函数,并对GPU资源分配进行调度;

(5)    输出计算结果。

3.3   GPU端功能

(1)    GPU端为临时数据分配显存空间

(2)    每条GPU线程读取一座建筑物的数据,进行弹塑性时程计算,并将计算结果写入CPU端分配好的用于拷贝的显存中。

3.4   CPU-GPU通讯模式

(1)    CPU端采用CUDAHost函数中调用GPU函数时,对CUDA的运行参数进行设置,包括gridblockthread的维度等。

(2)    采用cudaMemcpy() 函数将数据在内存和显存之间拷贝。

4       程序实现与测试

4.1   并行化实现

按照以下方法实现程序并行化:

(1)    完成单个结构层剪切模型弹塑性时程分析C++程序的编写,为将其移植到CUDA C做准备。

(2)    将移植好的C++程序改写为CUDA C设备端程序(即GPU程序)。

由于每一个结构都作为一个并行的计算任务,因此单个结构的时程分析都是一个并行的内核程序,其整个计算过程均要在GPU上进行,因此要对其进行整体改写。

(3)    编写主机端程序(即CPU端程序),包括数据读入,拷贝,输出函数,以及主控制程序。

4.2   程序并行化测试

程序编写完成之后,为验证并行执行的效果以及相关参数的选取,本文对其性能进行了测试,并将CPU/GPU协同计算的结果和CPU单独计算的结果进行对比。

需要说明的是,在本程序中,所有的计算模块都是在GPU上完成的,CPU只是起到调度作用,对性能影响很小,可不必考虑CPUGPU计算性能的提高。因此后文中的对比均采用GPUCPU作为对比对象。

4.2.1 测试数据:

(1)    采用1000座结构作为测试数据;

(2)    结构均为6层,每层质量相同;

(3)    地震波长度40s,步长0.005s,共8000

(4)    层间剪力-层间位移采用最简单的平行四边形滞回模型,且仅输出了其中某一座结构的位移计算结果,以减少硬盘写入速度对测试结果的影响

4.2.2 测试平台:

CPU平台Intel Core i3 CPU 530 @2.93GHz内存 DDR3  4G 1333MHz

GPU平台:Intel 赛扬双核 E3200 @2.4GHz+NVIDIA GeForce GTX 460  1GB 

两种测试平台价格相当(约1500元左右),因此可以用来比较其性价比。

测试中GPU程序运行参数设置为grid=1block=4,编译参数中,GPU_ Architecture取为sm_10,即采用计算能力为1.0的计算架构运行程序[11]

4.2.3 测试结果

首先进行了建筑个数与计算时间关系的测试,其结果如图4

图4 CPU/GPU计算时间与计算个数的关系

4 CPU/GPU计算时间与计算个数的关系

Figure 4 The relationship between quantity and time using GPU and CPU 【图里面的文字不要大于图题的文字,大概相当于小五到六号字】

图中GPU计算时间明显低于CPU的计算时间。由于图中GPU计算时间曲线形状不太清楚。将其进行放大之后,如图5所示。

图5 GPU计算时间与计算个数关系

5 GPU计算时间与计算个数关系

Figure 5 The relationship between quantity and time using GPU

从图中可以看出,CPU程序的计算曲线呈现直线型,即随着计算建筑个数的上升,其计算时间与计算个数成正比。这也符合串行计算理论“单线程,单任务”的理念。而GPU的计算结果呈现折线状,计算建筑个数增加,时间增加并不是很多,这是因为CUDA在计算时,在同一个block内会以32条线程作为一个线程束,同一个线程束内,程序并行效率最高,如果超过32条线程,就会每32条线程构成一个线程束,在线程束之间会产生线程分配延迟。而本文在定义CUDA计算时,使用了4block,因此,当计算线程数超过4×32=128条时,线程就需要多分配一次,因此计算时间就会显著增长。但是这种效应随着计算时间的增长而逐渐减小,建筑物数量小于400栋时,每次额外的线程分配计算时间增长很多,当建筑数量多于400栋后,其时间增量很小。这是由于在线程数较多时,CUDA自身可以对线程分配进行优化,将部分线程分配延时隐藏于计算之中,从而令线程分配延时降低。

通过对比GPUCPU的计算时间,可以看出,GPU在并行计算大量弹塑性时程分析时速度是非常理想的,其计算时间比如图5

图6 CPU/GPU计算时间比

6 CPU/GPU计算时间比

Figure 6 The comparison of computing time using CPU and GPU

当计算建筑个数为1时,采用CPU计算的时间仅为GPU计算的0.07倍,这是由于CPU单个核心的计算能力要比GPU好很多,然而,随着计算个数的增多,CPU计算时间显著变长,而GPU的计算时间由于并行的优势,变化不大,在计算1000座建筑时,采用GPU计算的时间仅为CPU计算的1/40

1和表2给出了CPUGPU的计算结果误差的比较,从中可以看出,在0.005秒(第一个计算时间点)时,CPUGPU的计算结果是相同的,当到达40.000s(最后一个计算时间点)时,CPUGPU的误差为千分之一左右。这种累积误差是由于CPUGPU中对于浮点计算规则的差别导致的,在可接受的范围内,可以忽略。

1 CPU/GPU计算结果对比(0.005s

Table 1 Results of computation using CPU and GPU (0.005s)

位移

(10-8)

1

2

3

4

5

6

GPU

0.55296

0.55608

0.55608

0.55608

0.55608

0.55608

CPU

0.55296

0.55608

0.55608

0.55608

0.55608

0.55608

误差

0%

0%

0%

0%

0%

0%

2 CPU/GPU计算结果对比(40.000s

Table 2 Results of computation using CPU and GPU (40.000s)

位移

(10-2)

1

2

3

4

5

6

GPU

0.52284

0.70995

0.24754

0.19642

0.19633

0.19628

CPU

0.52272

0.70970

0.24729

0.19616

0.19607

0.19602

误差

0.02%

0.04%

0.10%

0.13%

0.13%

0.13%

5       实际应用

以某中型城市(约7000多座建筑)为例,采用本文方法对其建筑的地震响应进行了预测

(1)    将城市的GIS数据库内的建筑信息数据(包括建筑面积,高度,层数,坐标,结构类型等信息)转换为程序的数据输入文件,将结果读入程序中,共7449栋建筑物。

(2)    采用陆新征—曲哲滞回模型作为层间滞回模型,采用文献[9]的方法估算滞回模型参数。

(3)    进行时程计算,得到结构位移和倒塌数据。

(4)    采用层模型的方式对城市建筑物进行三维建模,结构位移映射到三维模型的坐标上,进行顶点和三角面片生成,得到动态展示结果。

       采用上述步骤,本文首先将整个城市的建筑物进行了模型化,得到的效果如图7, 8, 9所示。

  图7 静态场景整体平面图

图8 静态场景整体斜视图

7 静态场景整体平面图

Figure 7 General plan of static scene

8 静态场景整体斜视图

Figure 8 General oblique view of static scene

图9 静态场景局部斜视图

9 静态场景局部斜视图

Figure 9 Partial oblique view of static scene

       模型共7449栋建筑物,172064个结点,314220个三角形面片。静态模型效率很好,能够达到满帧率(每秒60帧),可以实时游览。

之后,采用本文建议方法完成建筑群的弹塑性模拟,地震波选用Northridge地震动记录,所有7449栋建筑物在前述测试所用的GPU平台上完成40s动力弹塑性计算共耗时216秒,其中输出结果用时为194秒,动力弹塑性计算用时仅为22秒,满足高效廉价震害预测的要求。预测得到的建筑震害分布如图10所示。红色代表可能发生倒塌的建筑物,灰色代表没有倒塌的建筑物。如果引入倒塌特效算法,移除发生倒塌的楼层,则可得到倒塌效果模拟如图11所示,可以较真实的模拟震害场景。

图10 动态场景局部斜视图(位移放大10倍)

10 动态场景局部斜视图(位移放大10倍)

Figure 10 Partial oblique view of dynamic scene (the displacements were enlarged to 10 times)

图11 倒塌模拟效果

11 倒塌模拟效果

Figure 11 The simulation of collapse

6       结论

本文建立了GPU-CPU协同建筑群震害模拟的架构,编制了计算程序,实现了基于GPU技术的高性能大区域城市震害模拟。结果表明,采用GPU的计算效率同比可以达到同价位CPU40多倍,满足低成本高性能计算的要求。并通过对某中型城市进行实际震害模拟,得到了较理想的震害模拟效果,证明了采用CPU-GPU协同进行震害模拟是具有可操作性的。未来可以进一步提高其计算效率和通用性,优化计算模型,并提升渲染和场景展示效果,最终实现高效、低成本的城市大区域震害模拟。

致谢:

本文感谢国家自然科学基金项目(编号:51178249),城市与工程安全减灾教育部重点实验室开放基金项目、北京市重点实验室开放基金项目(编号:EESR2010-03)和清华大学自主科研项目(No. 2010Z01001)的资助。

参考文献

[1]        乔亚玲, 闫维明. 建筑结构震害预测方法研究评述[J]. 工业建筑, 2005, 35(6): 1-6.

Qiao Yaling, Yan Weiming. Review of predictive method of seismic damages to buildings[J]. Industrial Construction, 2005, 35(6): 1-6.

[2]        胡宝生, 徐祥文. 展望建筑物震害预测的发展方向[J]. 世界地震工程, 1995, (03): 33-38.

Hu Baosheng, Xu Xiangwen. Look forward to developmental direction of predicting earthquake damage to buildings[J]. World Information On Earthquake Engineering, 1995, (03): 33-38.

[3]        Hori M, Ichimura T. Current state of integrated earthquake simulation for earthquake hazard and disaster[J]. Journal of Seismology, 2008, (2): 307~321.

[4]        陈序平. 基于GIS CADVR技术的城市地震仿真系统[D]. 北京: 清华大学, 2007.

Chen Xuping. An urban earthquake simulation system based on GIS CAD and VR technology[D]. Beijing: Tsinghua University, 2007.

[5]        李波, 赵华成, 张敏芳. CUDA高性能计算并行编程[J]. 微型电脑应用, 2009, (09): 55-57+64+69.

Li Bo, Zhao Huacheng, Zhang Minfang. Parallel Programming For High-Performance Computing on CUDA[J]. Microcomputer Applications, 2009, (09): 55-57+64+69.

[6]        吴恩华, 柳有权. 基于图形处理器(GPU)的通用计算[J]. 计算机辅助设计与图形学学报, 2004, 16(5): 601-612.

Wu Enhua, Liu Youquan. General Purpose Computation on GPU[J]. Journal of Computer Aided Design & Computer Graphics, 2004, 16(5): 601-612.

[7]        张朝晖, 刘俊起, 徐勤建. GPU并行计算技术分析与应用[J]. 信息技术, 2009, (11): 86-89.

Zhang Chaohui, Liu Junqi, Xu Qinjian. Analysis and application of the GPU parallel computing technology [J]. Information Technology, 2009, (11): 86-89.

[8]        陆新征, 叶列平, 缪志伟, . 建筑抗震弹塑性分析——原理、模型与在ABAQUSMSC.MARCSAP2000上的实践[M]. 北京: 中国建筑工业出版社, 2009: 18-25.

Lu Xinzheng, Ye Lieping, Liao Zhiwei, et al. Elasto-plastic analysis of buildings against earthquake—theory, model and implementation on ABAQUS, MARC AND SAP2000. [M]. Beijing: China Architecture & Building Press, 2009: 18-25.

[9]        Xu F, Chen XP, Ren AZ, et al. Earthquake disaster simulation for an urban area, with GIS, CAD, FEA and VR integration [J]. Tsinghua Science and Technology, 2008, (S1): 311-316.  

[10]     Chopra, A K. Dynamics of Structures : theory and applications to earthquake engineering [M], New Jersey: Prentice-Hall, 2001: 171-174

[11]     NVIDIA, NVIDIA CUDA Programming Guide[EB/OL]. http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf 2011-11-18



[*] 基金项目:国家自然科学基金项目(编号:51178249),城市与工程安全减灾教育部重点实验室开放基金项目、北京市重点实验室开放基金项目(编号:EESR2010-03)和清华大学自主科研项目(No. 2010Z01001

个人信息
研究工作
实际工程
论文工作
教学工作
资料下载
专题
其他

 

我们的实验室

抗倒塌专业委员会
分享家:Addthis中文版