// C Standard Library #include <assert.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> // fmpi #include <fmpi.h> // Internal #include "as.h" #define T int64_t FMPI_TASK_FUTHARK(array_sum, 1) int main(int argc, char * argv[]) { struct fmpi_ctx * ctx = fmpi_init(&argc, &argv); if(ctx == NULL) { fprintf(stderr, "fmpi_init() failed!\n"); return EXIT_FAILURE; } T in[] = { 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,1, 2,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,2, 3,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,3, 4,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,4 }; const size_t in_size = sizeof(in)/sizeof(T); T out = -1; struct fmpi_task array_sum_task = FMPI_REGISTER_SYNC_TASK( ctx, array_sum, fmpi_no_stencil(), fmpi_data_out(ctx, &out), fmpi_data_1d_in(ctx, in, in_size) ); fmpi_task_run_sync(ctx, &array_sum_task); printf("rank=%d sum=%ld\n", fmpi_world_rank(ctx), out); fmpi_exit(&ctx); return EXIT_SUCCESS; }