On 19 October 2007 02:45, tim prince wrote:

> skaller wrote:
>> On Thu, 2007-10-18 at 06:00 -0700, Tim Prince wrote:
>> 
>>> skaller wrote:
>>> 
>> 
>> 
>>> I don't know of any OpenMP compiler which would correct the nesting of
>>> parallel loops in your LU.  I have assumed that OpenMP doesn't allow
>>> such optimization; you have to get it right yourself.
>>> 
>> 
>> Can you explain? This code was taken from a *tutorial* on OpenMP:
>> 
>> http://kallipolis.com/openmp/2.html
>> 
>> 
> Did they show your version somewhere as an example of what not to do?
> In the page you referenced, they appear to have the correct loop nesting.

  Huh?

http://kallipolis.com/openmp/2.html
Or, if you are really lazy, you can download LU_mp.c.

    47:     /* Here we update A by subtracting the appropriate values from row
    48:        and column.  Note that these adjustments to A can be done in
    49:        any order */
    50: #pragma omp parallel for shared(A, row, col) 
    51:     for (i = k+1; i<SIZE; i++) {
    52:       for (j = k+1; j<SIZE; j++) {
    53:         A[i][j] = A[i][j] - row[i] * col[j];
    54:       }
    55:     }

Now instead of a parallel

http://gcc.gnu.org/ml/gcc/2007-10/msg00230.html


    /* Here we update A by subtracting the appropriate values from row
       and column.  Note that these adjustments to A can be done in
       any order */
#pragma omp parallel for shared(A, row, col)
    for (i = k+1; i<SIZE; i++) {
      for (j = k+1; j<SIZE; j++) {
        A[i][j] = A[i][j] - row[i] * col[j];
      }
    }
  }


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to