用CUDA计算“滚球法”防雷联合保护范围在石油化工装置中的应用

2019-01-03 06:13江伟彬王亭亭
石油化工自动化 2018年6期
关键词:滚球避雷线球体

江伟彬,王亭亭

(中兵勘察设计研究院有限公司,北京 100053)

1 通用并行计算架构简介

1.1 CPU和GPU的差异

CPU和GPU架构差异很大,CPU功能模块很多,能适应复杂运算环境;GPU构成则相对简单,目前流处理器和显存控制器占据了绝大部分晶体管。CPU中大部分晶体管主要用于构建控制电路(比如分支预测等)和Cache,只有少部分的晶体管用于完成实际的运算工作。

CPU虽然有多核,但一般也就几个,每个核都有足够大的缓存和足够多的数字及逻辑运算单元,需要很强的通用性来处理各种不同的数据类型,同时逻辑判断又会引入大量的分支跳转和中断的处理,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件。

GPU的核数远超CPU,被称为众核,如Tesla P100有3 584个核。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单,GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

1.2 CUDA概念

通用并行计算架构CUDA(compute unified device architecture)使GPU能够解决复杂的计算问题,是显卡厂商NVIDIA推出的一种计算架构,它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎,开发人员可以使用C语言为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。

近年来,随着GPU可编程能力、并行处理能力以及应用范围的不断提升和扩展,GPU已发展成为一种高度并行化、多线程、多核的处理器。GPU在并行数据运算上具有强大的计算能力,特别适合作运算符相同而运算数据不同的运算。CUDA对内存的操作与一般的C程序基本相同,显存操作则需要调用CUDA API中的存储器管理函数。一旦确定好程序中的并行部分,就可以将该部分计算交给GPU。利用GPU的并行处理能力,以CPU加GPU混合加速为特征的异构并行计算系统将会成为未来高性能计算的主流。

1.3 CUDA并行计算原理

并行编程的原理是: 将大问题划分为一些小问题,再把这些小问题交给相应的处理单元并行处理。在CUDA中,该思想在问题划分模型中以两个层次体现。

1) 一个问题可以首先被粗粒度地划分为若干子问题,CUDA使用块(Block)单元处理子问题,每个块都由一些CUDA线程组成,线程是CUDA中最小的处理单元。

2) 将这些较小的子问题进一步划分为若干更小的细粒度的问题,使用线程处理细粒度的问题。

对于1个普通的NVIDIA GPU,CUDA线程数目通常能达到数千个甚至更多,因而问题划分模型可成倍地提升计算机的运算性能。GPU由多个流水处理器构成,流水处理器以Block为基本调度单元,对于流水处理器较多的GPU,它一次可以处理的Block更多,从而运算速度更快,时间更短。该原理如图1所示,由图1可知,1个多线程程序被划分为多个线程块,块之间彼此无关,均独立执行,因而核心越多执行效率越高。

图1 CUDA并行计算原理示意

2 “滚球法”的原理

“滚球法”是国际电工委员会(IEC)推荐的接闪器保护范围计算方法之一。GB 50057—2010[1]把“滚球法”强制作为计算避雷保护范围的方法。“滚球法”基于雷闪电气几何数学模型,设计原理是以击距为半径R的1个球体,沿需要防直击雷的建构筑物部位各个方向滚动,当球体只触及接闪器,包括被用作接闪器的金属物,或只触及接闪器和地面,包括与大地接触并能承受雷击的金属物,这时球体的弧与建筑物之间不触及的范围,便是接闪器的防雷范围。“滚球法”计算接闪器防雷保护范围原理如图2所示,确定接闪器保护范围的要求见表1所列。

图2 “滚球法”计算防雷保护范围原理示意

表1 “滚球法”确定接闪器保护范围的要求 m

3 详细计算方法

3.1 建立接闪器立方格域

建立包围所有接闪器的立方格域,如图3所示。

图3 接闪器的立方格域

假定立方格域在x,y,z三个方向上所包含的立方格的数目分布是Nx,Ny,Nz,则整个立方格域所包含的立方格总数是

N=NxNyNz

(1)

立方格域可以表示为以下形式:

X: (xmin,xmax,Nx)
Y: (ymin,ymax,Ny)
Z: (zmin,zmax,Nz)

(2)

对于给定坐标为(x,y,z)的节点,其在立方格域的三个方向的编号:

Ix=Nx(x-xmin)/(xmax-xmin)
Iy=Ny(y-ymin)/(ymax-ymin)
Iz=Nz(z-zmin)/(zmax-zmin)

(3)

对立方格的每个节点进行编号Ic:

Ic=Ix+IyNy+IzNxNy

(4)

可以控制立方格的细化次数,在精度与效率之间求得某种程度的平衡。

3.2 接闪器模型的建立

接闪杆定义为垂直的直线,包含2个float3类型。

避雷线定义为直线,包含2个float3类型,有弧度的避雷线可以通过多个直线模拟。

避雷网可以通过一个或者多个避雷线模拟。所有的接闪器的节点数据放置在device_vector中。

3.3 模拟滚球计算

立方格域数据中的每一点模拟滚球的滚动轨迹,如果球体和接闪器发生接触,则计算下一点;如果未发生接触,球体内的立方格域数据标志为1,如此循环,直至计算完所有的点。保留立方格域数据标志为0的点,通过Delaunay法构造平滑曲面,该曲面就是接闪器的联合保护范围。模拟滚球的算法流程如图4所示,最终接闪杆的计算模拟效果如图5所示。

图4 模拟滚球算法流程示意

图5 接闪杆计算结果模拟示意

4 结束语

该计算方法是利用CUDA强大的计算功能,模拟半径R的1个球体,沿需要防直击雷的建构筑物部位各个方向滚动。把不触及的范围通过Dclaunay法构造平滑曲面,得到接闪器的防雷范围,是真正根据“滚球法”原理的计算方法。在复杂布置的接闪杆、避雷线、避雷网情况下,也能准确地计算出防雷范围,是一个高通用性、高准确性、计算高速性的计算方法。

猜你喜欢
滚球避雷线球体
滚球
越来越圆的足球
计算机生成均值随机点推理三、四维球体公式和表面积公式
降重20%以内10kV绝缘架空线路避雷线的保护角选择
高速铁路接触网避雷线高度设计方法研究
亲水与超疏水高温球体入水空泡实验研究
10 kV配电线路架空避雷线结构应力分析
膜态沸腾球体水下运动减阻特性
巾边滚球
法式滚球,穿着高跟鞋去运动社交!