#include <iostream>
#include <mpi.h>
#include <sys/time.h>
#include <vector>
using namespace std;
void mpi_jacobi(vector<float>*, vector<float>*, int rank,
int size, int n, int my_n, int steps, MPI_Status status);
void init_matrix(vector<float>*, int);
void show_matrix(vector<float>*, int);
int main(int arg, char* argv[]) {
int rank, size;
int my_n;
struct timeval start, end;
long total_time;
MPI_Status status;
int n = 4;
int steps = 2;
vector<float> A[n];
vector<float> B[n];
init_matrix(A, n);
init_matrix(B, n);
MPI_Init(&arg, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (rank == 0) {
// 保证整除
show_matrix(A, n);
gettimeofday(&start, nullptr);
my_n = n / size;
for (int i = 1; i < size; i++)
MPI_Send(&A[i * my_n][0], n * my_n, MPI_FLOAT, i, 0, MPI_COMM_WORLD);
mpi_jacobi
[并行与分布式程序设计] Jacobi迭代数据并行
最新推荐文章于 2024-08-20 14:09:37 发布
该博客探讨了在并行与分布式程序设计中,如何使用Jacobi迭代方法进行数据并行计算。每个进程处理矩阵A和B的不同部分,并在计算完成后将结果汇总到主进程——0号进程。程序设计采用主从模式分配任务,而所有进程在执行计算任务时则采用对等模式。
摘要由CSDN通过智能技术生成