title: Game of Life with OpenMP
body: <p>I did a sequential version of game of life, but now I need to make a parallel version of my code using OpenMP, but I am having some issues with it.
  If anyone could help me, it would be very nice. Thks.
  Here's my sequential code:</p>
  
  <pre><code>// Swapping the two grids   
   #define SWAP_BOARDS( b1, b2 )  do { \
   char* temp = b1; \
   b1 = b2; \
   b2 = temp; \
   } while(0)
  
  // Simplifying access to grid elements
     #define BOARD( G, X, Y )  ((G)[NC*(X)+(Y)])
  
   char* sequential_game_of_life (char* outgrid, char* ingrid, 
         const int nrows, const int ncols, const int gens_max) {
  
    const int NC = ncols;
    int curgen, i, j;
  
   for (curgen = 0; curgen &lt; gens_max; curgen++)
     {
  
    for (i = 0; i &lt; nrows; i++)
  {
    for (j = 0; j &lt; ncols; j++)
      {
        const int inorth = mod (i-1, nrows);
        const int isouth = mod (i+1, nrows);
        const int jwest = mod (j-1, ncols);
        const int jeast = mod (j+1, ncols);
  
        const char neighbor_count = 
      BOARD (ingrid, inorth, jwest) + 
      BOARD (ingrid, inorth, j) + 
      BOARD (ingrid, inorth, jeast) + 
      BOARD (ingrid, i, jwest) +
      BOARD (ingrid, i, jeast) + 
      BOARD (ingrid, isouth, jwest) +
      BOARD (ingrid, isouth, j) + 
      BOARD (ingrid, isouth, jeast);
  
        BOARD(outgrid, i, j) = alivep (neighbor_count, BOARD (ingrid, i, j));
      }
  }
    SWAP_BOARDS( outgrid, ingrid );
  }
    return outgrid;
   }
  </code></pre>
  
  <p>I know that I have to parallel those 3 for's, but I cant see how to do that.</p>