I die folgende C-Struktur erhalten haben:MPI: eine Anordnung einer Struktur Senden eines Zeigers enthält
typedef struct chromosome{
int *genes;
float cout;
}chromosome;
Ich möchte ein Array von Chromosomen senden MPI_Send verwenden. Ich habe eine MPI_CHROMOSOME Datentyp wie folgt definiert:
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);
Dann habe ich versucht, eine Reihe von Chromosomen zu senden:
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);
... Aber ich habe einen Fehler (BAD Beendigung eines Ihrer ANWENDUNGSPROZESSE ... Exit Code 139 ... Ihre Anwendung wurde mit dem EXIT STRING beendet: Segmentierungsfehler (Signal 11)).
Wie kann ich dieses Array richtig senden? Ich würde Ihre Hilfe schätzen. Danke vielmals.
Hallo, danke für deine Antwort. In dem Link, den Sie mir geschickt haben, möchte ich tatsächlich eine Anordnung dieser Art von Struktur senden, nicht nur ein Element ... – Reda94