Felac并行程序架构.

Slides:



Advertisements
Similar presentations
C enter of C omputational C hemistry 并行计算机与并行计算 张鑫 理论与计算化学国际合作研究中心 分子反应动力学国家重点实验室.
Advertisements

第一章 多核概述 使用多核了吗? 摩尔定律——芯片的晶体管数量每一年半左右增长一倍。 处理器性能不断提高主要基于两个原因:
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
赵永华 中科院计算机网络信息中心 超级计算中心
实用操作系统概念 张惠娟 副教授 1.
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
如何使用CiteSpace分析Derwent专利数据
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
OpenMP简介和开发教程 广州创龙电子科技有限公司
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
第二讲 搭建Java Web开发环境 主讲人:孙娜
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
并行算法实践 上篇 并行程序设计导论.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
逆向工程-汇编语言
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
数据挖掘工具性能比较.
计算机系统结构 第一章 基本概念 第二章 指令系统 第三章 存储系统 第四章 输入输出系统** 第五章 标量处理机 第六章 向量处理机
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
作业调度系统常用命令.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
编程作业3:网页正文抽取 (10分).
录制回放工具使用说明 鲁晓宇
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
DQMClientDim.cxx及双光子练习
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
Google的云计算 分布式锁服务Chubby.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 如何调试驱动程序? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
Presentation transcript:

Felac并行程序架构

目录 并行环境 Felac并行程序架构 Felac并行计算后处理分析 Felac并行程序架构与Pfepg对比 Felac并行计算超大规模问题 硬件环境 软件环境 Felac并行程序架构 主进程程序架构 从进程程序架构 Felac并行计算后处理分析 Felac并行程序架构与Pfepg对比 Felac并行计算超大规模问题

并行环境 硬件环境 并行计算机体系结构 对称多处理机(SMP) 每个处理器可等同地访问共享存储器、I/O设备和操作系统服务; 优点:可开拓较高的并行度,使用简单,维护方便; 缺点:因为共享存储,所以限制了系统中处理器的数目(一般少于64个),同时总线和交叉开关一旦作成也难于扩展; 并行编程方式:通常采用OpenMP,也可使用消息传递(MPI/PVM)及HPF 代表机型:SGI Power Challenge、DEC Alpha 服务器 8400、曙光1号等;

大规模并行处理机(MPP) 对称多处理机(SMP) MPP一般是指超大型计算机系统,处理节点采用商品微处理器;系统中有物理上的分布存储器;采用高通信带宽和低延迟的互联网络;能扩放至成百上千乃至上万个处理器;是一种异步的MIMD机器,程序由多个进程组成,每个都有其私有的地址空间,进程间采用消息传递相互作用。 MPP主要用于科学计算、工程模拟和信号处理等以计算为主的领域。 代表机型:Intel Paragon IBM SP2、Intel TFLOPS、曙光-1000。 P/C ... 总线或交叉开关 SM

并行环境 分布共性存储多处理机(DSM) MB P/C ... LM NIC 定制网络 DSM在物理上有分布在各个节点中的局存,从而形成了一个共享的存储器。系统硬件和软件提供了一个单地址的编程空间。DSM比MPP来编程更加容易。 代表机型:Standford DASH、Cray T3D和SGI/Cray Origin 2000;

并行环境 软件环境 MB P/C ... LM DIR NIC 定制网络 Linux系统:RedHat, Debian, SuSE, Mandrake,… 编译系统:gcc/gfortran,icc,ifort… MPI系统:MPICH, LAM-MPI,MVAPICH,IMPI… 数学库:BLAS, LAPACH。。。。

Felac并行程序架构 包含文件有:并行 程序C代码、mat材 料参数文件、time0 时间控制文件、 Felac并行计算操作流程 Makefile和前处理数据 项目名.gid文件夹, 其包含文件为 项目名.dat ,partition.dat Felac并行计算操作流程 PC机生成串行程序 启动GId前处理 生成并行代码到目录下文件夹“项目名.mpi” 把生成的文件夹“项目名.mpi”上传到并行机 make编译链接 运行mpirun命令提交计算任务 把结果文件下载到PC机 打开GID后处理合并计算结果查看

Felac并行程序架构 主程序 主进程 从进程 gidpre spart mpartition spre sgetpart mgetpart mpi_m2s spre sgetpart 从进程 starta etesta ssolv utesta gidres 程序结束 Felac并行程序流程, 并行固有程序, 并行不同于串行程序, 与串行程序一致程序

Felac并行程序架构 主进程程序架构 void masterp(void) { gidpre(); mpartition(coor0,elema); mgetpart(coor0,dofa,ida,ubfa,elema,unoda,maplga,imaplga,inita); mpi_m2s(); } gidpre:与串行程序一致,读入前处理数据,包括:网格信息、单元信息、初值信息、边值信息等; 注意,与串行不同的是,在gidpre中的体单元类型数nbdetype,将会在mpartition分区程序中用到,所以在gidpre中生成该常数,并保证其正确性。当遇到问题是要查看是否生成的体单元类型数,与实际一致。

Felac并行程序架构 主进程程序架构 Mpartition:并行固有程序,主要功能是网格节点分区,并在此基础上构建逻辑单元区域、体单元分区及相邻进程信息; Mpartition程序分区过程 mgetpart:并行固有程序,主要功能是场信息分区,与场相关的信息按照mpartition分区的节点构建每个分区的边界单元、边值、初值信息和方程号信息,并发送到每个子进程;

Felac并行程序架构 主进程程序架构 mpi_m2s程序是协调并行求解器的程序,因为求解器时一个整个通信域的SIMD程序,所以主进程需要在从进程计算求解调用求解器程序时,相应的调用求解器接口程序以达到整个程序的同步性。

Felac并行程序架构 从进程程序架构 void slavep(int iblk) { spart(&coor0); spre(); sgetpart(coor0,dofa,&ida,&ubfa,&elema,unoda,&maplga,&imaplga,inita); starta(coor0,dofa,ida,elema,&matrixa,&fa); etesta(coor0,dofa,ida,ubfa,elema,matrixa,fa,1); mpi_sendms(1); ssolv(matrixa,fa,maplga,imaplga); utesta(coor0,dofa,ida,ubfa,fa); etestb(coor0,dofb,elema); gidres(coor0); mpi_sendms(-1); }

Felac并行程序架构 从进程程序架构 亮色部分为并行程序在串行程序的基础上添加的程序,各程序功能如下所述: spart:接收主进程Mpartition程序发送的坐标信息和相邻进程信息; spre:改程序是生成各场初值个数、自由度数; sgetpart:接收主进程Mgetpart发送的场信息,包括单元信息、初值信息、边值信息和方程号等; mpi_sendms:第一处在solv之前是发送求解器调用标志到主进程;第二处发送-1到主进程是发送程序结束标志到主进程; starta、etesta、utesta、etestb程序沿用串行程序; ssolv:求解器程序调用并行求解器,与串行程序不同; gidres:程序由于要输出整体节点编号对应的网格信息及结果信息,与串行程序有微小的差别;

Felac并行计算后处理分析 Felac并行程序后处理输出结果为各个分区结果:比如项目名为test,分3个分区计算,则生成的后处理结果为: test1.post.msh、test2.post.msh、test3.post.msh test1.post.res、test2.post.res、test3.post.res 通过GID软件的merge功能将三个分区结果合并到一起查看后处理结果,具体算例请查看文档“Felac并行计算流程说明文档.doc”。

Felac并行程序架构与Pfepg对比 Felac并行程序相当对于Pfepg来说,主要有一下几点: C语言的稳定性和可维护性比Fortran版本更好; 主程序的固定模式比Pfepg对于不同问题需要自动生成主程序流程更加简单; Felac版本加入小函数来控制非线性问题,比起pfepg的发送接收,更加简单通用; Felac版本基于点点通信比起Pfepg的主从通信来效率会更高; Felac版本省去了从进程到主进程发送结果信息的流程,时间上更少; Felac版本输出结果是各个分区结果,不再汇总到主进程; 并行计算流程更加简单,不再需要数据转换,前处理转换,后处理转换等一些列操作,源代码上传到服务器后,只需要编译运行即可;

Felac并行计算超大规模问题 未经超大规模测试 当进行大规模测试时,需要注意问题如下: 头文件中宏定义常数需要根据问题规模设置其大小maxt; maxt在并行中的分区程序中用到,开辟的是节点拓扑单元节点总数的规模,这个数的不好推算,尤其是在划分非结构化网格的时候会随着一个节点的共用单元数的增大而增大,所以需要用户去试探推算。 在inimpi程序中需要将数组msid的大小根据需要适当增大,当前仅适用于2048个进程的并行计算,当进程数达到更大时需要将此数组增大,同时修改messagetag的统计大小,避免出现messagetag重复的现象; 此外,当进行超大规模计算时,经常会出现通信死锁的现象,用户需要根据需要去修改通信模式为非阻碍通信,具体代码可参考交大大规模测试程序。对于大数据发送可以通过分块发送的模式,避免缓存拥堵现象的发生。