/[escript]/trunk/paso/src/ILU.c
ViewVC logotype

Diff of /trunk/paso/src/ILU.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

temp_trunk_copy/paso/src/Solver_ILU.c revision 1384 by phornby, Fri Jan 11 02:29:38 2008 UTC trunk/paso/src/Solver_ILU.c revision 1628 by phornby, Fri Jul 11 13:12:46 2008 UTC
# Line 52  Paso_Solver_ILU* Paso_Solver_getILU(Paso Line 52  Paso_Solver_ILU* Paso_Solver_getILU(Paso
52    dim_t n_block=A->row_block_size;    dim_t n_block=A->row_block_size;
53    index_t num_colors=0, *mis_marker=NULL;    index_t num_colors=0, *mis_marker=NULL;
54    register double A11,A12,A13,A21,A22,A23,A31,A32,A33,D;    register double A11,A12,A13,A21,A22,A23,A31,A32,A33,D;
   register double mainA11,mainA12,mainA13,mainA21,mainA22,mainA23,mainA31,mainA32,mainA33;  
55    register double S11,S12,S13,S21,S22,S23,S31,S32,S33;    register double S11,S12,S13,S21,S22,S23,S31,S32,S33;
56    register index_t i,iptr_main,iptr,iptr_ik,k,iptr_kj,j,iptr_ij,color,color2;    register index_t i,iptr_main,iptr,iptr_ik,k,iptr_kj,j,iptr_ij,color,color2;
57    double time0,time_color,time_fac;    double time0,time_color,time_fac;
# Line 353  void Paso_Solver_solveILU(Paso_Solver_IL Line 352  void Paso_Solver_solveILU(Paso_Solver_IL
352            
353            
354       /* copy x into b*/       /* copy x into b*/
355       #pragma omp for private(i) schedule(static)       #pragma omp parallel for private(i) schedule(static)
356       for (i=0;i<n*n_block;++i) x[i]=b[i];       for (i=0;i<n*n_block;++i) x[i]=b[i];
357       /* forward substitution */       /* forward substitution */
358       for (color=0;color<ilu->num_colors;++color) {       for (color=0;color<ilu->num_colors;++color) {
359             if (n_block==1) {             if (n_block==1) {
360                #pragma omp for schedule(static) private(i,iptr_ik,k,S1,R1,iptr_main)                #pragma omp parallel for schedule(static) private(i,iptr_ik,k,S1,R1,iptr_main)
361                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
362                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
363                       /* x_i=x_i-a_ik*x_k */                                           /* x_i=x_i-a_ik*x_k */                    
# Line 375  void Paso_Solver_solveILU(Paso_Solver_IL Line 374  void Paso_Solver_solveILU(Paso_Solver_IL
374                     }                     }
375                }                }
376             } else if (n_block==2) {             } else if (n_block==2) {
377                #pragma omp for schedule(static) private(i,iptr_ik,k,iptr_main,S1,S2,R1,R2)                #pragma omp parallel for schedule(static) private(i,iptr_ik,k,iptr_main,S1,S2,R1,R2)
378                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
379                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
380                       /* x_i=x_i-a_ik*x_k */                       /* x_i=x_i-a_ik*x_k */
# Line 397  void Paso_Solver_solveILU(Paso_Solver_IL Line 396  void Paso_Solver_solveILU(Paso_Solver_IL
396    
397                }                }
398             } else if (n_block==3) {             } else if (n_block==3) {
399                #pragma omp for schedule(static) private(i,iptr_ik,iptr_main,k,S1,S2,S3,R1,R2,R3)                #pragma omp parallel for schedule(static) private(i,iptr_ik,iptr_main,k,S1,S2,S3,R1,R2,R3)
400                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
401                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
402                       /* x_i=x_i-a_ik*x_k */                       /* x_i=x_i-a_ik*x_k */
# Line 422  void Paso_Solver_solveILU(Paso_Solver_IL Line 421  void Paso_Solver_solveILU(Paso_Solver_IL
421                   }                   }
422                }                }
423             }             }
            #pragma omp barrier  
424       }       }
425       /* backward substitution */       /* backward substitution */
426       for (color=(ilu->num_colors)-1;color>-1;--color) {       for (color=(ilu->num_colors)-1;color>-1;--color) {
427             if (n_block==1) {             if (n_block==1) {
428                #pragma omp for schedule(static) private(i,iptr_ik,k,S1,R1)                #pragma omp parallel for schedule(static) private(i,iptr_ik,k,S1,R1)
429                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
430                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
431                       /* x_i=x_i-a_ik*x_k */                       /* x_i=x_i-a_ik*x_k */
# Line 443  void Paso_Solver_solveILU(Paso_Solver_IL Line 441  void Paso_Solver_solveILU(Paso_Solver_IL
441                     }                     }
442                }                }
443             } else if (n_block==2) {             } else if (n_block==2) {
444                #pragma omp for schedule(static) private(i,iptr_ik,k,S1,S2,R1,R2)                #pragma omp parallel for schedule(static) private(i,iptr_ik,k,S1,S2,R1,R2)
445                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
446                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
447                       /* x_i=x_i-a_ik*x_k */                       /* x_i=x_i-a_ik*x_k */
# Line 463  void Paso_Solver_solveILU(Paso_Solver_IL Line 461  void Paso_Solver_solveILU(Paso_Solver_IL
461                     }                     }
462                }                }
463             } else if (n_block==3) {             } else if (n_block==3) {
464                #pragma omp for schedule(static) private(i,iptr_ik,k,S1,S2,S3,R1,R2,R3)                #pragma omp parallel for schedule(static) private(i,iptr_ik,k,S1,S2,S3,R1,R2,R3)
465                for (i = 0; i < n; ++i) {                for (i = 0; i < n; ++i) {
466                     if (ilu->colorOf[i]==color) {                     if (ilu->colorOf[i]==color) {
467                       /* x_i=x_i-a_ik*x_k */                       /* x_i=x_i-a_ik*x_k */

Legend:
Removed from v.1384  
changed lines
  Added in v.1628

  ViewVC Help
Powered by ViewVC 1.1.26