Changeset 5717 in /cluster/svnroot


Ignore:
Timestamp:
Jun 5, 2016 3:17:46 PM (4 years ago)
Author:
skylar
Message:

fix MPI_Gather send count

Location:
bccd-ng/bw-institute/2016/day06/matmul
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bccd-ng/bw-institute/2016/day06/matmul/Makefile

    r5716 r5717  
    11# $Id$
    22
    3 CC                      = gcc
    4 MPICC           = mpicc
    5 CFLAGS          = -Wall
     3CC                      = cc
     4MPICC           = cc
     5CFLAGS          =
    66MPI_FLAGS       = -D_MPI
    77ifeq ($(DEBUG),1)
    8         CFLAGS  += -DDEBUG -gstabs+
     8        CFLAGS  += -DDEBUG
    99endif
    1010ifeq ($(PROFILE),1)
  • bccd-ng/bw-institute/2016/day06/matmul/mpi.c

    r5716 r5717  
    1010int main(int argc,char **argv) {
    1111    int rank,num_ranks,c;
    12     unsigned int start_row,stop_row,stride;
    13     bool print;
     12    unsigned int start_row,stop_row,stride,local_cells,dst_cells;
     13    bool print = false;
    1414    struct matrix m1,m2,local_dst_m,dst_m;
    1515
     
    7878        dst_m.rows      = m1.rows;
    7979        dst_m.cols      = m2.cols;
     80        dst_cells       = dst_m.cols*dst_m.rows;
    8081        dst_m.matrix    = safe_malloc_int(
    81                 dst_m.rows*dst_m.cols,
     82                dst_cells,
    8283                "Allocating destination matrix"
    8384                );
     
    112113    }
    113114    else {
    114         stop_row = m1.rows;
     115        stop_row    = m1.rows;
    115116    }
    116117
    117118    // Only need to allocate enough for the local computation
    118119    local_dst_m.cols        = m2.cols;
    119     local_dst_m.rows        = (stop_row-start_row),
     120    local_dst_m.rows        = stop_row-start_row;
     121    local_cells             = local_dst_m.cols*local_dst_m.rows;
    120122    local_dst_m.matrix      = safe_malloc_int(
    121             local_dst_m.rows*local_dst_m.cols,
     123            local_cells,
    122124            "Allocating local destination matrix"
    123125            );
     
    135137    if(rank == FIRST_RANK) {
    136138        fprintf(stderr,"Rank %d full size: %u\n",rank,(dst_m.cols*dst_m.rows));
     139        fprintf(stderr,"Rank %d gathering to %u cells\n",rank,dst_cells);
    137140    }
     141    fprintf(stderr,"Rank %d gathering from %u cells\n",rank,local_cells);
    138142#endif
    139 
    140143    MPI_Gather(
    141144            &local_dst_m.matrix,
    142             (local_dst_m.cols*local_dst_m.rows),
     145            local_cells,
    143146            MPI_INT,
    144147            &dst_m.matrix,
    145             (dst_m.cols*dst_m.rows),
     148            local_cells,
    146149            MPI_INT,
    147150            FIRST_RANK,
     
    151154    MPI_Finalize();
    152155
    153     free(m1.matrix);
    154     free(m2.matrix);
    155     if(rank == FIRST_RANK) {
    156         free(dst_m.matrix);
    157     }
    158     else {
    159         free(local_dst_m.matrix);
    160     }
    161 
    162156    exit(EXIT_SUCCESS);
    163157}
Note: See TracChangeset for help on using the changeset viewer.