c语言 mpi代码 “1 leaked handle pool objects“ 警告

记录一个小坑,"1 leaked handle pool objects"警告

在完成云计算作业: 用mpi+openmp写矩阵相乘 的代码的时候遇到的一个警告,乍一看过去,我觉得是我有变量没有free 然后又去百度查了,啥也没查到,后来查阅MPI_Type_create这个函数的时候发现,我在前面commit了,但是没有在结尾free掉,用MPI_Type_free(&newType)就能把警告解决了;
附上 MPI_Type_create的使用

  • c 代码
struct point {
    
    
	int x,y;
	double data;
}
// 定义新类型
MPI_Datatype pointType;
 // 分区变量长度
int pointType_blocklengths[2] = {
    
    2, 1};
// 分区起始位置
MPI_Aint pointType_displacements[2] = {
    
    0, sizeof(int) * 2};
// 分区类型
MPI_Datatype pointType_types[2] = {
    
    MPI_INT, MPI_DOUBLE};
// 创建类型
MPI_Type_create_struct(2, pointType_blocklengths, pointType_displacements, pointType_types, &pointType);
// 提交类型

MPI_Type_commit(&pointType);
// 运行的代码
//....

// free
MPI_Type_free(&pointType)

这里就是把2个int作为一个部分,double一个部分,int放前面,
对应的后面的分区类型数组MPI_INT也放前面,
起始的时候是int所以分区起始位置第一个变量是0,对应的第二个则是0+sizeof(int)*2
然后记得要:
MPI_Type_free(&newType)

猜你喜欢

转载自blog.csdn.net/reol44/article/details/121212067
今日推荐