[并行与分布式程序设计] Jacobi迭代数据并行

该博客探讨了在并行与分布式程序设计中,如何使用Jacobi迭代方法进行数据并行计算。每个进程处理矩阵A和B的不同部分,并在计算完成后将结果汇总到主进程——0号进程。程序设计采用主从模式分配任务,而所有进程在执行计算任务时则采用对等模式。
摘要由CSDN通过智能技术生成
#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值