中国地质大学(武汉)高性能计算HPC课程报告文库汇编

上传人:我** 文档编号:113645998 上传时间:2019-11-09 格式:DOC 页数:8 大小:33.30KB
返回 下载 相关 举报
中国地质大学(武汉)高性能计算HPC课程报告文库汇编_第1页
第1页 / 共8页
中国地质大学(武汉)高性能计算HPC课程报告文库汇编_第2页
第2页 / 共8页
中国地质大学(武汉)高性能计算HPC课程报告文库汇编_第3页
第3页 / 共8页
中国地质大学(武汉)高性能计算HPC课程报告文库汇编_第4页
第4页 / 共8页
中国地质大学(武汉)高性能计算HPC课程报告文库汇编_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《中国地质大学(武汉)高性能计算HPC课程报告文库汇编》由会员分享,可在线阅读,更多相关《中国地质大学(武汉)高性能计算HPC课程报告文库汇编(8页珍藏版)》请在金锄头文库上搜索。

1、中 国 地 质 大 学研究生课程论文封面课程名称 高性能计算 教师姓名 研究生姓名 研究生学号 研究生专业 软件工程 所在院系 信息工程学院 类别: A.博士 B.硕士 C.进修生 日期: 2016 年 1 月 9 日 评 语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。高性能计算在三维地质建模上的应用1、 应用背景随着地学信息化的发展,数学地质正向“数字地质”发展。三维地质建模软件将是“数字地质”的精髓与核心。三维地质建模是指采用适当的数据结

2、构,在计算机中建立能反映地质构造的形态和各要素之间关系以及地质体物理、化学属性空间分布等地质特征的数学模型。相比传统的平面图、剖面图,三维地质模型有显示直观、空间分析功能强大、对原始数据可以直接检查等特点。由于三维地质建模涉及钻孔数据、剖面数据、三维地震资料等多种数据源,并且地质建模从二维转向三维数据量急剧增大,涉及较为复杂的计算过程,单台电脑的计算能力已经逐渐满足不了相应计算与存储的要求。三维地质建模上的应用主要为通过各种地质数据源反演计算出易于分析和表达的三维GIS规则体元模型。本文对当前主流高性能计算技术进行了总结,并对比了几种可选的技术方案。高性能计算主要解决以下几个方面的问题:1)

3、大规模矩阵的运算。由于获取地质源数据量的增大,地质数据进行反演计算的过程中会出现上万阶甚至更大的矩阵,这些矩阵的运算需要较长的时间甚至直接超过单台主机的内存容量。2) 计算代码并行。在生成三维的规则体元数据时,需要对数据进行一定的插值,计算各个体元的属性值。地质体生成的三维体元数据对精度的要求较高,导致大量耗时的计算。3) 存储管理。反演计算后模型采用三维体元数据的形式进行存储,需要占用大量的存储空间,合理进行分布式的存储有利于后期的分析,并增加数据读取的速度。2、 可采用技术1. MPIMPI(Message Passing Interfaee)是一个消息传递接口的标准,MPI不是一门编程语

4、言,而是一个库,可以被C、C+、FORTRAN等编程语言调用。从语法上说,它遵守所有语言对函数的调用过程,和一般的函数没有什么区别。通过MPI可以实现多个主机之间进程的通信,达到集群计算的目的。MPI具有良好的移植性和可扩展性、完善的异步通信机制、众多厂商的支持并且易于使用。在linux环境下,常用的MPI库为MPICH和OpenMPI,低版本可以在windows上使用。最新的MPI 3.1标准在2015年6月发布,不支持容错性,预计两年后发布的MPI 4.0 支持新的容错性。在windows环境下,推荐使用微软为高性能计算开发的MS-MPI。2015年11月发布当前最新的7.0版本,相比之下

5、MPICH与OpenMPI都在2011年停止了对windows的更新,只能通过安装linux虚拟运行环境使用。微软专为windows开发了一套高性能集群计算的库Microsoft HPC Pack,通过HPC Pack可以使用一台装有windows server系统的电脑做为主节点进行MPI任务的管理,其余电脑作为计算节点进行计算。2. CUDA(Compute Unified Device Architecture)CUDA是显卡厂商NVIDIA推出的并行计算平台和编程模型,专为NVIDIA显卡进行计算加速而设计,通过更为简单的模型提高了显卡并行运算的易用性。在高性能计算领域,GPU的计算能

6、力远高于CPU。最新的NVIDIA专用于科学计算的显卡TESLA K80的双精度性能将近3TeraFLOPS,内存总带宽高达480GB/s。CUDA Toolkit为C+程序员开发GPU程序提供了全面的开发环境,包含NVIDIA GPUs编译器,数学库,调试优化工具等。地质建模中的数学计算可以调用其中的数学库进行加速:cuBLAS(Basic Linear Algebra Subroutines),是标准的BLAS库的完整实现,可以进行基本线性代数的运算,相比最新的MKL库有6倍至17倍的加速。cuSPARSE(Sparse Matrix Routines)包含一系列对于稀疏矩阵的线性代数运算

7、,通过显卡的加速可以比最新的MKL库速度上快8倍。(数据来自https:/ Apache HadoopHadoop是一个开发和运行处理大规模数据的软件平台,Apache基金会下用Java语言编写的顶级项目之一,实现了在大量计算机组成的集群下对海量数据的分布式计算,并且一度成为大数据处理的代名词。Hadoop是Google提出的MapReduce框架与Google File System(GFS)的开源实现,主要由HDFS、MapReduce、YARN以及一系列的生态系统组成。HDFS是Hadoop对于分布式文件管理的系统,通过文件备份、虚拟化等方式实现了良好的可扩展性、容错性和虚拟化,用户可以

8、无需关心细节直接当做一般的文件系统进行使用。MapReduce框架是Hadoop的离线计算框架,可以在集群中对海量数据进行并发处理,由于在计算过程中需要将中间结果保存到磁盘并且不能灵活进行迭代处理,这一框架有被Hadoop Tez与Spark框架取代的趋势。YARN是Hadoop的资源管理框架,可以对大规模集群的计算资源进行管理,Hadoop的生态系统中的其它库都在YARN的框架上进行调度。4. Apache SparkApache Spark是云计算领域对于大数据处理的著名开源引擎。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache基金会的开源项目之一。S

9、park提供了一个全面、统一的框架,用于管理各种有不同性质的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。速度上,相比先前的Hadoop MapReduce框架,Spark可以将集群中的应用在内存中的运行速度提升100倍,可以将应用在硬盘上的运行速度提高10倍。易用性上,Spark提供了Scala、Java、Python、R四种语言的接口,并有80种以上的较高抽象操作,可以直接使用Scala、Python、R语言的命令行进行调用。Spark还提供了一系列库,包括Spark SQL用于数据查询、MLib用于机器学习、GraphX图标数据处理、Spark Streaming流式数据处

10、理。运行环境上,Spark可以运行于Mesos、Hadoop YARN、独立集群,并可以从HBase、HDFS、Cassandra、Hive等库中获取数据。5. MesosApache Mesos是一个集群管理器,将CPU、内存、磁盘存储以及其他的计算资源从物理主机或虚拟主机中抽象出来进行管理,提供了容错机制和弹性分布式系统机制,使Mesos易于使用并且高效运行。 Mesos使用类似Linux内核的原则进行构建,但不在同一个抽象层次。Mesos的内核运行在每一台主机上,并向运行于其上的应用(如Spark、Hadoop、Kafka、Storm、MPI等)提供整个集群资源管理和调度的API。Mes

11、os具有这些特点:可以弹性管理10000个结点,具有良好的容错性,支持Docker容器,各个任务之间相互独立,多种资源(CPU、GPU、内存、端口等)的调度管理,提供Java、C+、Python接口用于编写新的应用框架,提供了webUI可以在浏览器上查看任务运行状态与集群状态,相对YARN 可以对资源进行更细粒度的管理。Mesosphere公司为Mesos库提供维护与技术支持,并在Mesos的基础上进行开发,简化了大数据开源库的部署。Mesos被Mesosphere公司定位为大数据集群的操作系统,在部署好的Mesos集群上很容易进行其他开源库的部署,现在已经实现了16分钟搭建一个Spark集群

12、,相对于以往的集群搭建极大的减少了时间与技术成本。3、 可选方案1. 单独使用Spark或MPI在计算过程单独使用CPU集群可以处理时,Spark和MPI都已经在实践中得到了很好的应用,在环境部署和程序编写、运行上都已经有了很多的参考资料。对于矩阵运算,Spark可以采用MLib机器学习库中的分布式矩阵运算程序进行计算,MPI可以采用Intel开发的MKL(Math Kernel Library)进行计算,MKL库中对于分布式矩阵运算、共享内存的多CPU矩阵运算、单CPU的矩阵运算都能高效率的实现。但对于计算密集型的程序,当前CPU的计算能力远低于GPU,可能存在一块GPU显卡的计算能力高于几

13、台电脑组成的CPU集群的情况。2. MPI结合CUDAMPI可以作为通信工具进行集群上各台电脑之间的通信,通过MPI可以在集群中发送和接收各种类型的数据。由于MPI与CUDA都提供C+语言的接口,具有较好的兼容性,使用MPI结合CUDA不容易产生多种语言调用存在的问题,并且有非常高的效率。MPI的发展在近几年明显不如云计算技术,其劣势主要在于集群管理复杂、容错性差、可扩展性小等方面。MPI与云计算的对比如下表:3. Spark结合CUDA由于CUDA在一般并行程序的设计上提供了包括Java语言在内的多种编程语言接口,但出于效率考虑,CUDA工具包中数学库只提供了C+接口,而Spark开源库采用

14、Scala语言开发,没有提供C+接口。因此要在Spark框架上使用GPU的计算能力,需要使用其他的方式,目前可以考虑的方式有:1) 使用JCUDA(CUDA的Java接口)。JCUDA可以直接进行并行程序的开发,对于矩阵运算使用Spark下MLib机器学习库中的矩阵运算函数,对函数通过JCUDA代码进行改进,优化成使用GPU运算的代码函数。2) 使用JNI技术。JNI技术是Java语言为了提高自身运行效率直接调用C+本地库的技术,使用JNI可以弥补Java相对C+在效率上的劣势,直接调用C+函数。通过JNI技术可以在Spark库的数据处理过程中调用CUDA中cuBLAS的矩阵运算库,可以很好的

15、利用GPU的计算能力,但在Java内存与C+内存相互调用时可能存在一定的问题。3) 使用Socket通信。对Spark框架的程序与CUDA的程序之间建立socket单机通信,需要处理的计算通过socket进行发送。这种方式避免了两种语言内存之间调用的问题,但相对于前两种方式效率较低。4. Mesos混合集群Mesos作为一个大数据框架的底层库,可以在搭建好自身集群后更简单的在其上配置多种开源库,开源库之间共享集群的资源。因此可以使用Mesos作为底层库,在其上搭建MPI与Spark的混合集群,还可以添加Hadoop的HDFS开源库进行文件分布式存储的管理。混合集群可以在同一个集群中同时使用多个框架,利用各个框架在数据处理上的优点,避免了配置和资源调度上的问题。在进行地质建模的过程中可以采用MPI进行计算密集型过程的处理,用Spark框架进行存储上的管理与数据密集型过程的处理。4、 实验与总结方案4的优势较为明显,但是环境配置较为困难。搭建Mesos集群可以直接采用Mesosphere公司提供的安装包(Ubuntu 系统下使用apt-get进行安装),可以避免在编译和配置上的问题,安装好后只要稍作修改即可直接使用。Spark在Meso

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号