【发布时间】:2016-09-18 18:47:04
【问题描述】:
我有以下 C 结构:
typedef struct chromosome{
int *genes;
float cout;
}chromosome;
我想使用 MPI_Send 发送一组染色体。我已经定义了这样的 MPI_CHROMOSOME 数据类型:
MPI_Datatype MPI_CHROMOSOME;
MPI_Datatype TYPES_ELEMENTAIRES[2] = {MPI_INT, MPI_FLOAT};
int blocklengths[2] = {NB_SOMMETS,1}; //NB_SOMMET is a known integer value at this point (number of elements of the "genes" array)
MPI_Aint offsets[2];
offsets[0] = offsetof(chromosome, genes);
offsets[1] = offsetof(chromosome, cout);
MPI_Type_create_struct(2, blocklengths, offsets, TYPES_ELEMENTAIRES, &MPI_CHROMOSOME);
MPI_Type_commit(&MPI_CHROMOSOME);
然后我尝试发送一组染色体:
chromosome *sub_pop = malloc(taille_sub_pop*sizeof(chromosome));//taille_sub_pop is a known integer value
/* ... Fills sub_pop with chromosomes ...*/
MPI_Send(sub_pop,taille_sub_pop,MPI_CHROMOSOME, 1, 3, MPI_COMM_WORLD);
...但是我收到一个错误(您的一个应用程序进程错误终止...退出代码 139...您的应用程序以退出字符串终止:分段错误(信号 11))。
我怎样才能正确发送这个数组?我会很感激你的帮助。非常感谢。
【问题讨论】: