【发布时间】:2021-01-03 02:03:24
【问题描述】:
我只想用进程 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, N*N/size, MPI_INT,0,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;
}
【问题讨论】:
-
你保证
N*N/size <= N吗? -
如何保证 N*N/size
-
如果我删除了等级 0 的 if 条件,值似乎没问题。