/* StarPU --- Runtime system for heterogeneous multicore architectures. * * Copyright (C) 2012 Centre National de la Recherche Scientifique * * StarPU is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or (at * your option) any later version. * * StarPU is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU Lesser General Public License in COPYING.LGPL for more details. */ #include #include #include //#define STARPU_MPI_VERBOSE 1 #include /* measure the amount of data transfers between each pair of MPI nodes */ #ifdef STARPU_COMM_STATS static size_t **comm_amount; static int world_size; #endif /* STARPU_COMM_STATS */ void _starpu_mpi_comm_amounts_init() { #ifdef STARPU_COMM_STATS int i; if (!getenv("STARPU_SILENT")) fprintf(stderr,"Warning: StarPU was configured with --enable-comm-stats, which slows down a bit\n"); MPI_Comm_size(MPI_COMM_WORLD, &world_size); _STARPU_MPI_DEBUG("allocating for %d nodes\n", world_size); comm_amount = (size_t **) calloc(1, world_size * sizeof(size_t *)); for(i=0 ; i %d\t%f B\t%f MB\n", src, dst, (float)comm_amount[src][dst] + (float)comm_amount[dst][src], ((float)comm_amount[src][dst] + (float)comm_amount[dst][src])/(1024*1024)); fprintf(stderr, "\t\t%d -> %d\t%f B\t%f MB\n", src, dst, (float)comm_amount[src][dst], ((float)comm_amount[src][dst])/(1024*1024)); fprintf(stderr, "\t\t%d -> %d\t%f B\t%f MB\n", dst, src, (float)comm_amount[dst][src], ((float)comm_amount[dst][src])/(1024*1024)); } } #endif /* STARPU_COMM_STATS */ }