Articles of mpi

MPI dérivé type envoyer

J’essaie d’envoyer un type dérivé aux processeurs. Le type contient un object provenant d’un autre type dérivé. J’ai commencé l’exemple à partir de Exemples: type de données dérivé de la structure . J’ajoute mon code. Le code est un peu long mais il est fondamentalement identique pour deux types. J’ai un object Part qui a […]

Structures MPI et C

Je dois admettre que j’ai été choqué de voir combien de lignes de code sont nécessaires pour transférer une structure C avec MPI. Dans quelles circonstances cela fonctionnera-t-il simplement de transmettre une structure en utilisant le type de données prédéfini MPI_CHAR ? Prenons l’exemple suivant: struct particle { double x; double y; long i; }; […]

Comment accélérer ce problème par MPI

(1). Je me demande comment je peux accélérer le calcul fastidieux dans la boucle de mon code ci-dessous en utilisant MPI? int main(int argc, char ** argv) { // some operations f(size); // some operations return 0; } void f(int size) { // some operations int i; double * array = new double [size]; for […]

Pourquoi ce code MPI est-il exécuté dans le désordre?

J’essaie de créer un “Bonjour, le monde!” application dans (Open) MPI de telle sorte que chaque processus sera imprimé dans l’ordre. Mon idée était de faire en sorte que le premier processus envoie un message au second à la fin, puis au second au troisième, etc. #include #include int main(int argc,char **argv) { int rank, […]

Créer et communiquer un «tableau de structures» à l’aide de types de données dérivés de MPI

J’essaye de programmer un MPI_Alltoallv en utilisant un type de données dérivé de MPI en utilisant MPI_Type_create_struct. Je n’ai trouvé aucun exemple permettant de résoudre ce problème particulier. La plupart des exemples comme celui-ci effectuent la communication (Send / Recv) en utilisant un seul membre struct, alors que je cible un tableau de structures. Voici […]

MPI_Irecv ne reçoit pas correctement les données envoyées par MPI_Send

J’ai une donnée de masortingce 1D comme Q_send_masortingx . À chaque itération, chaque processeur met à jour son Q_send_masortingx et l’envoie au processeur précédent ( rank-1 ), alors qu’il reçoit une masortingce nouvellement mise à jour sous la forme Q_recv_masortingx du processeur suivant ( rank+1 ). Par exemple, lors d’une itération, Proc[0] met à jour […]

Tous mes programmes MPI (écrits en c) donnent une erreur de segmentation

J’ai écrit quelques programmes de base en C en utilisant MPI. Certains d’entre eux travaillaient jusqu’à hier. Aujourd’hui, la plupart d’entre eux présentent des défauts de segmentation. On fait une boucle infinie, mais je n’ai pas de boucle. Cela me rend vraiment fou. C’est le programme qui va en boucle. #include #include #include #include “mpi.h” […]

Rechercher / attendre toute transmission dans MS-MPI

C’est une situation de maître-esclave. Comment puis-je faire en sorte que le processus maître recherche un message qui lui est transmis de manière non bloquante? Si, au moment de la recherche, aucun message n’est transmis au maître, les itérations se poursuivent. Cependant, si un message lui est transmis, il traitera le message et poursuivra les […]

Écriture dans un fichier de sortie en MPI c

Je travaille sur ce code MPI et tout fonctionne presque comme il se doit, mais j’ai du mal à écrire la sortie du programme dans un fichier. Voici du code pour illustrer mon problème int main(int argc, char *argv[]){ FILE *filename; int size, my_rank; int count =0; int tag =99; int limit = 5; MPI_Init(&argc, […]

MPI exemple de base ne fonctionne pas

J’essaie de comprendre ce que voulait dire l’exemple ci-dessous: #include “mpi.h” #include int main(int argc, char *argv[]) { int numtasks, rank, dest, source, rc, count, tag = 1; char inmsg, outmsg = ‘x’; MPI_Status Stat; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { dest = 1; source = 1; rc = MPI_Send(&outmsg, […]