Changeset 2305 in /cluster/svnroot


Ignore:
Timestamp:
Apr 1, 2010 4:44:36 PM (11 years ago)
Author:
fitz
Message:

Single process Life (#483)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • bccd-ng/trunk/trees/home/bccd/Life/Life.c

    r1967 r2305  
    8383        if (count++>max_count) done=true;
    8484        // output
    85         if (count%1==0&&do_display==1) doDraw(rank,ncols,nrows,grid);
     85        if (count%1==0&&do_display==1) {
     86                doDraw(rank,ncols,nrows,grid);
     87        }
    8688        do_step(rank,size,ncols,nrows,grid,next_grid);
    8789        //doDraw(rank,ncols,nrows,next_grid);
     
    9597   
    9698   
    97 
    9899    cleanup_grid(ncols, nrows, &grid);
    99100    cleanup_grid(ncols, nrows, &next_grid);
     
    118119    int right_rank = (rank+1)%size;
    119120   
    120     if (left_rank>=rank) {
    121         MPI_Send(grid[1],nrows+2,MPI_INT,left_rank,MPI_TOLEFT,
    122             MPI_COMM_WORLD);
    123         MPI_Recv(grid[ncols+1],nrows+2,MPI_INT,right_rank,
    124             MPI_TOLEFT,
    125             MPI_COMM_WORLD, &mpi_status);
    126     } else {
    127         MPI_Recv(grid[ncols+1],nrows+2,MPI_INT,right_rank,
    128             MPI_TOLEFT,MPI_COMM_WORLD, &mpi_status);
    129         MPI_Send(grid[1],nrows+2,MPI_INT,left_rank,MPI_TOLEFT,
    130             MPI_COMM_WORLD);
    131     }
    132    
    133     if (right_rank>=rank) {
    134         MPI_Send(grid[ncols],nrows+2,MPI_INT,right_rank,MPI_TORIGHT,
    135             MPI_COMM_WORLD);
    136         MPI_Recv(grid[0],nrows+2,MPI_INT,left_rank,
    137             MPI_TORIGHT,
    138             MPI_COMM_WORLD, &mpi_status);
    139     } else {
    140         MPI_Recv(grid[0],nrows+2,MPI_INT,left_rank,
    141             MPI_TORIGHT,
    142             MPI_COMM_WORLD, &mpi_status);
    143         MPI_Send(grid[ncols],nrows+2,MPI_INT,right_rank,MPI_TORIGHT,
    144             MPI_COMM_WORLD);
    145     }
     121    // If we're only 1, no need to do the communication
     122    if (size != 1) {
     123            if (left_rank>=rank) {
     124                MPI_Send(grid[1],nrows+2,MPI_INT,left_rank,MPI_TOLEFT,
     125                    MPI_COMM_WORLD);
     126                MPI_Recv(grid[ncols+1],nrows+2,MPI_INT,right_rank,
     127                    MPI_TOLEFT,
     128                    MPI_COMM_WORLD, &mpi_status);
     129            } else {
     130                MPI_Recv(grid[ncols+1],nrows+2,MPI_INT,right_rank,
     131                    MPI_TOLEFT,MPI_COMM_WORLD, &mpi_status);
     132                MPI_Send(grid[1],nrows+2,MPI_INT,left_rank,MPI_TOLEFT,
     133                    MPI_COMM_WORLD);
     134            }
     135           
     136            if (right_rank>=rank) {
     137                MPI_Send(grid[ncols],nrows+2,MPI_INT,right_rank,MPI_TORIGHT,
     138                    MPI_COMM_WORLD);
     139                MPI_Recv(grid[0],nrows+2,MPI_INT,left_rank,
     140                    MPI_TORIGHT,
     141                    MPI_COMM_WORLD, &mpi_status);
     142            } else {
     143                MPI_Recv(grid[0],nrows+2,MPI_INT,left_rank,
     144                    MPI_TORIGHT,
     145                    MPI_COMM_WORLD, &mpi_status);
     146                MPI_Send(grid[ncols],nrows+2,MPI_INT,right_rank,MPI_TORIGHT,
     147                    MPI_COMM_WORLD);
     148            }
     149        }
    146150   
    147151    // copy corners
Note: See TracChangeset for help on using the changeset viewer.