LAPI_Address_init 子例程

用途

创建远程地址表。

可用性库 (liblapi_r.a)

C 语法

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

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

描述

Type of call: 集合体通信 (分块)

LAPI_Address_init 在并行应用程序的任务之间交换虚拟地址。 使用此子例程来创建诸如头处理程序,目标计数器和数据缓冲区地址之类的项的表。

LAPI_Address_init 是基于 LAPI 句柄 hndl集合体调用 ,它使用每个任务提供的虚拟地址条目填充表 add_tab 。 在所有参与任务中,必须按相同顺序进行集合体调用。

存储在表 add_tab 中的地址是使用 my_addr 参数传入的。 完成此调用后, add_tab [i] 包含由任务 i提供的虚拟地址条目。 数组对用户不透明。

参数

INPUT
hndl
指定 LAPI 句柄。
my_addr
指定每个任务提供的条目。 此参数的值可以是 NULL (在 C 中) 或 LAPI_ADDR_NULL (在 FORTRAN 中)。
输出
add_tab
指定包含要由所有任务提供的地址的地址表。 add_tab 是指针数组,其大小大于或等于 NUM_TASKS。 此参数的值不能为 NULL (在 C 中) 或 LAPI_ADDR_NULL (在 FORTRAN 中)。
ierror
指定 FORTRAN 返回码。 这始终是最后一个参数。

C 示例

要集体传输目标计数器地址以在通信 API 调用中使用,其中所有节点都是 32 位或 64 位:

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           */ 
      
⋮ 
对于 32 位和 64 位节点的组合,请使用 LAPI_Address_init64

返回值

成功 (LAPI_SUCCESS)
指示函数调用已成功完成。
LAPI_ERR_COLLECTIVE_PSS
指示在持久子系统 (PSS) 方式下进行了集合体调用。
LAPI_ERR_HNDL_INVALID
指示传入的 hndl 无效 (未初始化或处于终止状态)。
LAPI_ERR_RET_PTR_NULL
指示 add_tab 指针的值为 NULL (在 C 中) 或 add_tab 的值为 LAPI_ADDR_NULL (在 FORTRAN 中)。

位置

/usr/lib/liblapi_r.a