LAPI_Address_init64 子例程
用途
创建 64 位远程地址表。
库
可用性库 (liblapi_r.a)
C 语法
#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 语法
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描述
Type of call: 集合体通信 (分块)
LAPI_Address_init64 在并行应用程序的 32 位和 64 位任务的混合中交换虚拟地址。 使用此子例程来创建诸如头处理程序,目标计数器和数据缓冲区地址之类的项的 64 位表。
LAPI_Address_init64 是基于 LAPI 句柄 hndl的 集合体调用 ,它使用每个任务提供的虚拟地址条目填充 64 位表 add_tab 。 在所有参与任务中,必须按相同顺序进行集合体调用。
存储在表 add_tab 中的地址是使用 my_addr 参数传入的。 完成此调用后, add_tab [i] 包含由任务 i提供的虚拟地址条目。 数组对用户不透明。
参数
- INPUT
- hndl
- 指定 LAPI 句柄。
- my_addr
- 指定每个任务提供的地址条目。 此参数的值可以是 NULL (在 C 中) 或 LAPI_ADDR_NULL (在 FORTRAN 中)。 为确保 32-bit/64-bit 互操作性,在 C 中作为 lapi_long_t 类型传递。
- 输出
- add_tab
- 指定包含所有任务提供的 64 位值的 64 位地址表。 add_tab 是类型为 lapi_long_t (在 C 中) 或 LAPI_LONG_LONG_TYPE (在 FORTRAN 中) 的数组。 add_tab 的大小大于或等于 NUM_TASKS。 此参数的值不能为 NULL (在 C 中) 或 LAPI_ADDR_NULL (在 FORTRAN 中)。
- ierror
- 指定 FORTRAN 返回码。 这始终是最后一个参数。
C 示例
要集体传输目标计数器地址以在具有混合任务环境 (32 位和 64 位的任意组合) 的通信 API 调用中使用:
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. */
返回值
- 成功 (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