218 строки
6.2 KiB
Plaintext
218 строки
6.2 KiB
Plaintext
|
.\" -*- nroff -*-
|
||
|
.\" Copyright (c) 2015 University of Houston. All rights reserved.
|
||
|
.\" Copyright (c) 2015 Mellanox Technologies, Inc.
|
||
|
.\" $COPYRIGHT$
|
||
|
.de Vb
|
||
|
.ft CW
|
||
|
.nf
|
||
|
..
|
||
|
.de Ve
|
||
|
.ft R
|
||
|
|
||
|
.fi
|
||
|
..
|
||
|
.TH "SHMEM\\_IGET" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
||
|
.SH NAME
|
||
|
|
||
|
\fIshmem_complex_iget\fP(3),
|
||
|
\fIshmem_double_iget\fP(3),
|
||
|
\fIshmem_float_iget\fP(3),
|
||
|
\fIshmem_iget4\fP(3),
|
||
|
\fIshmem_iget8\fP(3),
|
||
|
\fIshmem_iget32\fP(3),
|
||
|
\fIshmem_iget64\fP(3),
|
||
|
\fIshmem_iget128\fP(3),
|
||
|
\fIshmem_int_iget\fP(3),
|
||
|
\fIshmem_integer_iget\fP(3),
|
||
|
\fIshmem_logical_iget\fP(3),
|
||
|
\fIshmem_long_iget\fP(3),
|
||
|
\fIshmem_longdouble_iget\fP(3),
|
||
|
\fIshmem_longlong_iget\fP(3),
|
||
|
\fIshmem_real_iget\fP(3),
|
||
|
\fIshmem_short_iget\fP(3)
|
||
|
\- Transfers strided data from a specified processing element (PE)
|
||
|
.SH SYNOPSIS
|
||
|
|
||
|
C or C++:
|
||
|
.Vb
|
||
|
#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);
|
||
|
.Ve
|
||
|
Fortran:
|
||
|
.Vb
|
||
|
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)
|
||
|
.Ve
|
||
|
.SH DESCRIPTION
|
||
|
|
||
|
The strided get routines retrieve array data available at address source on remote PE (pe).
|
||
|
The elements of the \fBsource\fP
|
||
|
array are separated by a stride \fBsst\fP\&.
|
||
|
Once the data is received,
|
||
|
it is stored at the local memory address \fBtarget\fP,
|
||
|
separated by stride \fBtst\fP\&.
|
||
|
The routines return
|
||
|
when the data has been copied into the local \fBtarget\fP
|
||
|
array.
|
||
|
.PP
|
||
|
The arguments are as follows:
|
||
|
.TP
|
||
|
target
|
||
|
Array to be updated on the local PE.
|
||
|
.TP
|
||
|
source
|
||
|
Array containing the data to be copied on the remote PE.
|
||
|
.TP
|
||
|
tst
|
||
|
The stride between consecutive elements of the target array. The stride is scaled by
|
||
|
the element size of the target array. A value of 1 indicates contiguous data. tst must be of
|
||
|
type integer. If you are calling from Fortran, it must be a default integer value.
|
||
|
.TP
|
||
|
sst
|
||
|
The stride between consecutive elements of the source array. The stride is scaled
|
||
|
by the element size of the source array. A value of 1 indicates contiguous data. sst must be
|
||
|
of type integer. If you are calling from Fortran, it must be a default integer value.
|
||
|
.TP
|
||
|
len
|
||
|
Number of elements in the target and source arrays. len must be of type integer. If
|
||
|
you are using Fortran, it must be a constant, variable, or array element of default integer
|
||
|
type.
|
||
|
.TP
|
||
|
pe
|
||
|
PE number of the remote PE. pe must be of type integer. If you are using Fortran, it
|
||
|
must be a constant, variable, or array element of default integer type.
|
||
|
.PP
|
||
|
The target and source data objects must conform to typing constraints, which are as
|
||
|
follows:
|
||
|
.TP
|
||
|
\fBshmem_iget32, shmem_iget4\fP: Any noncharacter type that has a storage size
|
||
|
equal to 32 bits.
|
||
|
.TP
|
||
|
\fBshmem_iget64, shmem_iget8\fP: Any noncharacter type that has a storage size
|
||
|
equal to 64 bits.
|
||
|
.TP
|
||
|
\fBshmem_iget128\fP: Any noncharacter type that has a storage size equal to
|
||
|
128 bits.
|
||
|
.TP
|
||
|
\fBshmem_short_iget\fP: Elements of type short.
|
||
|
.TP
|
||
|
\fBshmem_int_iget\fP: Elements of type int.
|
||
|
.TP
|
||
|
\fBshmem_long_iget\fP: Elements of type long.
|
||
|
.TP
|
||
|
\fBshmem_longlong_iget\fP: Elements of type long long.
|
||
|
.TP
|
||
|
\fBshmem_float_iget\fP: Elements of type float.
|
||
|
.TP
|
||
|
\fBshmem_double_iget\fP: Elements of type double.
|
||
|
.TP
|
||
|
\fBshmem_longdouble_iget\fP: Elements of type long double.
|
||
|
.TP
|
||
|
\fBSHMEM_COMPLEX_IGET\fP: Elements of type complex of default size.
|
||
|
.TP
|
||
|
\fBSHMEM_DOUBLE_IGET\fP: (Fortran) Elements of type double precision.
|
||
|
.TP
|
||
|
\fBSHMEM_INTEGER_IGET\fP: Elements of type integer.
|
||
|
.TP
|
||
|
\fBSHMEM_LOGICAL_IGET\fP: Elements of type logical.
|
||
|
.TP
|
||
|
\fBSHMEM_REAL_IGET\fP: Elements of type real.
|
||
|
.TP
|
||
|
\fBshmem_longdouble_iget\fP: Elements of type long double.
|
||
|
.TP
|
||
|
\fBSHMEM_COMPLEX_IGET\fP: Elements of type complex of default size.
|
||
|
.TP
|
||
|
\fBSHMEM_DOUBLE_IGET\fP: (Fortran) Elements of type double precision.
|
||
|
.TP
|
||
|
\fBSHMEM_INTEGER_IGET\fP: Elements of type integer.
|
||
|
.TP
|
||
|
\fBSHMEM_LOGICAL_IGET\fP: Elements of type logical.
|
||
|
.TP
|
||
|
\fBSHMEM_REAL_IGET\fP: Elements of type real.
|
||
|
.PP
|
||
|
If you are using Fortran, data types must be of default size. For example, a real variable must
|
||
|
be declared as REAL, REAL*4, or REAL(KIND=4).
|
||
|
.PP
|
||
|
.SH NOTES
|
||
|
|
||
|
See \fIintro_shmem\fP(3)
|
||
|
for a definition of the term remotely accessible.
|
||
|
.PP
|
||
|
.SH EXAMPLES
|
||
|
|
||
|
The following simple example uses shmem_logical_iget in a Fortran program. Compile
|
||
|
this example with the \-lsma compiler option.
|
||
|
.Vb
|
||
|
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
|
||
|
.Ve
|
||
|
.SH SEE ALSO
|
||
|
|
||
|
\fIintro_shmem\fP(3),
|
||
|
\fIshmem_get\fP(3),
|
||
|
\fIshmem_quiet\fP(3)
|