空闲内存 malloc MPI

free memory malloc MPI

在调用 mpi init 之前释放分配的内存的最佳方法是什么?在下面给出的代码中,调用的内存应该在 mpi finalize 之前或 mpi finalize 之后释放。无论如何做任何一种方式都不会给出任何错误。

谢谢

int main (int argc, char *argv[])
{
    int   hostid, numprocessors;
    int *trial;
    trial = calloc(5,sizeof(int));
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &numprocessors);
    MPI_Comm_rank(MPI_COMM_WORLD,&hostid);
    free(trial);
    MPI_Finalize();
    //free(trial);
    return(0);
}

正在将评论转入答案以允许关闭。

如果您不让内存可供 MPI_Init() 使用,您可以随时释放它。在调用 MPI_Finalize() 之后,可能会有 'nesting symmetry' 的参数来执行 free,但是您的代码应该没有问题。

当然,问题中的代码并没有在任何地方使用分配的内存。然而,这些观察结果仍然适用。只要在使用它的最后一个代码完成之前不释放内存,就可以了。

您可以使用 valgrind to validate this (…though I note the ,但 valgrind 不适用于 MPI 程序,至少在 Ubuntu 环境中,大概是相关的环境……).