MPI写的一个找寻数组最大值的问题,一直出错

#include
#include
#include
int main(int argc,char **argv)
{

int N;
int *array;
int i=0;
int max_mpi=0,min_mpi;
int maxx=0,minn=99999999;
int rank,size;

MPI_Status status;
MPI_Comm comm=MPI_COMM_WORLD;
MPI_Init(&argc,&argv);
MPI_Comm_size(comm,&size);
MPI_Comm_rank(comm,&rank);

if(rank==0)
{
    printf("please input the N :\n");
    scanf("%d",&N);
    array=(int*)malloc(sizeof(int)*N);
    for(i=0;i<N;i++)
    {
        array[i]=0;
        array[i]=rand()%100000;
    }

    for(i=1;i<size;i++)
    {
        MPI_Send(&N,1,MPI_INT,i,97,comm);
        MPI_Send(&array,N,MPI_INT,i,97,comm);
    }

    for(i=1;i<size;i++)
    {
        MPI_Recv(&maxx,1,MPI_INT,i,96,comm,&status);
        MPI_Recv(&minn,1,MPI_INT,i,96,comm,&status);
        if(max_mpi<maxx)
            max_mpi=maxx;
        if(min_mpi>minn)
            min_mpi=minn;
    }
    printf("❤❤❤❤❤❤❤❤❤❤❤❤❤\n");
    printf("The maximum value of the array is(by t he mpi): %d \n",max_mpi);
    printf("The minimum value of the array is(by the mpi): %d \n",min_mpi);
    printf("❤❤❤❤❤❤❤❤❤❤❤❤❤\n");
}
else
{
    int local_N;
    MPI_Recv(&local_N,1,MPI_INT,0,97,comm,&status);
    int *local_array;
    local_array=(int*)malloc(sizeof(int)*local_N);
    MPI_Recv(&local_array,N,MPI_INT,0,97,comm,&status);
    int beg,end;
    beg=(rank-1)*(local_N/(size-1));
    end=rank*(local_N/(size-1));
    for(i=beg;i<=end;i++)
    {
        if(maxx<local_array[i])
            maxx=local_array[i];
        if(minn>local_array[i])
            minn=local_array[i];
    }
    printf("in process [%d] maxx is (%d),minn is (%d), begin from %d end in %d\n", rank, maxx,minn, beg,end);
    MPI_Send(&maxx,1,MPI_INT,0,96,comm);
    MPI_Send(&minn,1,MPI_INT,0,96,comm);
}
MPI_Finalize();

}

错误提示如下:
Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7fff11568950, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7fff11568920) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7fff44eee630, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7fff44eee600) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffd14d7a450, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffd14d7a420) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffc241a4300, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffc241a42d0) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffeb1d9ca00, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffeb1d9c9d0) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
❤❤❤❤❤❤❤100

Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffff9b335b0, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffff9b33580) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
❤❤❤❤❤❤❤100

Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7fff60aa3650, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7fff60aa3620) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
❤❤❤❤❤❤❤100

Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffcd6bed240, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffcd6bed210) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0
❤❤❤❤❤❤❤100

Fatal error in PMPI_Recv: Message truncated, error stack:
PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffff3192220, count=0, MPI_INT, src=0, tag=97, MPI_COMM_WORLD, status=0x7ffff31921f0) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 97 truncated; 400 bytes received but buffer size is 0

please input the N :
100

= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 24244 RUNNING AT localhost.localdomain
= EXIT CODE: 11
= CLEANING UP REMAINING PROCESSES

= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES

YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MPI程序求阶乘,求数组最大值
几个简单的基于MPI的C程序。求数的阶乘、求数组的最大值等。
MPI编程----找到大型数组中最大元素
原理: 与计算cosx相似,通过将数组分成若干份,分配给子进程计算,最后通过根进程收集并处理输出。 代码如下: #include &amp;lt;stdio.h&amp;gt; #include &quot;mpi.h&quot; #include &amp;lt;string.h&amp;gt; #include &amp;lt;math.h&amp;gt; #define PI 3.1415926 #define N 2000000 int rand_a...
MPI编程--求最大值
#include <stdio.h> #include <mpi.h> #include <malloc.h> int main (int argc ,char** argv) { int rank,size,i,max,MAX; int a; MPI_Init(&argc, &argv); MPI_Co
【MPI并行计算】对一个大规模数组求最大值
1. 首先要创建一个大规模数组,这里使用python程序生成指定长度的随机数数组,然后写入到txt文件中 2. 查看txt文件中生成的随机数数组 3. 编写mpi程序读取文件中的每一行,然后生成一个数组,这里创建10个进程,1~9进程负责计算数组的一部分,然后将其负责部分数组的最大值发送给0进程,0进程将收到的数组组成一个数组,然后对这个数组求最大值,得出最终结果   4....
MPI 并行计算 分段求数组的最大值。
就是计算每一段的大小,然后分开求就可以了。然后那个数组的话,我用的是输入的方法获取一个数组 #include &quot;mpi.h&quot; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;math.h&amp;gt; #include &amp;lt;string.h&amp;gt; int main(int argc,char **argv){ MPI_Comm comm = MPI_COMM_W...
MPI并行计算——点对点通信(求数组的最大值)
要求 使用mpi完成数列最大值的查找 代码 #include &lt;stdio.h&gt; #include "mpi.h" #include &lt;stdlib.h&gt; int main(int argc, char **argv){ int rank, size; int n,start,end; int *arr; int max,pmax,i; MPI_Com...
MPI求数组的最大值
计算数组最大值 基本思路,初始化一个数组,未考虑进程数与处理的总数的整数倍关系,分p进行,比如:5个p,每个p获取到20个数据中的4个数字,然后把此时的大小比较,获取其最大值,这是暂时的最大值,之后再发送send到进程0,进行比较,获取全局最大值后send到每个子进程,进而成功输出如下。 求得每部分的最大值 为了避免send和 recv的调用顺序出错, 0进程都是以revc开始的 #incl...
mpi安装与配置错误记录——并行计算开端
顺利安装了linux双系统,纯固态硬盘并不难,还有UEFI启动ubuntu天生支持。下一步,安装chrome,找了一堆书签,但是chrome登录需要翻墙,首先按了个shadowsocks,版本很多,支持ubuntu,然后安装gcc,搭建起c++环境,然后开始装mpi。下载第一个包,然后解压缩,sudo tar -zxvf mpich-3.1.4.tar.gz 不行,发现可以右键提取到此处,就可以打开
mpi4py 中的错误处理
本文从本人简书博客同步过来 在上一篇中我们介绍了 mpi4py 中的属性和命名操作,下面将介绍 mpi4py 中的错误处理。 预定义错误处理 通信子 MPI.Comm.Set_errhandler(self, Errhandler errhandler) 将错误处理函数 errhandler 与当前通信子对象关联。 MPI.Comm.Get_errhandler(self) ...
mpi my_rank全为0而comm_sz全为1的解决办法
今天在编写mpi并行程序时,出现了一个莫名其妙的问题。 MPI_Comm_rank(MPI_COMM_WORLD,&amp;amp;my_rank); MPI_COmm_size(MPI_COMM_WORLD,&amp;amp;comm_sz); 这两行语句分别获取通信域MPI_COMM_WORLD中的进程号和进程数量,然而我的程序在执行这两条语句后,my_rank全部变为0,comm_sz全部变为1。 在...
MPI并行解决TSP问题
TSP的并行解决,关于虚拟机ubuntu MPI程序代码。TSP的并行解决,关于虚拟机ubuntu MPI程序代码。TSP的并行解决,关于虚拟机ubuntu MPI程序代码。TSP的并行解决,关于虚拟机ubuntu MPI程序代码。
MPI文件读写(1)
MPI_File_read_at_all int MPIAPI MPI_File_read_at_all( MPI_File file, //文件指针 MPI_Offset offset, //偏移量 _Out_ void *buf, ...
PBS作业提交后,输出错误MPI_Aobrt
先看具体内容的截图。 其实输出MPI_Abort消息一般的原因是由于网络错误导致MPI进程异常终止,也就是说,一般情况下是由于Infiniband网络故障导致的问题。 在/home/sce目录下面,有一个PBS的脚本,脚本里面的内容如下:#!/bin/bash mpirun -np 16 /home/sce/software/dl_poly_4.05/execute/DLPOLY.Z这个脚本文件
编写递归函数求数组最大值
题目内容:编写函数求一个数组中数组元素的最大值,要求必须用递归方法解决。输入格式:数组中的数字均为整型数,输入的第一个数为数组长度,后续为数组的所有元素。输出格式:该数组的最大值输入样例:592 18 77 6 15 输出样例:92时间限制:500ms内存限制:32000kb#include&amp;lt;iostream&amp;gt; using namespace std; int max(int arra...
MPI 并行计算 分段求数组最大值
输入N个数的数组, 对数组里的数分给若干个进程进行分别计算, 要求用点对点通信, 不能用广播 我的做法是在rank = 0 的进程里输入N以及数组, 再将数组和N发送给其他进程, 其他进程收到之后进行计算,计算完成后再发给进程0, 进程0进行输出。 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include "mpi.h" in...
寻找数组中的最大值算法
在右边的大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。 提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素 function largestOfFour(arr) { var maxArr = []; //遍历数组 for(var i = 0;i &amp;lt; arr.length;i++){ for(var ...
MPI并行计算模拟N体问题
实验内容N体问题是指找出已知初始位置、速度和质量的多个物体在经典力学情况下的后续运动。在本次实验中,你需要模拟N个物体在二维空间中的运动情况。通过计算每两个物体之间的相互作用力,可以确定下一个时间周期内的物体位置。在本次实验中,N个小球在均匀分布在一个正方形的二维空间中,小球在运动时没有范围限制。每个小球间会且只会受到其他小球的引力作用。在计算作用力时,两个小球间...
关于MPI补充之通信篇
注:这篇博客是针对我以前的一篇博客的补充,下面是以前那篇博客的地址: http://blog.csdn.net/qq_35571432/article/details/78368797 MPI 类型匹配:我们注意到在MPI_Send,MPI_Recv等中都有一个参数datatype,用来匹配参数类型,比如MPI_CHAR只能匹配MPI_CHAR,但是有一个参数可以匹配所有类型,那就是MPI_P
02-第一个MPI程序:Hello world
接上01-认识MPI、搭建环境,接下来写一个程序,试试MPI吧! 1、编写程序 新建文件夹MpiCode,在里面新建一个helloworld.c(注意helloworld之间不要加空格)的程序,代码如下: #include &amp;amp;lt;mpi.h&amp;amp;gt; #include &amp;amp;lt;stdio.h&amp;amp;gt; int main(int argc, char** argv){ //初始化MPI...
MPIOpenMP混合编程解决N-Body问题 实验4
MPIOpenMP混合编程解决N-Body问题 实验4 华南理工大学 高性能云计算 随着国民经济、国防建设和高科技的快速发展,越来愈多的领域对高性能计算有强烈的需求,包括原子能、航空、航天、激光、气象、石油、海洋、天文、地震、生物、材料、医药、化工等。特别是全球气候变化和天气预报、生物分子结构探索、湍流研究、新材料探索以及不少国防研究课题,都迫切需要高性能计算。高性能计算课程的目标就是培养从事高性能计算方面
Ubuntu14.04 | 编写makefile脚本执行MPI的.c程序
编写makefile脚本执行c程序 修改makefile文件 编译链接 运行可执行程序编写makefile脚本执行.c程序1. 修改makefile文件主要将编译器修改为mpicxx################################################################################# File: Makefile# Description:
用mpi实现的一个简单程序 求pi值
用mpi实现的一个简单程序 求pi值用mpi实现的一个简单程序 求pi值
C语言_编写一个函数:求数组的最大值
#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;lt;string.h&amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;lt;math.h&amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;lt;malloc.h&amp;amp;amp;amp;gt; //1、求最大值 int getMax(int p[]
并行作业1:MPI安装,及示例程序运行
运行MPI程序 系统采用vm下ubuntu16.04 一、MPI系统安装 1.1 安装环境 (1)操作系统:Ubuntu 16.04.4 (64位)。 (2)g++ 版本:gcc version 5.4.0 1.2 安装包下载地址及安装包 (1)下载地址:http://www.mpich.org/downloads/ (2)安装包:mpich-3.2.1.tar.gz 1.3安装与测试 (1)将安...
GPU求矩阵中最大值 sharedmemory共享内存
GPU求矩阵中最大值 sharedmemory共享内存
MPI并行编程在矩阵运算耗时分析
两个矩阵相乘,例子中是1000*2000的矩阵A与2000*3000的矩阵B相乘,矩阵随机产生 运行平台是ubuntu14.04 LTS (一个物理cpu,两个逻辑cpu,每个cpu有2个core,不支持超线程) 注:若物理cpu个数*每个cpu核心数不等于逻辑cpu个数,则cpu支持超线程。 普通c语言程序计算矩阵耗时:109s top命令查看(single是该程序)
MPI 程序输入问题(Fortran)
MPI 程序输入问题(Fortran)思路代码 思路 MPI 一般只允许 0 号进程访问标准输入,否则不能判断哪个进程应该得到输入数据。所以用 0 号进程获得输入,再发送给其他进程。 代码 subroutine get_input(rank, size, stat, ierr, a, b, n) use mpi implicit none integer :: rank, ...
Centos7安装MPICH出现问题
求大佬们看看帮助解决谢谢啦! [root@localhost mpich-3.2.1]# bash ./configure --prefix=/home/gq/mpich-install --disable-fortran 2&amp;amp;gt;&amp;amp;amp;1 | tee c.txt Configuring MPICH version 3.2.1 with '--prefix=/home/gq/mpich-i...
分治法求数组最大值
int set_max(int a[],int low,int high)//分治法求数组最大值 { if(low==high) return a[low]; else { int mid=(low+high)/2; int left_max=set_max(a,low,mid); int right_max...
MPI学习六 具有不连续数据发送的MPI程序设计
处理不连续的数据基本方法  一是允许用户自定义新的数据类型 又称派生数据类型  二是数据的打包与解包 派生数据类型  数据类型描述方法--类型图   类型图的二元组为如下形式 ,则类型图为    类型图={,,...,}   基类型可以是预定义类型或派生类型     偏移可正可负,没有递增或递减的顺序要求。   数据类型的跨度被定义为该数据类型的类型图中从第一个基
报错解决openmpi
mca:base :compoent_find :unable to open …/mca_btl_openib:perhaps a missing symbol, or compiled for a different version of Open MPI ? (ignored)mca:base :compoent_find :unable to open …/mca_mtl_psm:perha
【MPI并行程序】矩阵乘法
    具体思路为创建矩阵,给每个进程分配矩阵的不同部分,每个进程根据进程号的不同处理矩阵的不同部分,计算完成后将每个进程的数组发送给一个特定的进程,由该进程合成一个完整的矩阵输出出来。问题是不一定每个进程都能分配到等长的矩阵行数。 首先是创建一个矩阵,这里在创建时使用行数和列数的自定义关系作为随机数种子生成随机数     每个进程根据自己的进程号去取矩阵的不同部分进行计算,不过这里需要考...
MPI_Send和MPI_Recv影响下程序的执行顺序是怎样的?
#include #include #include"mpi.h" #define N 9 #define M 20 int A[M][N]; int B[N]; int BB[N]; int C[M]; int buf[N]; int bufr[N]; int bufc; int tagB=100;
矩阵相乘的MPI 并行计算程序(Fortran)
课程计算流体力学作业:矩阵相乘的MPI并行程序。FORtran和C++代码,
搭建mpi并行运算中遇到的问题与解决方案
搭建mpi并行运算中遇到的问题与解决方案   1,[root@localhost ~]# mpdtrace configuration file /etc/mpd.conf is accessible by others change permissions to allow read and write access only by you 解决: [root@localhost ~...
JAVA 采用递归方式实现求数组最大值
JAVA 采用递归方式实现求数组最大值其它就不多说了,直接上代码吧public class Test { public static void main(String[] args) { int numbers[] = new int[]{1, 5, 7777,9,20,122}; System.out.println(getMaxNumber(numbers
C++用函数模板求一维数组的最大值和最小值
//第一次作业: //用函数模板求一维数组中的最大和最小值。 #include &amp;lt;iostream&amp;gt; #include &quot;string.h&quot; using namespace std; template &amp;lt;class T&amp;gt; void maxmin(T* x, int n, T* max, T* min)//函数模板 { T tempm...
新手:安装CentOS6.5并配置mpich环境时遇到的一些坑
1.开始安装Centos6.5:我们选择“inistall system with basic video driver”   注意:这是一种精简系统的安装模式。2.询问是否对CD媒体介质进行测试,选择“Skip”跳过。3.语言选择English,键盘布局选择us默认,OK进入下一步4.由于使用的VMware,这里有个警告,我们选择第3项 Re-initiallize 重新初始化5.时区选择,北京...
js中获取数组中的最大值和最小值函数
js中获得数组的最大值或最小值
java原理函数之获取数组的最大值
class ArrayTool //创建一个类,里面包含许多通用方法 { private ArrayTool(){}//该类中的方法是静态的,所以该类是不需要创建对象的,为了保证不让其它程序创建该类对象,可以将构造函数私有化; /*获取函数的最大值*/ public static int getMax(int[] arr)//提升权限让所有人访问到;没有成员变量,直接用静态;整型数据;方法名