forked from open-mpi/ompi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoshmem_strided_puts.c
54 lines (47 loc) · 1.33 KB
/
oshmem_strided_puts.c
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
/*
* Copyright (c) 2014 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;
start_pes(0);
me = _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 */
return 0;
}