Ne pas oublier include `mpi.h'



1 - Environnement


2 - Communications point à point bloquantes

  • Envoyer un message à un processus :
    int
    MPI_[R,S,B]send(void *buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm)

  • Recevoir un message d'un processus :
    int MPI_Recv(void *buf,int count,MPI_Datatype datatype,int source,int tag,MPI_Comm comm,MPI_Status *status)

  • Envoyer et recevoir un message :
    int MPI_Sendrecv(void *sendbuf,int sendcount,MPI_Datatype sendtype,int dest,int sendtag,void *recvbuf,int recvcount,MPI_Datatype recvtype,int source,int recvtag,MPI_Comm comm,MPI_Status *status )

  • Compter le nombre d'éléments reçus :
    int MPI_Get_count(MPI_status *status,MPI_Datatype datatype,int *count)

  • Tester l'arrivée d'un message :
    int MPI_Probe(int source,int tag,MPI_Comm comm,MPI_Status *status )

  • Autres fonctions :
    MPI_Sendrecv_replace(), MPI_Get_elements()

3 - Communications point à point non bloquantes


4 - Communications persistantes


5 - Communications collectives


6 - Communicateurs

  • Création d'un intracommunicateur :
    int
    MPI_Comm_create(MPI_Comm comm,MPI_Group group,MPI_Comm *newcomm)

  • Création d'un intercommunicateur :
    int MPI_Intercomm_create(MPI_Comm comm_local,int leader_local,MPI_Comm comm_lien,int leader_distant,int tag,MPI_Comm *nouvel_intercom)

  • Nombre de processus dans un intracommunicateur :
    int MPI_Comm_size(MPI_Comm comm,int *nbre)

  • Nombre de processus dans un intercommunicateur :
    int MPI_Comm_remote_size(MPI_Comm intercomm,int *nbre)

  • Rang d'un processus dans un intracommunicateur :
    int MPI_Comm_rank(MPI_Comm comm,int *rang)

  • Duplication d'un communicateur :
    int MPI_Comm_dup(MPI_Comm comm,MPI_Comm *newcomm)

  • Comparaison de deux communicateurs :
    int MPI_Comm_compare(MPI_Comm comm1,MPI_Comm comm2,int *result)

  • Partage d'un communicateur :
    int MPI_Comm_split(MPI_Comm comm,int couleur,int clé,MPI_Comm *newcomm)

  • Libérer un communicateur :
    int MPI_Comm_free(MPI_Comm comm)

7 - Groupes de processus


8 - Topologies de processus


9 - Types dérivés

10 - Constantes

  • Jokers :
    MPI_ANY_TAG, MPI_ANY_SOURCE

  • Datatypes élémentaires :
    MPI_CHAR, MPI_SHORT, MPI_INT, MPI_LONG, MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE, MPI_UNSIGNED, MPI_UNSIGNED_CHAR, MPI_UNSIGNED_SHORT ,MPI_UNSIGNED_LONG, MPI_LOGICAL, MPI_BYTE, MPI_PACKED

  • Constantes reservées :
    MPI_PROC_NULL, MPI_UNDEFINED

  • Communicateurs reservés :
    MPI_COMM_WORLD, MPI_COMM_SELF

  • Opérateurs de MPI_Reduce et MPI_Allreduce :
    MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD, MPI_BAND, MPI_BOR, MPI_BXOR, MPI_LAND, MPI_LOR, MPI_LXOR

  • Résultat de MPI_Comm_Compare et MPI_Group_Compare :
    MPI_CONGRUENT, MPI_IDENT, MPI_SIMILAR, MPI_UNEQUAL

  • Chaines de caractères retournées par MPI_Error_string :

    Code Symptome
    MPI_SUCCESS Pas d'erreurs
    MPI_ERR_BUFFER Pointeur sur zone buffer invalide
    MPI_ERR_COUNT Argument count invalide
    MPI_ERR_TYPE Datatype invalide
    MPI_ERR_TAG Tag de message invalide
    MPI_ERR_COMM Communicateur invalide
    MPI_ERR_RANK Rang de processus invalide
    MPI_ERR_REQUEST Request de communication invalide
    MPI_ERR_ROOT Processus root invalide
    MPI_ERR_GROUP Groupe de processus invalide
    MPI_ERR_OP Opération de réduction impossible
    MPI_ERR_TOPOLOGY Topologie invalide
    MPI_ERR_DIMS Arguments de dimensions invalide
    MPI_ERR_ARG Argument invalide
    MPI_ERR_UNKNOWN Erreur inconnue
    MPI_ERR_TRUNCATE Message tronqué en réception
    MPI_ERR_OTHER Erreur connue non présente dans cette liste
    MPI_ERR_INTERN Erreur interne MPI
    MPI_ERR_IN_STATUS Erreur dans un champ status
    MPI_ERR_PENDING Communication en cours
    MPI_ERR_LASTCODE Dernier code d'erreur
© CNRS-IDRIS 2013