/* * Copyright (c) 2014-2016 Mellanox Technologies, Inc. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ * * reduce [0,1,2] + _my_pe() across 4 PEs with MAX() */ #include #include #include long pSync[_SHMEM_BCAST_SYNC_SIZE]; #define N 3 long src[N]; long dst[N]; long pWrk[_SHMEM_REDUCE_SYNC_SIZE]; int main(void) { int i; int my_pe, num_pes; for (i = 0; i < SHMEM_BCAST_SYNC_SIZE; i += 1) { pSync[i] = _SHMEM_SYNC_VALUE; } shmem_init(); my_pe = shmem_my_pe(); num_pes = shmem_n_pes(); for (i = 0; i < N; i += 1) { src[i] = my_pe + i; } shmem_barrier_all(); shmem_long_max_to_all(dst, src, N, 0, 0, num_pes, pWrk, pSync); printf("%d/%d dst =", my_pe, num_pes); for (i = 0; i < N; i+= 1) { printf(" %ld", dst[i]); } printf("\n"); shmem_finalize(); return 0; }