空闲内存 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 环境中,大概是相关的环境……) .
在调用 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 环境中,大概是相关的环境……)