记录一个小坑,"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)