oshmem: Align OSHMEM API with spec v1.3 (Add mans for nonblocking put/get Fortran functions)
Этот коммит содержится в:
родитель
70139147ab
Коммит
e59bf31d6b
@ -187,7 +187,38 @@ shmem_api_man_pages = \
|
|||||||
shmem/man/man3/shmem_clear_cache_line_inv.3 \
|
shmem/man/man3/shmem_clear_cache_line_inv.3 \
|
||||||
shmem/man/man3/shmem_info_get_name.3 \
|
shmem/man/man3/shmem_info_get_name.3 \
|
||||||
shmem/man/man3/shmem_info_get_version.3 \
|
shmem/man/man3/shmem_info_get_version.3 \
|
||||||
shmem/man/man3/shmem_global_exit.3
|
shmem/man/man3/shmem_global_exit.3 \
|
||||||
|
\
|
||||||
|
shmem/man/man3/shmem_getmem_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_char_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_short_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_int_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_long_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_longlong_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_float_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_double_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_longdouble_get_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_get8_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_get16_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_get32_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_get64_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_get128_nbi.3 \
|
||||||
|
\
|
||||||
|
shmem/man/man3/shmem_putmem_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_char_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_short_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_int_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_long_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_longlong_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_float_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_double_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_longdouble_put_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_put8_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_put16_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_put32_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_put64_nbi.3 \
|
||||||
|
shmem/man/man3/shmem_put128_nbi.3
|
||||||
|
|
||||||
|
|
||||||
if PROJECT_OSHMEM
|
if PROJECT_OSHMEM
|
||||||
nodist_man_MANS += $(shmem_api_man_pages)
|
nodist_man_MANS += $(shmem_api_man_pages)
|
||||||
|
1
oshmem/shmem/man/man3/shmem_char_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_char_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_char_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_char_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_double_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_double_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_double_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_double_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_float_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_float_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_float_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_float_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_get128_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_get128_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_get16_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_get16_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_get32_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_get32_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_get64_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_get64_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_get8_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_get8_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
168
oshmem/shmem/man/man3/shmem_getmem_nbi.3in
Обычный файл
168
oshmem/shmem/man/man3/shmem_getmem_nbi.3in
Обычный файл
@ -0,0 +1,168 @@
|
|||||||
|
.\" -*- nroff -*-
|
||||||
|
.\" Copyright (c) 2016 Mellanox Technologies, Inc.
|
||||||
|
.\" $COPYRIGHT$
|
||||||
|
.de Vb
|
||||||
|
.ft CW
|
||||||
|
.nf
|
||||||
|
..
|
||||||
|
.de Ve
|
||||||
|
.ft R
|
||||||
|
|
||||||
|
.fi
|
||||||
|
..
|
||||||
|
.TH "SHMEM\\_GET\\_NBI" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
||||||
|
.SH NAME
|
||||||
|
|
||||||
|
\fIshmem_getmem_nbi\fP(3),
|
||||||
|
\fIshmem_char_get_nbi\fP(3),
|
||||||
|
\fIshmem_short_get_nbi\fP(3),
|
||||||
|
\fIshmem_int_get_nbi\fP(3),
|
||||||
|
\fIshmem_long_get_nbi\fP(3),
|
||||||
|
\fIshmem_longlong_get_nbi\fP(3),
|
||||||
|
\fIshmem_float_get_nbi\fP(3),
|
||||||
|
\fIshmem_double_get_nbi\fP(3),
|
||||||
|
\fIshmem_longdouble_get_nbi\fP(3),
|
||||||
|
\fIshmem_get8_nbi\fP(3),
|
||||||
|
\fIshmem_get16_nbi\fP(3),
|
||||||
|
\fIshmem_get32_nbi\fP(3),
|
||||||
|
\fIshmem_get64_nbi\fP(3),
|
||||||
|
\fIshmem_get128_nbi\fP(3),
|
||||||
|
\- The nonblocking get routines provide a method for copying data from a contiguous remote data object on the specified PE to the local data object.
|
||||||
|
.SH SYNOPSIS
|
||||||
|
|
||||||
|
C or C++:
|
||||||
|
.Vb
|
||||||
|
#include <mpp/shmem.h>
|
||||||
|
|
||||||
|
void shmem_getmem_nbi(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_char_get(char *dest, const char *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_short_get(short *dest, const short *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_int_get(int *dest, const int *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_long_get(long *dest, const long *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_longlong_get(long long *dest, const long long *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_float_get(float *dest, const float *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_double_get(double *dest, const double *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_longdouble_get(long double *dest, const long double *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_get8(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_get16(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_get32(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_get64(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_get128(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
.Ve
|
||||||
|
Fortran:
|
||||||
|
.Vb
|
||||||
|
INCLUDE "mpp/shmem.fh"
|
||||||
|
|
||||||
|
INTEGER nelems, pe
|
||||||
|
|
||||||
|
CALL SHMEM_GETMEM_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_CHARACTER_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_COMPLEX_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_DOUBLE_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_INTEGER_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_LOGICAL_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_REAL_GET_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_GET4_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_GET8_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_GET32_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_GET64_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_GET128_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
.Ve
|
||||||
|
.SH DESCRIPTION
|
||||||
|
|
||||||
|
The get routines provide a method for copying a contiguous symmetric data
|
||||||
|
object from a different PE to a contiguous data object on the local PE.
|
||||||
|
The routines return after posting the operation. The operation is
|
||||||
|
considered complete after a subsequent call to shmem_quiet. At the completion
|
||||||
|
of shmem_quiet, the data has been delivered to the dest array on the local PE.
|
||||||
|
.PP
|
||||||
|
The arguments are as follows:
|
||||||
|
.TP
|
||||||
|
dest
|
||||||
|
Local data object to be updated.
|
||||||
|
.TP
|
||||||
|
source
|
||||||
|
Data object on the PE identified by pe that contains the data to be copied. This
|
||||||
|
data object must be remotely accessible.
|
||||||
|
.TP
|
||||||
|
nelems
|
||||||
|
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
|
||||||
|
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).
|
||||||
|
.SH NOTES
|
||||||
|
|
||||||
|
See \fIintro_shmem\fP(3)
|
||||||
|
for a definition of the term remotely accessible.
|
||||||
|
.SH EXAMPLES
|
||||||
|
|
||||||
|
Consider this simple example for Fortran.
|
||||||
|
.Vb
|
||||||
|
PROGRAM REDUCTION
|
||||||
|
REAL VALUES, SUM
|
||||||
|
COMMON /C/ VALUES
|
||||||
|
REAL WORK
|
||||||
|
|
||||||
|
CALL START_PES(0) ! ALLOW ANY NUMBER OF PES
|
||||||
|
VALUES = MY_PE() ! INITIALIZE IT TO SOMETHING
|
||||||
|
CALL SHMEM_BARRIER_ALL
|
||||||
|
SUM = 0.0
|
||||||
|
DO I = 0,NUM_PES()\-1
|
||||||
|
CALL SHMEM_REAL_GET_NBI(WORK, VALUES, 1, I)
|
||||||
|
CALL SHMEM_QUIET ! wait for delivery
|
||||||
|
SUM = SUM + WORK
|
||||||
|
ENDDO
|
||||||
|
PRINT *, 'PE ', MY_PE(), ' COMPUTED SUM=', SUM
|
||||||
|
CALL SHMEM_BARRIER_ALL
|
||||||
|
END
|
||||||
|
.Ve
|
||||||
|
.SH SEE ALSO
|
||||||
|
|
||||||
|
\fIintro_shmem\fP(3),
|
||||||
|
\fIshmem_quiet\fP(3)
|
1
oshmem/shmem/man/man3/shmem_int_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_int_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_int_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_int_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_long_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_long_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_long_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_long_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_longdouble_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_longdouble_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_longdouble_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_longdouble_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_longlong_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_longlong_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_longlong_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_longlong_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_put128_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_put128_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_put16_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_put16_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_put32_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_put32_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_put64_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_put64_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_put8_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_put8_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
171
oshmem/shmem/man/man3/shmem_putmem_nbi.3in
Обычный файл
171
oshmem/shmem/man/man3/shmem_putmem_nbi.3in
Обычный файл
@ -0,0 +1,171 @@
|
|||||||
|
.\" -*- nroff -*-
|
||||||
|
.\" Copyright (c) 2016 Mellanox Technologies, Inc.
|
||||||
|
.\" $COPYRIGHT$
|
||||||
|
.de Vb
|
||||||
|
.ft CW
|
||||||
|
.nf
|
||||||
|
..
|
||||||
|
.de Ve
|
||||||
|
.ft R
|
||||||
|
|
||||||
|
.fi
|
||||||
|
..
|
||||||
|
.TH "SHMEM\\_PUT\\_NBI" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
||||||
|
.SH NAME
|
||||||
|
|
||||||
|
\fIshmem_putmem_nbi\fP(3),
|
||||||
|
\fIshmem_char_put_nbi\fP(3),
|
||||||
|
\fIshmem_short_put_nbi\fP(3),
|
||||||
|
\fIshmem_int_put_nbi\fP(3),
|
||||||
|
\fIshmem_long_put_nbi\fP(3),
|
||||||
|
\fIshmem_longlong_put_nbi\fP(3),
|
||||||
|
\fIshmem_float_put_nbi\fP(3),
|
||||||
|
\fIshmem_double_put_nbi\fP(3),
|
||||||
|
\fIshmem_longdouble_put_nbi\fP(3),
|
||||||
|
\fIshmem_put8_nbi\fP(3),
|
||||||
|
\fIshmem_put16_nbi\fP(3),
|
||||||
|
\fIshmem_put32_nbi\fP(3),
|
||||||
|
\fIshmem_put64_nbi\fP(3),
|
||||||
|
\fIshmem_put128_nbi\fP(3),
|
||||||
|
\- The nonblocking put routines provide a method for copying data from a contiguous local data object to a data object on a specified PE.
|
||||||
|
.SH SYNOPSIS
|
||||||
|
|
||||||
|
C or C++:
|
||||||
|
.Vb
|
||||||
|
#include <mpp/shmem.h>
|
||||||
|
|
||||||
|
void shmem_putmem_nbi(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_char_put(char *dest, const char *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_short_put(short *dest, const short *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_int_put(int *dest, const int *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_long_put(long *dest, const long *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_longlong_put(long long *dest, const long long *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_float_put(float *dest, const float *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_double_put(double *dest, const double *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_longdouble_put(long double *dest, const long double *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_put8(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_put16(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_put32(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_put64(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
void shmem_put128(void *dest, const void *source,
|
||||||
|
size_t nelems, int pe);
|
||||||
|
|
||||||
|
.Ve
|
||||||
|
Fortran:
|
||||||
|
.Vb
|
||||||
|
INCLUDE "mpp/shmem.fh"
|
||||||
|
|
||||||
|
INTEGER nelems, pe
|
||||||
|
|
||||||
|
CALL SHMEM_PUTMEM_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_CHARACTER_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_COMPLEX_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_DOUBLE_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_INTEGER_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_LOGICAL_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_REAL_PUT_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_PUT4_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_PUT8_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_PUT32_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_PUT64_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
CALL SHMEM_PUT128_NBI(dest, source, nelems, pe)
|
||||||
|
|
||||||
|
.Ve
|
||||||
|
.SH DESCRIPTION
|
||||||
|
|
||||||
|
The routines return after posting the operation. The operation is considered
|
||||||
|
complete after a subsequent call to shmem_quiet. At the completion of shmem_quiet,
|
||||||
|
the data has been copied into the dest array on the destination PE.
|
||||||
|
The delivery of data words into the data object on the destination PE may occur
|
||||||
|
in any order. Furthermore, two successive put routines may deliver data out of
|
||||||
|
order unless a call to shmem_fence is introduced between the two calls.
|
||||||
|
.PP
|
||||||
|
The arguments are as follows:
|
||||||
|
.TP
|
||||||
|
dest
|
||||||
|
Data object to be updated on the remote PE. This data object must be
|
||||||
|
remotely accessible.
|
||||||
|
.TP
|
||||||
|
source
|
||||||
|
Data object containing the data to be copied.
|
||||||
|
.TP
|
||||||
|
nelems
|
||||||
|
Number of elements in the dest and source arrays. nelems must be
|
||||||
|
of type size_t for C. 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
|
||||||
|
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).
|
||||||
|
.SH NOTES
|
||||||
|
|
||||||
|
See \fIintro_shmem\fP(3)
|
||||||
|
for a definition of the term remotely accessible.
|
||||||
|
.SH EXAMPLES
|
||||||
|
|
||||||
|
Consider this simple example for Fortran.
|
||||||
|
.Vb
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <mpp/shmem.h>
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
long source[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
||||||
|
static long target[10];
|
||||||
|
shmem_init();
|
||||||
|
|
||||||
|
if (shmem_my_pe() == 0) {
|
||||||
|
/* put 10 words into target on PE 1 */
|
||||||
|
shmem_long_put_nbi(target, source, 10, 1);
|
||||||
|
shmem_quiet();
|
||||||
|
}
|
||||||
|
shmem_barrier_all(); /* sync sender and receiver */
|
||||||
|
if (shmem_my_pe() == 1)
|
||||||
|
shmem_udcflush(); /* not required on Altix systems */
|
||||||
|
printf("target[0] on PE %d is %d\\n", shmem_my_pe(), target[0]);
|
||||||
|
}
|
||||||
|
.Ve
|
||||||
|
.SH SEE ALSO
|
||||||
|
|
||||||
|
\fIintro_shmem\fP(3),
|
||||||
|
\fIshmem_quiet\fP(3)
|
1
oshmem/shmem/man/man3/shmem_short_get_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_short_get_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_getmem_nbi.3
|
1
oshmem/shmem/man/man3/shmem_short_put_nbi.3in
Обычный файл
1
oshmem/shmem/man/man3/shmem_short_put_nbi.3in
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
.so man3/shmem_putmem_nbi.3
|
Загрузка…
Ссылка в новой задаче
Block a user