1
1
openmpi/examples/oshmem_strided_puts.c
Igor Ivanov 07e79441b3 oshmem: Align OSHMEM API with spec v1.2 (change examples)
ring_oshmem_c.c and hello_oshmem_c.c support new api
other examples support legacy api but warning message
is provided during compilation
2015-11-24 18:58:28 +02:00

57 строки
1.4 KiB
C
Исходник Ответственный История

Этот файл содержит неоднозначные символы Юникода

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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 SGIs 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>
#warning This application uses deprecated API see http://www.open-mpi.org/
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;
}