File: oshmem_strided_puts.c

package info (click to toggle)
openmpi 3.1.3-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,572 kB
  • sloc: ansic: 628,972; f90: 17,993; makefile: 13,761; sh: 7,051; java: 6,360; perl: 3,215; cpp: 2,225; python: 1,350; lex: 988; fortran: 52; tcl: 12
file content (55 lines) | stat: -rw-r--r-- 1,393 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
 * Copyright (c) 2014-2016 Mellanox Technologies, Inc.
 *                         All rights reserved.
 * $COPYRIGHT$
 *
 * Additional copyrights may follow
 *
 * $HEADER$
 *
 * This program is an adaptation of examples found in the man pages
 * of SGI’s SHMEM implementation.
 *
 * In this program, iput is used to select 5 elements from array source separated by
 * a stride of 2 and write them to array target using a stride of 1.
 *
 * Given the array source = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
 * iput will select 5 elements from array source on PE 0, using a stride of 2:
 *
 * selected elements = { 1, 3, 5, 7, 9 }
 *
 * These elements will then be written to the array source on PE 1 using a stride of 1:
 *
 * target = { 1, 3, 5, 7, 9 }
 *
 */

#include <stdio.h>
#include <shmem.h>

int main(void)
{
    short source[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    static short target[10];
    int me;

    shmem_init();
    me = shmem_my_pe();

    if (me == 0) {
        /* put 10 words into target on PE 1 */
        shmem_short_iput(target, source, 1, 2, 5, 1);
    }

    shmem_barrier_all(); /* sync sender and receiver */

    if (me == 1) {
        printf("target on PE %d is %hd %hd %hd %hd %hd\n", me,
        target[0], target[1], target[2],
        target[3], target[4] );
    }
    shmem_barrier_all(); /* sync before exiting */
    shmem_finalize();

    return 0;
}