title: Parallelization of dependent nested loops
body: <p>I aim to compute a simple N-body program on C++ and I am using OpenMP to speed things up with the computations. At some point, I have nested loops that look like that:</p>
  <pre><code>int N;
  double* S          = new double[N];
  double* Weight     = new double[N];
  double* Coordinate = new double[N];
   ...
  
  #pragma omp parallel for
  for (int i = 0; i &lt; N; ++i)
  {
     for (int j = 0; j &lt; i; ++j)
     {
         double K = Coordinate[i] - Coordinate[j];
         S[i]    += K*Weight[j];
         S[j]    -= K*Weight[i];
     }
  }
  </code></pre>
  <p>The issue here is that I do not obtain exactly the same result when removing the #pragma ... I am guessing it has to do with the fact that the second loop is dependent on the integer i, but I don't see how to get past that issue</p>