#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变量。
答案 0 :(得分:1)
我在www.macs.hw.ac.uk/~hwloidl/Courses/F21DP/gph_milan15_handout.pdf上找到了一个演示文稿,其中,在幻灯片86和88上,他们通过使用gmp_sprintf将字符串编组到字符串中来发送多精度整数()和gmp_sscanf()。
实际上,我注意到他们使用的是mpq_t类型的理由,但我想同样的方法适用于mpz_t。