LAPI_Address_init64 Subroutine

Purpose

Creates a 64-bit remote address table.

Library

Availability Library (liblapi_r.a)

C Syntax

#include <lapi.h>
 
int LAPI_Address_init64(hndl, my_addr, add_tab)
lapi_handle_t  hndl;
lapi_long_t    my_addr;
lapi_long_t   *add_tab;

FORTRAN Syntax

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

Description

Type of call: collective communication (blocking)

LAPI_Address_init64 exchanges virtual addresses among a mixture of 32-bit and 64-bit tasks of a parallel application. Use this subroutine to create 64-bit tables of such items as header handlers, target counters, and data buffer addresses.

LAPI_Address_init64 is a collective call over the LAPI handle hndl, which fills the 64-bit table add_tab with the virtual address entries that each task supplies. Collective calls must be made in the same order at all participating tasks.

The addresses that are stored in the table add_tab are passed in using the my_addr parameter. Upon completion of this call, add_tab[i] contains the virtual address entry that was provided by task i. The array is opaque to the user.

Parameters

INPUT
hndl
Specifies the LAPI handle.
my_addr
Specifies the address entry that is supplied by each task. The value of this parameter can be NULL (in C) or LAPI_ADDR_NULL (in FORTRAN). To ensure 32-bit/64-bit interoperability, it is passed as a lapi_long_t type in C.
OUTPUT
add_tab
Specifies the 64-bit address table that contains the 64-bit values supplied by all tasks. add_tab is an array of type lapi_long_t (in C) or LAPI_LONG_LONG_TYPE (in FORTRAN). The size of add_tab is greater than or equal to NUM_TASKS. The value of this parameter cannot be NULL (in C) or LAPI_ADDR_NULL (in FORTRAN).
ierror
Specifies a FORTRAN return code. This is always the last parameter.

C Examples

To collectively transfer target counter addresses for use in a communication API call with a mixed task environment (any combination of 32-bit and 64-bit):
 

lapi_handle_t hndl;                /* the LAPI handle                    */
lapi_long_t   addr_tbl[NUM_TASKS]; /* the table for all tasks' addresses */
lapi_long_t   tgt_cntr;            /* the target counter                 */
      
⋮
      
LAPI_Address_init64(hndl, (lapi_long_t)&tgt_cntr, addr_tbl);
      
/* For communication with task t, use addr_tbl[t] as the address */ 
/* of the target counter. For mixed (32-bit and 64-bit) jobs,    */ 
/* use the LAPI_Xfer subroutine for communication.               */ 
   

Return Values

LAPI_SUCCESS
Indicates that the function call completed successfully.
LAPI_ERR_COLLECTIVE_PSS
Indicates that a collective call was made while in persistent subsystem (PSS) mode.
LAPI_ERR_HNDL_INVALID
Indicates that the hndl passed in is not valid (not initialized or in terminated state).
LAPI_ERR_RET_PTR_NULL
Indicates that the value of the add_tab pointer is NULL (in C) or that the value of add_tab is LAPI_ADDR_NULL (in FORTRAN).

Location

/usr/lib/liblapi_r.a