LAPI_Address_init Sous-routine

Objectif

Crée une table d'adresses distante.

Bibliothèque

Bibliothèque de disponibilité (liblapi_r.a)

Syntaxe C

#include <lapi.h>
 
int LAPI_Address_init(hndl, my_addr, add_tab)
lapi_handle_t  hndl;
void          *my_addr;
void          *add_tab[ ];

Syntaxe FORTRAN

include 'lapif.h'
 
LAPI_ADDRESS_INIT(hndl, my_addr, add_tab, ierror)
INTEGER hndl
INTEGER (KIND=LAPI_ADDR_TYPE) :: my_addr
INTEGER (KIND=LAPI_ADDR_TYPE) :: add_tab(*)
INTEGER ierror

Descriptif

Communication de la collectivité Type of call: (blocage)

LAPI_Address_init échange des adresses virtuelles entre les tâches d'une application parallèle. Utilisez cette sous-routine pour créer des tables d'éléments tels que des gestionnaires d'en-tête, des compteurs cible et des adresses de mémoire tampon de données.

LAPI_Address_init est un appel de collectivité via le descripteur LAPI hndl, qui remplit la table add_tab avec les entrées d'adresse virtuelle fournies par chaque tâche. Les appels collectifs doivent être effectués dans le même ordre pour toutes les tâches participantes.

Les adresses stockées dans la table add_tab sont transmises à l'aide du paramètre my_addr . Une fois cet appel terminé, add_tab [ i ] contient l'entrée d'adresse virtuelle fournie par la tâche i. Le tableau est opaque pour l'utilisateur.

Paramètres

ENTREE
hndl
Indique le descripteur LAPI.
mon_adresse
Indique l'entrée fournie par chaque tâche. La valeur de ce paramètre peut être NULL (en C) ou LAPI_ADDR_NULL (en FORTRAN).
Sortie
onglet supplémentaire
Indique la table d'adresses contenant les adresses qui doivent être fournies par toutes les tâches. add_tab est un tableau de pointeurs dont la taille est supérieure ou égale à NUM_TASKS. La valeur de ce paramètre ne peut pas être NULL (en C) ou LAPI_ADDR_NULL (en FORTRAN).
erreur ierror
Indique un code retour FORTRAN. Il s'agit toujours du dernier paramètre.

Exemples C

Pour transférer collectivement des adresses de compteur cible à utiliser dans un appel d'API de communication, dans lequel tous les noeuds sont 32 bits ou 64 bits:

lapi_handle_t  hndl;                /* the LAPI handle                    */
void          *addr_tbl[NUM_TASKS]; /* the table for all tasks' addresses */
lapi_cntr_t    tgt_cntr;            /* the target counter                 */
      
⋮
      
LAPI_Address_init(hndl, (void *)&tgt_cntr, addr_tbl);
      
/* for communication with task t, use addr_tbl[t] */ 
/* as the address of the target counter           */ 
      
⋮ 
Pour une combinaison de noeuds 32 bits et 64 bits, utilisez LAPI_Address_init64.

Valeurs renvoyées

SUCCÈS_LAPIEU
Indique que l'appel de fonction a abouti.
LAPI_ERR_COLLECTIVE_PSS
Indique qu'un appel de collectivité a été effectué en mode de sous-système persistant (PSS).
LAPI_ERR_HNDL_INVALID
Indique que le hndl transmis n'est pas valide (non initialisé ou à l'état arrêté).
LAPI_ERR_RET_PTR_NULL
Indique que la valeur du pointeur add_tab est NULL (en C) ou que la valeur de add_tab est LAPI_ADDR_NULL (en FORTRAN).

Emplacement

/usr/lib/liblapi_r.a