【问题标题】:MPI send in passing pointer pointer c + +MPI发送传入指针指针c++
【发布时间】:2013-04-22 13:15:53
【问题描述】:
MPI_Send (&t[0], 2, MPI_INT, 1, tag, MPI_COMM_WORLD);

从机中获取不到这个指针指针的地址,A是已经分配好的矩阵** A,A[0]是矩阵第一行的地址

// MASTER

int** T = new int*[2];
T[0] = A[0];

MPI_Send(&T[0], 2, MPI_INT, 1, TAG, MPI_COMM_WORLD);

// SLAVE

int **V = new int*[2];
MPI_Recv(V, 2, MPI_INT, 0, TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

int resposta = 1;

MPI_Send(&resposta, 1, MPI_INT, 0, TAG, MPI_COMM_WORLD);

【问题讨论】:

    标签: c++ mpi send


    【解决方案1】:

    你应该取消对指针的引用,这样你就得到了一个int*类型的对象:

    MPI_Recv(*V, ...);
    

    或使用

    MPI_Recv(&V[0][0], ...);
    

    【讨论】:

    • 我需要将指针传递给指针,而不是整数指针。
    • int ** V * = new int [2]; V[0] = 指针爪要保存一个整体,我在slave中获取不到这个结构。
    • @MaxmilianFerreiradeLemos 指向指针的指针是 V,指针是 *VMPI_Recv 收到一个指针,这就是为什么你应该传递 *V&V[0][0]
    • 谢谢。你知道如何通过发送传递结构吗?例如:结构 { int 任务; int * row_a; int * row_b;辅助};
    • @MaxmilianFerreiradeLemos 我不确定你的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2015-11-19
    • 1970-01-01
    • 2016-09-18
    • 2011-11-12
    • 2020-08-16
    • 1970-01-01
    相关资源
    最近更新 更多