基于数据分组方法的数据仓库并行预计算和查询(二)论文

基于数据分组方法的数据仓库并行预计算和查询(二)论文

ID:10708341

大小:58.50 KB

页数:5页

时间:2018-07-07

基于数据分组方法的数据仓库并行预计算和查询(二)论文_第1页
基于数据分组方法的数据仓库并行预计算和查询(二)论文_第2页
基于数据分组方法的数据仓库并行预计算和查询(二)论文_第3页
基于数据分组方法的数据仓库并行预计算和查询(二)论文_第4页
基于数据分组方法的数据仓库并行预计算和查询(二)论文_第5页
资源描述:

《基于数据分组方法的数据仓库并行预计算和查询(二)论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于数据分组方法的数据仓库并行预计算和查询(二)论文MPI建立了一套有效的、可移植的、灵活的标准,并已经成为国际上应用最为广泛的并行程序设计平台。MPI可以使用于几乎所有的并行计算环境(共享存储和分布式存储、MPP、Cluster)和多个操作系统(UNIX、PI程序在启动时会自动创建两个通信器:MPI_M_PI_M_SELF。前者包含程序运行时的所有进程,后者则是由每个进程独自构成、仅包含自己的通信器。在MPI程序中,一个MPI进程由通信器和进程在该通信器中的进程号唯一标识,同一进程可以在不同通信器中有不同的进程号。进程可以

2、通过调用MPI_m_rank函数来获得本进程在某指定通信器中的进程号。3.3.1MPI的点对点通信通信器使得进程间可以通过消息或同步操作来完成通信。消息指在进程间进行的一次数据交换,在MPI中,消息一般包含以下一些内容:通信器、源进程、目的进程、消息标签和数据。MPI进程中使用得最频繁,最基本的一种通信模式就是一对进程相互之间进行通信,也就是一个进程发送消息,另一个进程接收消息,这种通信方式在MPI中被称作点对点通信(pointtopointmunication)。MPI有两大类型的点对点通信函数,一种称为阻塞式(block

3、ing),另一种则是非阻塞式(unblocking)。●阻塞式通信:阻塞式函数会等到通信操作实际完成,或者至少通信所涉及的数据已经被MPI环境处理好之后才会返回。如MPI_Send和MPI_Recv,分别是阻塞式的发送和接收函数。MPI_Send函数返回之后,表明消息已经发送完毕或者已经被MPI环境处理完毕,随后对于发送缓冲区的修改不会对已经发出的消息有所影响。而MPI_Recv函数返回后,表明消息已经接收完毕并且可以立即使用。●非阻塞式通信:非阻塞式函数在调用后会立即返回,而实际的消息传递工作由MPI环境在后台执行。非阻塞

4、式函数的命名是在阻塞式函数名的MPI_前缀之后加上一个“I”,如MPI_Isend和MPI_Irecv则是MPI_Send和MPI_Recv的对应非阻塞式通信版本。在调用非阻塞式函数之后,进程可以调用MPI_PI_Test函数来查询通信操作的完成情况。在MPI中,对于点对点通信,也存在着4种发送模式。这4种模式的对应函数名称不同,但参数表是一样的,它们之间的差异,存在于它们发送消息的方式和对接收方的状态要求的不同。这4种模式分别是:标准模式、缓冲模式、同步模式和就绪模式。●标准模式:当消息长度小于或等于MPI环境预留的数据缓

5、冲区大小时,MPI环境会将消息复制到缓冲区,然后立即返回。否则会当部分或全部消息发送完成后才返回。标准模式下,发送操作的完成需要与接收方联络。●缓冲模式:MPI环境将消息复制到一个用户提供的缓冲区中,然后就立即返回,消息由MPI环境在后台执行。用户必须确保所提供的缓冲区能够容下将要发送的消息。缓冲模式下的发送操作不需要与接收方联络便可立即完成。●同步模式:同步模式是基于标准模式上,增加了一个要求。它要求确认接收方已经开始接收数据后函数调用才返回。●就绪模式:调用就绪模式发送时必须确保接收方已经正在等待接收该消息,不然就会产生

6、错误。3.3.2MPI程序结构下面是C/C++语言MPI程序的典型结构:#include"mpi.h"........intmain(intargc,char*argv){intmyrank,numprocs;MPI_Init(argc,argv);MPI_m_size(MPI_M_PI_m_rank(MPI_M_PI_Finalize();......return0;}表3.1MPI程序基本结构C/C++语言的MPI程序必须包含MPI的头文件mpi.h,以获得MPI函数的原型说明和MPI的预定义数据类型和常量。在使用C++

7、作为MPI程序编程语言的时候,在编译程序时可能会遇到以下的出错信息:“SEEK_SETis#definedbutmustnotbefortheC++bindingofMPI”这个问题是由于stdio.h和MPIC++接口同时都使用了SEEK_SET,SEEK_CUR,SEEK_END这些全局变量,这是MPI-2标准中的一个bug。要解决这个问题,一般会在#include“mpi.h”这句代码前加上以下三句:#undefSEEK_SET#undefSEEK_END#undefSEEK_CURMPI_Init函数用于初始化MPI

8、系统环境。该函数应该在调用其他所有MPI函数之前(除了MPI_Initialized)调用,不然MPI环境还没建立,其他函数也无法运行。命令行参数argc和argv可以传递给MPI_Init,因为有时可以通过这些参数将运行进程的相关信息传递给MPI程序。一般来说,调用MPI_Init(0,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。