如何通过MPI_Send

时间:2017-07-20 16:24:34

标签: mpi gmp

#include <stdio.h>
#include <gmp.h>
#include <mpi.h>

int main(int *argc, char **argv)
{   
    int rank;
    mpz_t a;
    mpz_t b;
    mpz_init(a);
    mpz_init(b);
    mpz_set_ui(a,23000000000000000000000000001);
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    if(rank==0)
    {
        MPI_Send(&a,1,MPI_INT,1,100,MPI_COMM_WORLD);
    }

    if(rank==1)
    {
        MPI_Recv(&b,1,MPI_INT,0,100,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
    }
    MPI_Finalize();
    return 1;
}

此代码产生错误,请帮助我如何通过MPI_Send函数发送mpz_t变量。

1 个答案:

答案 0 :(得分:1)

我在www.macs.hw.ac.uk/~hwloidl/Courses/F21DP/gph_milan15_handout.pdf上找到了一个演示文稿,其中,在幻灯片86和88上,他们通过使用gmp_sprintf将字符串编组到字符串中来发送多精度整数()和gmp_sscanf()。

实际上,我注意到他们使用的是mpq_t类型的理由,但我想同样的方法适用于mpz_t。