18.2.140. shmem_longdouble_iget

shmem_complex_iget(3), shmem_double_iget(3), shmem_float_iget(3), shmem_iget4(3), shmem_iget8(3), shmem_iget32(3), shmem_iget64(3), shmem_iget128(3), shmem_int_iget(3), shmem_integer_iget(3), shmem_logical_iget(3), shmem_long_iget(3), shmem_longdouble_iget(3), shmem_longlong_iget(3), shmem_real_iget(3), shmem_short_iget(3) - 从指定的处理单元(PE)传输跨步数据

18.2.140.1. 概述

C或C++:

#include <mpp/shmem.h>

void shmem_iget32(void *target, const void *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_iget64(void *target, const void *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_iget128(void *target, const void *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_int_iget(int *target, const int *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_double_iget(double *target, const double *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_float_iget(float *target, const float *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_long_iget(long *target, const long *source,
  ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_longdouble_iget(long double *target,
  const long double *source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe)

void shmem_longlong_iget(long long *target,
  const long long *source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

void shmem_short_iget(short *target,
  const short *source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)

Fortran语言:

INCLUDE "mpp/shmem.fh"

INTEGER tst, sst, len, pe

CALL SHMEM_COMPLEX_IGET(target, source, tst, sst, len,
& pe)

CALL SHMEM_DOUBLE_IGET(target, source, tst, sst, len,
& pe)

CALL SHMEM_IGET4(target, source, tst, sst, len, pe)

CALL SHMEM_IGET8(target, source, tst, sst, len, pe)

CALL SHMEM_IGET32(target, source, tst, sst, len, pe)

CALL SHMEM_IGET64(target, source, tst, sst, len, pe)

CALL SHMEM_IGET128(target, source, tst, sst, len, pe)

CALL SHMEM_INTEGER_IGET(target, source, tst, sst, len,
& pe)

CALL SHMEM_LOGICAL_IGET(target, source, tst, sst, len,
& pe)

CALL SHMEM_REAL_IGET(target, source, tst, sst, len, pe)

18.2.140.2. 描述

strided get例程用于从远程PE(pe)上的源地址(source)获取数组数据。source数组中的元素通过步长sst进行分隔。当数据接收完成后,将被存储到本地内存地址target处,并通过步长tst进行分隔。这些例程会在数据被复制到本地target数组后返回。

参数如下:

target

要在本地PE上更新的数组。

source

包含要在远程PE上复制的数据的数组。

tst

目标数组中连续元素之间的跨度。该跨度会根据目标数组的元素大小进行缩放。值为1表示数据是连续的。tst必须为整数类型。如果从Fortran调用,则必须为默认整数值。

sst

源数组中连续元素之间的跨度。该跨度会根据源数组的元素大小进行缩放。值为1表示数据是连续的。sst必须为整数类型。如果从Fortran调用,则必须为默认整数值。

len

目标数组和源数组中的元素数量。len必须是整数类型。如果使用Fortran,它必须是默认整数类型的常量、变量或数组元素。

pe

远程PE的编号。pe必须为整数类型。如果使用Fortran,它必须是默认整数类型的常量、变量或数组元素。

目标与源数据对象必须符合以下类型约束条件:

shmem_iget32, shmem_iget4: Any noncharacter type that has a storage size

等于32位。

shmem_iget64, shmem_iget8: Any noncharacter type that has a storage size

等于64位。

shmem_iget128: Any noncharacter type that has a storage size equal to

128位。

shmem_short_iget: 短整型元素。

shmem_int_iget: 整型元素。

shmem_long_iget: 长整型元素。

shmem_longlong_iget: 长整型(long long)元素。

shmem_float_iget: 浮点型元素。

shmem_double_iget: 双精度浮点类型的元素。

shmem_longdouble_iget: 长双精度类型的元素。

SHMEM_COMPLEX_IGET: 默认大小的复数类型元素。

SHMEM_DOUBLE_IGET: (Fortran) 双精度类型的元素。

SHMEM_INTEGER_IGET: 整数类型的元素。

SHMEM_LOGICAL_IGET: 逻辑类型的元素。

SHMEM_REAL_IGET: 实数类型的元素。

shmem_longdouble_iget: 长双精度类型的元素。

SHMEM_COMPLEX_IGET: 默认大小的复数类型元素。

SHMEM_DOUBLE_IGET: (Fortran) 双精度类型的元素。

SHMEM_INTEGER_IGET: 整数类型的元素。

SHMEM_LOGICAL_IGET: 逻辑类型的元素。

SHMEM_REAL_IGET: 实数类型的元素。

如果您使用Fortran语言,数据类型必须采用默认大小。例如,实数变量必须声明为REAL、REAL*4或REAL(KIND=4)。

18.2.140.3. 注意事项

关于"远程可访问"这一术语的定义,请参阅intro_shmem(3)。

18.2.140.4. 示例

以下简单示例展示了在Fortran程序中使用shmem_logical_iget的情况。编译此示例时请使用-lsma编译器选项。

PROGRAM STRIDELOGICAL
  LOGICAL SOURCE(10), TARGET(5)
  SAVE SOURCE ! SAVE MAKES IT REMOTELY ACCESSIBLE
  DATA SOURCE /.T.,.F.,.T.,.F.,.T.,.F.,.T.,.F.,.T.,.F./
  DATA TARGET / 5*.F. /

  CALL START_PES(2)
  IF (MY_PE() .EQ. 0) THEN
    CALL SHMEM_LOGICAL_IGET(TARGET, SOURCE, 1, 2, 5, 1)
    PRINT*,'TARGET AFTER SHMEM_LOGICAL_IGET:',TARGET
  ENDIF
  CALL SHMEM_BARRIER_ALL
END

另请参阅

intro_shmem(3) shmem_get(3) shmem_quiet(3)