-1
在調用mpi init之前釋放分配內存的最佳方法是什麼?在下面給出的代碼中,應該在mpi finalize之前或mpi finalize之後釋放被釋放的內存。無論如何,無論哪種方式不會給出任何錯誤。可用內存malloc MPI
感謝
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()'之後,可能會出現'嵌套對稱性'的爭論,但是你的代碼應該沒問題。您可以使用['valgrind'](http://valgrind.org/)來驗證這一點。 –
感謝Jonathan和Severin的回覆。我問這個問題的原因是,我正在編寫一個複雜的混合並行代碼,它使用openmp,mpi和gpu進行氣候模型模擬,並且很高興知道這些場景中的標準實踐應該是什麼。我曾嘗試Valgrind,但它不適用於Ubuntu上的MPI程序(https://bugs.launchpad.net/ubuntu/+source/mpich2/+bug/1045326) –