shmem_ptr(3)
shmem_ptr - Returns a pointer to a data object on a specified processing element (PE)
As shipped in IRIX 6.5.30. Last changed in IRIX 6.5.22.
NAME shmem_ptr - Returns a pointer to a data object on a specified processing element (PE) SYNOPSIS C or C++: #include <mpp/shmem.h> void *shmem_ptr(void *target, int pe); Fortran: INCLUDE "mpp/shmem.fh" POINTER (PTR, POINTEE) INTEGER pe PTR = SHMEM_PTR(target, pe) DESCRIPTION shmem_ptr returns the address of target on the specified PE. This address can be assigned to a pointer. After that, ordinary loads and stores to this remote address may be performed. When a sequence of loads (gets) and stores (puts) to a data object on a remote PE does not match the access pattern provided in a SHMEM data transfer routine like shmem_put32(3) or shmem_real_iget(3), the shmem_ptr function can provide an efficient means to accomplish the communication. The arguments are as follows: target The remotely accessible integer data object on the remote PE. pe An integer that indicates the PE number on which target is to be accessed. If you are using Fortran, it must be a default integer value. EXAMPLES This two-PE Fortran program calls shmem_ptr: PROGRAM PEEK INCLUDE 'mpp/shmem.fh' INTEGER BIGD(100) SAVE BIGD INTEGER POINTEE(*) POINTER (PTR,POINTEE) CALL START_PES(2) IF (MY_PE() .EQ. 0) THEN ! initialize PE 1's BIGD array PTR = SHMEM_PTR(BIGD, 1) ! get address of PE 1's BIGD ! array DO I=1,100 POINTEE(I) = I ENDDO ENDIF CALL SHMEM_BARRIER_ALL IF (MY_PE() .EQ. 1) THEN PRINT*,'BIGD on PE 1 is: ' PRINT*,BIGD ENDIF END This two-PE C program calls shmem_ptr: #include <mpp/shmem.h> main() { static int bigd[100]; int *ptr; int i; start_pes(2); if (_my_pe() == 0) { /* initialize PE 1's bigd array */ ptr = shmem_ptr(bigd, 1); for (i=0; i<100; i++) *ptr++ = i+1; } shmem_barrier_all(); if (_my_pe() == 1) { printf("bigd on PE 1 is:\n"); for (i=0; i<100; i++) printf(" %d",bigd[i]); printf("\n"); } } NOTES The shmem_ptr function is available only on systems where ordinary memory loads and stores are used to implement SHMEM put and get operations. RETURN VALUES shmem_ptr returns a pointer to the data object on the specified remote PE. If target is not remotely accessible, a NULL pointer is returned. SEE ALSO intro_shmem(3), shmem_put(3), shmem_get(3),