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