
MPI
文章平均质量分 80
zhuliting
喜欢简单,安静……
展开
-
有了OpenMP,MPI,为什么还要MapReduce?
MPI函数手册页 http://www.mpi-forum.org/docs/mpi-11-html/node182.html#Node182 MPI程序设计练习循序渐进 http://www-unix.mcs.anl.gov/mpi/tutorial/mpiexmpl/contents.html 主要的MPI主页及MPI标准 http://www.mpi-forum.org MPIF主页 http://www.mcs.anl.gov/mpi MPI主页 http://www.netlib.org/转载 2010-09-28 08:43:00 · 4847 阅读 · 0 评论 -
MPI打包和拆包测试FROTRAN代码
把一个整数数组和一个双精度数组从第0个进程传送到第1个进程,使用打包和拆包的方式实现。 program pack include 'mpif.h' integer maxbuf, len parameter (maxbuf = 200, len = 10) integer myid, p, mycomm, ierr, status(mpi_status_size, 2), & ia(len), count1, count2, i, pos real*8 a(len)原创 2011-04-29 12:45:00 · 2051 阅读 · 0 评论 -
MPI + FORTRAN 发送接收数组操作
在FORTRAN 中,以二维数组为例,arr(i, j)既可以表示第i行j列的元素值,也可以表示其地址,这样,我们就可以发送接收连续的序列。下面的代码,是将0号进程中数组的第一列发送到1号进程中数组的第二列,并且输出数组的值。采用标准的阻塞式通信。发送接收前的大部分输出操作,只是为了验证数组的存取细节,并无必要。。 program main include "mpif.h" integer, parameter:: n = 3 integer myid, numprocs, i, j,原创 2011-05-05 10:12:00 · 5984 阅读 · 0 评论 -
MPI程序调试--笔记
有一个不优美但实用的方法,就是在程序中添加如下一段代码: tmp = 0do while(tmp.eq.0)call sleep(2)enddo 其功能就相当于插入一个断点,在MPI程序调试中,还可以用来判断该断点之前的程序是否出现导致程序崩溃退出的错误,个人觉得很好用。[root@c0109 zlt]# cat hello.F program hello implic原创 2011-06-19 09:03:00 · 4850 阅读 · 0 评论 -
MPI + C 的hello world程序
为什么我博客的头像变成了一个小盆友啊?原创 2010-12-14 18:50:00 · 4587 阅读 · 0 评论 -
MPI_Bcast广播操作的通信开销测试
#include "mpi.h"#include #include #include #include int main(int argc, char **argv){ int i, myid, other, numprocs; double start, end; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_原创 2011-06-10 22:18:00 · 3182 阅读 · 0 评论 -
深腾7000上用bsub命令提交MPI作业
小规模作业运行在厚节点队列上,配置:这三个队列节点都一样,16路4核 共64核 Xeon X7350 2.93GHz, 512G内存x64_small 共2个节点 1-8核 6小时x64_3950 共5个节点 1-64核 6小时x64_3950_long 共11个节点 1-64核 144小时 x64_small就是用来给小作业运行的。如果需要运行稍大作业的话,不妨用x64_3950或x64_395原创 2011-06-27 17:35:00 · 8177 阅读 · 4 评论 -
不执行任何任务的进程,有时也不可或缺
又一次相信存在即是合理的!超算中心的x64_blades刀片部分作业队列限制CPU核心数必须大于70,而当我需要10-70个核的时候,不能直接提交作业,于是。。。于是。。。原来空闲的进程也是有它的作用的,正如某些xxxx,这个社会太邪恶了。。。下面的程序会有所启发 pro原创 2011-07-11 19:19:30 · 881 阅读 · 0 评论 -
MPI_Isend()函数会出现内存耗尽的情况吗
MPI_Isend()函数会出现内存耗尽的情况吗?如何避免呢?考虑到通讯和计算叠加,除了MPI_Isend()之外,有没有其它更好用的函数?我写了如下一段代码测试,在一台4GB的机器上开两个进程,进程1频繁向进程0发送数据,非阻塞通讯,正常结束。结果表明,仅仅是M原创 2011-07-13 11:09:15 · 2205 阅读 · 0 评论 -
Fatal error in MPI_Isend: Internal MPI error!, error stack:
程序调用非阻塞通信函数MPI_Isend(), MPI_Irecv(),接收时有MPI_wait()操作迭代到第5000多次时出现如下错误: 5280 -1.272734378291617E-004 1.271885446338949E-004原创 2011-07-11 13:15:14 · 4543 阅读 · 1 评论 -
循环的计算域划分
假设计算域为[kb, ke],将之分给p个进程,每个进程分到的计算域为[mykb, myke]。 !The iterations are divided into p parts, where p is the number of processors !Written by Albert 2011.7.11 program stagprojection原创 2011-07-20 21:36:46 · 928 阅读 · 0 评论 -
MPI调试--出错信息整理
如果是用FORTRAN写程序,建议加上implicit none,特别是代码比较多时,可以检查出编译过程中的很多问题。1、[root@c0108 parallel]# mpiexec -n 5 ./simpleaborting job:Fatal error in MPI_Irecv: Invalid rank, error stack:MPI_Irecv(原创 2011-06-18 18:29:00 · 27127 阅读 · 1 评论 -
nxn棋盘的m皇后问题代码
http://blog.youkuaiyun.com/zhuliting/article/details/6302767去年4月份修改的代码,现在贴出来分享一下。毕业了,工作上可能会很忙,不能更新博客了。 #include "mpi.h"#include #include #include #include #include using namespace std;en原创 2012-04-08 17:43:01 · 2808 阅读 · 1 评论 -
Jacobi迭代并行算法
Jacobi迭代是一种常见的迭代方法,迭代得到的新值是原来旧值点相邻数据点的平均。串行程序片段如下: 并行化方法之一,可以考虑按列划分,边界点新值的计算需要相邻边界其它块的数据,所以在划分后,每一个数据块的两边各增加一列,用于存放通信得到的数据。如下图: program main implicit none includ原创 2012-03-23 14:57:31 · 10638 阅读 · 9 评论 -
编译FORTRAN程序提示:“编译器内部错误:段错误 请提交一份完整的错误报告”
[root@c0108 parallel]# mpif90 -o simple stagsimple.F solveuss.F solvevss.F solvewss.F ppoisson.F tdma.F 在文件 tdma.F:43 call CarculateBlock(i,MIN(i+tx,ie),j,MIN(j+ty,je),k,原创 2011-06-18 09:12:00 · 3746 阅读 · 0 评论 -
MPI + FORTRAN 的子例行子程序测试
用MPI实现一个简单的标准发送接收操作,如下,0进程将一个数据发送给1号进程,1号进程接收从0进程发送的数据。 program main implicit none include mpif.h integer myid, ierr,status(MPI_STATUS_SIZE) real(kind=8) i, j i = 3.14159 j = 4.22222原创 2011-06-17 22:05:00 · 12716 阅读 · 0 评论 -
mpdboot problem:mpd failed to start correctly / unable to ping local mpd
Apologies, it seems that YAST does weird things with /etc/hosts afteryou make changes, so this is where the 127.0.0.2 appears.mpdboot works fine now.Cheers,TomOn Sun, 2006-05-21 at 18:43 +0100, Tom Crick wrote:> Hello,>> I've been hav原创 2010-09-27 23:50:00 · 1891 阅读 · 0 评论 -
MPICH2安装、配置总结和问题
联想深腾1800集群,64位CentOS 系统,5.4版本,root帐号(非root 帐号的配置可能不同,mpd.conf文件)一、确保各结点相互之间访问无需输入密码:[root@c0104 ~]# ssh-keygen -t rsa #然后一路回车[root@c0104 ~]#cp .ssh/id_rsa.pub .ssh/authorized_keys[root@c0104 ~]#chmod go-rwx .ssh/authorized_keys 在每个节点重复一遍。收集所有节点下的author原创 2010-09-29 22:25:00 · 8706 阅读 · 2 评论 -
mpich-discuss mailing list:unable to ping local mpd
Today's Topics:1. mpdboot problem:unable to ping local mpd (Albert)2. Re: mpdboot problem:unable to ping local mpd (Dave Goodell)----------------------------------------------------------------------Message: 1Date: Wed, 29 Sep 2010 19:47:40 +0800From: Al原创 2010-09-30 09:07:00 · 1549 阅读 · 0 评论 -
内存层次结构是如何工作的
内存层次结构存在的惟一目的就是为了快速地访问大量内存。如果只需要很少的内存,那我们宁愿全部使用快速的静态RAM;如果速度不是问题,可以都使用虚存。内存层次结构的意义在于利用引用的空间局部性和引用的时间局部性原理,将经常被访问的数据放到快速的内存中,而将不经常访问的数据留在较慢的外存中。但是,在程序的执行过程中,常用与不常用的数据集是动态变化的,我们不能在程序启动的时候简单地将数据分布到内存层次结构的各个层中,然后在程序执行过程中保持不变;相反,不同的内存子系统需要能够适应变化,根据程序执行过程中引用的空间局原创 2010-11-25 23:51:00 · 2532 阅读 · 0 评论 -
job aborted; reason = mpd disappeared
Error:job aborted; reason = mpd disappearedThis is an issue with your cluster. You need to have a system administrator look at it. Perhaps it was just a temporary thing, so try to rerun the job.原创 2010-10-08 16:44:00 · 3217 阅读 · 0 评论 -
MPI编译C++程序出现#error "SEEK_SET is #defined but must not be for the C++ binding of MPI" 的解决方法
MPI的mpicc和mpicxx命令编译C++程序时,可能会遇到如下三种错误信息:#error "SEEK_SET is #defined but must not be for the C++ binding of MPI"#error "SEEK_CUR is #defined but must not be for the C++ binding of MPI"#error "SEEK_END is #defined but must not be for the C++ binding原创 2010-11-09 13:18:00 · 3838 阅读 · 1 评论 -
MPI_ALLreduce函数
此函数和MPI_Reduce的意思相同,只是最后结果在所有的进程中。相当于先做MPI_Reduce,然后再做MPI_Scatter. program main include "mpif.h" integer max0, max1, myid, ierr call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierr) max0 = m原创 2011-05-11 10:01:00 · 11032 阅读 · 1 评论 -
MPI + FORTRAN 非阻塞通信交换数组边界测试程序
我写了个测试程序,一维情况下是正确的,功能如下:1、每个进程初始化一个数组,全部赋值为进程的IDk号:arr(i) = myid;2、然后各进程将数组的计算域均分,每个进程的计算域为[dp(myid),dp(myid+1)),左闭右开;3、相邻进程,交换数组的边界,采用非阻塞通信方式;4、输出自已计算域内的数组元素; program main! implicit none include 'mpif.h' integer, parameter::imax = 1, jmax = 1, kmax原创 2011-05-12 16:41:00 · 2632 阅读 · 0 评论 -
MPI_gather/MPI_gatherv测试
每个进程上都有一组数据,将它们收集到进程编号为root的进程中,并按进程编号的顺序存放 pragram gather include 'mpif.h' integer maxbuf, len, mp integer,parameter::maxbuf = 200, len = 10, mp = 5 integer myid, p, mycomm, ierr, root, ia(len), iga(maxbuf), & i, displs(mp), counts(mp)原创 2011-05-18 12:51:00 · 7452 阅读 · 0 评论 -
MPI + FORTRAN 数据的收集测试
1、将一个三维数组ufew的计算域[ib:ie, jb:je, kb:ke]沿K方向分段,各进程均分计算域,然后对各自计算域内的部分数组赋值。2、最后一个进程,收集各个计算域的值,最后输出,消息传递采用标准的阻塞式通信。3、本程序中,每个进程都拥有完整的数组ufew。 program main implicit none include 'mpif.h' integer i,j,k,nn integer ib,ie,jb,je,kb,ke integ原创 2011-05-21 20:47:00 · 9698 阅读 · 0 评论 -
MPI + C 广播操作
1、将主进程数组中的一个元素,广播,在其它进程数组的相应位置输出。#include "mpi.h"#include const int N = 10;int main (int argc, char *argv[]) { int i, rank, numprocs, master; int dp[N]; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WOR原创 2011-05-22 15:10:00 · 2773 阅读 · 0 评论 -
MPI通信的启动时间测试
MPI通信,的确存在通信的启动时间。。#include "mpi.h"#include #include #include #include int main(int argc, char **argv){ int i, myid, numprocs; double start, end; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MP原创 2011-05-24 22:00:00 · 2795 阅读 · 0 评论 -
矩阵乘的MPI并行程序
计算A * B = C, 其中矩阵A, B均为方阵,采用主从式程序设计模式,用户从键盘输入矩阵规模N,然后随机数给矩阵赋值。我的并行化方法很简单,将矩阵A按行划分,由主进程将矩阵A散发给各个子进程,各子进程把计算结果发送给主进程汇总。其中的矩阵都是用一维数组来模拟的,代码附上,欢迎拍砖~毕业了,才发现很喜欢并行计算啊~ #include "mpi.h"#include原创 2012-04-20 22:03:31 · 5559 阅读 · 6 评论