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

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

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

revision 2106 by artak, Thu Nov 6 03:14:52 2008 UTC revision 2107 by artak, Fri Nov 28 04:39:07 2008 UTC
# Line 172  Paso_Pattern* Paso_Pattern_multiply(int Line 172  Paso_Pattern* Paso_Pattern_multiply(int
172    
173    index_list=TMPMEMALLOC(A->numOutput,Paso_IndexList);    index_list=TMPMEMALLOC(A->numOutput,Paso_IndexList);
174    if (! Paso_checkPtr(index_list)) {    if (! Paso_checkPtr(index_list)) {
175              #pragma omp parallel for private(i) schedule(static)
       #pragma omp parallel private(i)  
       {  
         #pragma omp for schedule(static)  
176          for(i=0;i<A->numOutput;++i) {          for(i=0;i<A->numOutput;++i) {
177               index_list[i].extension=NULL;               index_list[i].extension=NULL;
178               index_list[i].n=0;               index_list[i].n=0;
179          }          }
180        }     }
   }  
181        
182      #pragma omp parallel for private(i,iptrA,j,iptrB,k) schedule(static)
183    for(i = 0; i < A->numOutput; i++) {    for(i = 0; i < A->numOutput; i++) {
184       for(iptrA = A->ptr[i]; iptrA < A->ptr[i+1]; ++iptrA) {       for(iptrA = A->ptr[i]; iptrA < A->ptr[i+1]; ++iptrA) {
185        j = A->index[iptrA];        j = A->index[iptrA];
# Line 201  Paso_Pattern* Paso_Pattern_multiply(int Line 198  Paso_Pattern* Paso_Pattern_multiply(int
198    
199   /* clean up */   /* clean up */
200     if (index_list!=NULL) {     if (index_list!=NULL) {
201          #pragma omp parallel for private(i)         #pragma omp parallel for private(i) schedule(static)
202          for(i=0;i<A->numOutput;++i) Paso_IndexList_free(index_list[i].extension);          for(i=0;i<A->numOutput;++i) Paso_IndexList_free(index_list[i].extension);
203       }       }
204    TMPMEMFREE(index_list);    TMPMEMFREE(index_list);
# Line 226  Paso_Pattern* Paso_Pattern_binop(int typ Line 223  Paso_Pattern* Paso_Pattern_binop(int typ
223    
224   index_list=TMPMEMALLOC(A->numOutput,Paso_IndexList);   index_list=TMPMEMALLOC(A->numOutput,Paso_IndexList);
225     if (! Paso_checkPtr(index_list)) {     if (! Paso_checkPtr(index_list)) {
226              #pragma omp parallel for private(i) schedule(static)
       #pragma omp parallel private(i)  
       {  
         #pragma omp for schedule(static)  
227          for(i=0;i<A->numOutput;++i) {          for(i=0;i<A->numOutput;++i) {
228               index_list[i].extension=NULL;               index_list[i].extension=NULL;
229               index_list[i].n=0;               index_list[i].n=0;
230          }          }
231        }      }
232    }    
233      #pragma omp parallel for private(i,iptrA,j,iptrB,k) schedule(static)
234    for(i = 0; i < B->numOutput; i++){    for(i = 0; i < B->numOutput; i++){
235      iptrA = A->ptr[i],      iptrA = A->ptr[i],
236      iptrB = B->ptr[i];      iptrB = B->ptr[i];
# Line 275  Paso_Pattern* Paso_Pattern_binop(int typ Line 270  Paso_Pattern* Paso_Pattern_binop(int typ
270    
271   /* clean up */   /* clean up */
272     if (index_list!=NULL) {     if (index_list!=NULL) {
273          #pragma omp parallel for private(i)          #pragma omp parallel for private(i) schedule(static)
274          for(i=0;i<A->numOutput;++i) Paso_IndexList_free(index_list[i].extension);          for(i=0;i<A->numOutput;++i) Paso_IndexList_free(index_list[i].extension);
275       }       }
276    TMPMEMFREE(index_list);    TMPMEMFREE(index_list);
# Line 364  Paso_Pattern* Paso_IndexList_createPatte Line 359  Paso_Pattern* Paso_IndexList_createPatte
359     ptr=MEMALLOC(n+1-n0,index_t);     ptr=MEMALLOC(n+1-n0,index_t);
360     if (! Paso_checkPtr(ptr) ) {     if (! Paso_checkPtr(ptr) ) {
361         /* get the number of connections per row */         /* get the number of connections per row */
362         #pragma omp parallel for schedule(static) private(i)         #pragma omp parallel for private(i) schedule(static)
363         for(i=n0;i<n;++i) {         for(i=n0;i<n;++i) {
364                ptr[i-n0]=Paso_IndexList_count(&index_list[i],range_min,range_max);                ptr[i-n0]=Paso_IndexList_count(&index_list[i],range_min,range_max);
365         }         }
# Line 379  Paso_Pattern* Paso_IndexList_createPatte Line 374  Paso_Pattern* Paso_IndexList_createPatte
374         /* fill index */         /* fill index */
375         index=MEMALLOC(ptr[n-n0],index_t);         index=MEMALLOC(ptr[n-n0],index_t);
376         if (! Paso_checkPtr(index)) {         if (! Paso_checkPtr(index)) {
377                #pragma omp parallel for schedule(static)                #pragma omp parallel for private(i) schedule(static)
378                for(i=n0;i<n;++i) {                for(i=n0;i<n;++i) {
379                    Paso_IndexList_toArray(&index_list[i],&index[ptr[i-n0]],range_min,range_max,index_offset);                    Paso_IndexList_toArray(&index_list[i],&index[ptr[i-n0]],range_min,range_max,index_offset);
380                }                }

Legend:
Removed from v.2106  
changed lines
  Added in v.2107

  ViewVC Help
Powered by ViewVC 1.1.26