基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法制造技术

技术编号:13589535 阅读:326 留言:0更新日期:2016-08-25 16:49
本发明专利技术提出了一种使用CUDA并行加速提取海洋涡旋和Argo浮标相交数据集的算法。使用CPU/GPU异构,优化数据格式,减少数据传输量,使其缩短CPU和GPU之间拷贝时间;结合海洋涡旋的数据特点——不同涡旋之间一般互不影响,将每一个涡旋视为一个单位,用一个线程块表示,进而将一个涡旋一天的数据用一个线程表示,优化线程分配;在内核函数中遍历Argo浮标的点集数据,将涡旋数据和Argo浮标数据的儒略日进行匹配,然后应用平面包围盒算法和PNPoly算法计算出在涡旋边界范围内的Argo浮标数据;在数据存储过程中,优化涡旋数据组织形式,将所有信息整合到一个数据集中。分配线程的方式具有较强的逻辑性,在内核函数的计算过程中对算法进行了优化,大幅提高了数据集的生成效率。

【技术实现步骤摘要】

该专利技术涉及海洋涡旋数据结构分析和涡旋浮标交集数据提取技术,具体来说是实现了GPU并行计算架构CUDA加速提取海洋涡旋和Argo浮标相交数据集的算法。
技术介绍
目前,分析中尺度涡旋的数据主要来自遥感反演数据。根据遥感数据,人们给中尺度涡旋的定义为中尺度涡旋(又称天气式海洋涡旋),是指海洋中直径约为100-300千米的涡旋。它通常分为两种:气旋式涡旋(在北半球为逆时针旋转),反气旋式涡旋(在北半球为顺时针旋转)。中尺度涡旋在海洋动力学以及盐分、能量的输送和其它生物、化学过程中都起着非常重要的作用,进而影响着该海域大洋环流,温度、盐度以及叶绿素等的垂直与水平分布,甚至影响地形地貌的改变。本专利技术将Argo浮标的温盐数据和轨迹数据与涡旋数据相结合得到的数据集对于研究大洋中的中尺度涡的轨迹和三维结构特征(温、盐和流)具有重大意义。根据遥感反演数据估计全球大洋中,每天约有上万个中尺度涡旋。借助遥感手段进行筛选,目前全球大洋中生命周期大于15天的中尺度涡旋的数量估计约为每天六多千个,一年全球大洋中中尺度涡旋的数量为50000多个,其存活平均时间为7个周左右。另外,Argo计划在全球大洋中每隔300千米布放一个卫星跟踪浮标,总计为3000个,组成一个庞大的Argo全球海洋观测网。3000个浮标中可用浮标至少要维持在2000个以上,每个Argo浮标每次发送15条信息,发送的时间间隔为一天、四天、十天不等。一年一个Argo浮标总共发送约2000条数据。海洋涡旋数据集中记录了涡心的经纬度坐标、儒略日和涡旋的边界数组等信息,Argo浮标数据集中记录了浮标的元数据、技术数据、轨迹数据、剖面数据,本专利技术中用到的主要数据包括经纬度位置、儒略日(Argo浮标发出数据的日期)、浮标周期数和浮标号等信息,数据量庞大。海洋涡旋数据的计算一般多以MATLAB为计算工具来生成数据集。按照全球每年56000多个涡旋来计算,使用MATLAB已经不能够以较高的效率来完成这项工作,配置低的计算机在计算过程中会因为内存不足停止计算,配置高的计算机则需要几天的时间完成一年涡旋和Argo浮标数据交集的提取工作。每次数据的调整均要耗费很大的时间成本。为了全面分析中尺度涡旋的分布情况、运动轨迹和内部结构特征,全球范围无疑是最理想的范围,但涡旋和Argo浮标的总数据量级达到千亿,CPU已经不能满足我们的需要。GPU并行计算擅长做中尺度涡旋和Argo浮标数据交集提取等计算公式不复杂但数据量大的数值计算。我们需要一种能够快速进行并行计算的工具——CUDA。CUDA 编程模型将CPU作为主机(host),GPU作为协处理器或者设备(device),在一个系统中可以存在一个主机和若干个设备。能够使用GPU计算的程序必须具有以下特点:需要处理的数据量比较大,数据以数组或矩阵形式有序存储,并且对这些数据要进行的处理方式基本相同,各个数据之间的依赖性或者说耦合很小。本专利技术所研究的处理海洋涡旋和Argo浮标相交数据集算法具备以上所有要求,适合用CUDA进行加速。在CUDA模型中,CPU与GPU协同工作,各司其职。CPU/GPU异构并行计算在处理过程中,CPU负责进行逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPU、GPU各自拥有相互独立的存储器地址空间:主机端的内存和设备端的显存。为了满足计算的需要,CPU的设计目标是使执行单元能够以很低的延迟获得数据和指令,因此采用了复杂的控制逻辑和分支预测,以及大量的缓存来提高执行效率;而GPU必须在有限的面积上实现很强的计算能力和很高的存储器带宽,因此需要大量执行单元来运行更多相对简单的线程,在当前线程等待数据时就切换到另一个处于就绪状态等待计算的线程。简而言之,CPU对延迟将更敏感,而GPU则侧重于提高整体的数据吞吐量。CPU和GPU设计目标的不同决定了两者在架构和性能上的巨大差异,CPU、GPU异构模式就能充分调用两方面的优势,使其共同提高数据计算能力。本文将对CUDA并行计算技术的应用进行研究,重点挖掘其在处理中尺度涡旋和Argo浮标相交数据集中的优势。
技术实现思路
本专利技术可以加速提取海洋涡旋和Argo浮标相交数据集。在读取涡旋数据和Argo浮标数据后对数据的组织结构进行优化,使其适合CUDA的线程分配。CPU与GPU之间的二维指针数组的传输和内存分配使用了二维指针拷贝。为了减少数据传输的时间,缓解显存的压力,CPU必须尽可能少的向GPU中传递数据,本专利技术只拷贝需要在GPU中进行运算的值。在内核函数中计算海洋涡旋和Argo浮标相交数据集时优化算法,以提高计算效率。得益于合理的线程分配,只需要记录匹配成功的涡旋和Argo浮标数据的指针地址,将记录传回CPU中后,查找相应指针的值,最后将所有涡旋数据集整理汇总到文件中。为了实现上述目标,主要技术方案包括:1、编辑已有的涡旋数据和Argo浮标数据集的组织形式。读取并处理已有的涡旋数据和Argo浮标数据,将其存储成二维结构体指针数组。首先,对海洋涡旋数据进行分析,将一条涡旋的所有属性进行排列,并使用标识符标识每一条涡旋,还要记录该涡旋的轨迹,以便了解其运动规律。在处理涡旋数据集时,应注意需在CUDA的环境中进行处理,在后期可以方便与提取涡旋浮标交集数据的过程进行串行计算。处理Argo浮标数据集时,不以Argo浮标的浮标号数组划分,而是以Argo浮标发出数据的日期(儒略日)进行数组的划分。涡旋和浮标数据先通过儒略日进行匹配筛选适合的Argo浮标比在遍历每条浮标数据过程中匹配其儒略日在效率上可以提高上千倍。2、合理分配GPU内存。为CUDA的host端和device端分配内存,并将需要计算的数值从host端传入device端。在CUDA 建构下,内存分为两大类:系统内存和设备内存。由于GPU对设备内存的读写速度大于对系统内存的读写速度,因此在调用用于计算的的核函数之前,不仅需要为数据划分系统内存,还要在设备内存上划分相应的内存来供线程进行读写操作。在分配内存和内存间数据传输时,需要进行二维指针拷贝,拷贝分为两步:1)将主机端矩阵元素拷贝到缓存中;2)将设备端矩阵行向量指针指向缓存中各行向量指针分配的空间。在CUDA中对涡旋数据集进行线程分配, CUDA线程分两个层次,网格Grid和块Block,一个网格包含多个块,一个块内部嵌套包含多个线程。为了减少运行时间,我们需要尽可能少的在CPU与GPU之间进行传值。所以,存储涡旋数据和Argo浮标数据时需要较强的逻辑性,我们考虑将每一个涡旋划分成一个线程块,每个涡旋每天的数据划分成一个线程。在内核函数中使用计数器和原子操作,当多个线程同时访问全局存储器的同一位置时,保证每个线程能够实现对共享可写数据的互斥操作;在一个操作完成之前,其他任何线程都无法访问此地址,所有的线程一旦找到匹配的涡旋和Argo浮标数据时,都要排队进行计数并记录涡旋和Argo浮标的。3、优化提取涡旋与Argo浮标数据交集算法。计算涡旋和Argo浮标数据交集,得到全球海洋中尺度涡旋最大似转流速度内的Argo浮标数据,计算方法是逐个匹配Argo浮标位置与涡旋边界数组的关系,首先使用平面包围盒算法检测Argo浮标点是否在涡旋外包围矩形内,然后根本文档来自技高网
...

【技术保护点】
基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法,其特征在于,其所述结合海洋涡旋和Argo浮标的数据特征优化GPU并行计算技术的方法包括以下步骤:(1)在CPU端对涡旋数据和Argo浮标数据进行整合,处理成适合进行线程分配的形式;(2)在GPU端分配计算资源,在CUDA平台上分配线程时考虑海洋涡旋的数据组织形式;(3)在内核函数中,对涡旋数据集和Argo浮标数据集进行匹配计算,并通过原子操作和计数器记录相交的海洋涡旋和Argo浮标数据,减少CPU与GPU之间的数据传输量;(4)将匹配成功的数据集拷贝到CPU端,并优化存储形式。

【技术特征摘要】
1.基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法,其特征在于,其所述结合海洋涡旋和Argo浮标的数据特征优化GPU并行计算技术的方法包括以下步骤:(1)在CPU端对涡旋数据和Argo浮标数据进行整合,处理成适合进行线程分配的形式;(2)在GPU端分配计算资源,在CUDA平台上分配线程时考虑海洋涡旋的数据组织形式;(3)在内核函数中,对涡旋数据集和Argo浮标数据集进行匹配计算,并通过原子操作和计数器记录相交的海洋涡旋和Argo浮标数据,减少CPU与GPU之间的数据传输量;(4)将匹配成功的数据集拷贝到CPU端,并优化存储形式。2.根据权利要求1所述的基于CUDA的海洋涡旋和Argo浮标相交数据集快速提取算法,其特征在于,所述步骤(2)中,涡旋信息在读取时进行筛选和重新排列,存储为二维结构体指针;根据涡旋的涡心和儒略日信息分组涡旋的方式在线程分配时就能发挥其逻辑上的优势;传值时,将涡旋的经度、纬度、儒略日、半径,Argo浮标的经度、纬度、儒略日,以及一个用来记录结果的空指针从CPU端拷贝到GPU端,其他大量的属性信息保存在CPU端的数组中,不参与拷贝传值。3.根据权利要求1所述的基于CUDA的海洋涡旋和Argo...

【专利技术属性】
技术研发人员:马纯永陈戈张玉李硕盖周恩高佳佳王维娜
申请(专利权)人:中国海洋大学
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1