MPI:分散后的值已损坏

问题描述

我只想使用进程0创建具有随机值的矩阵。 创建它之后,我将这些值分散到了不同的过程。 我有问题,我收到了损坏的值,例如

1980714952

32716

-672521120

-672521856

21858

-310078720

21858

0

0

如何分散由进程0创建的矩阵?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mpi.h>

#define N 3

int main(int argc,char** argv)
{
    
    int rank;
    int size;
    
    int aa[N];
    int a[N][N];
    
    MPI_Init (&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
    MPI_Comm_size(MPI_COMM_WORLD,&size);
    
    if (rank = 0)
    {
        srand(time(0));
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j++)
            {

                    a[i][j] = (rand() % 5);
            }
        }
        

    }
    
    MPI_Scatter(a,N*N/size,MPI_INT,aa,MPI_COMM_WORLD);

    for (int x = 0; x < N; x++)
    {

            printf("%d\n",aa[x]);  
    }
        
        
    

    MPI_Finalize();


}


float maxValue(float* array,int _size)
{
    float v = 0.0;
    
    for (int i = 0; i < _size; i++)
    {
        if (array[i] >= v)
        {
            v = array[i];
        }   
    }
    
    return v;
} 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)