/home/kcamus/qaas_runs/169-443-9681/intel/AMG/build/AMG/AMG/IJ_mv/IJMatrix_parcsr.c: 3274 - 3500
--------------------------------------------------------------------------------

3274:          for (ii=ns; ii < ne; ii++)
[...]
3286: #pragma omp barrier
3287: #endif  
3288:          indx = 0;
3289:          if (my_thread_num)
3290:             indx = value_start[my_thread_num-1];
3291:          for (ii=ns; ii < ne; ii++)
3292:          {
3293:             row = rows[ii];
3294:             n = ncols[ii];
3295:             /* processor owns the row */ 
3296:             if (row >= row_partitioning[pstart] && row < row_partitioning[pstart+1])
3297:             {
3298:                row_local = row - row_partitioning[pstart]; 
3299:                /* compute local row number */
3300:                if (need_aux)
3301:                {
3302:                   local_j = aux_j[row_local];
3303:                   local_data = aux_data[row_local];
3304:    	          space = row_space[row_local]; 
3305:    	          old_size = row_length[row_local]; 
3306:    	          size = space - old_size;
3307:    	          if (size < n)
3308:       	          {
3309:       	             size = n - size;
3310:       	             tmp_j = hypre_CTAlloc(HYPRE_Int,size);
3311:       	             tmp_data = hypre_CTAlloc(HYPRE_Complex,size);
3312:       	          }
3313:       	          tmp_indx = 0;
3314:       	          not_found = 1;
3315:       	          size = old_size;
3316:                   for (i=0; i < n; i++)
3317:       	          {
3318:       	             for (j=0; j < old_size; j++)
3319:       	             {
3320:       	                if (local_j[j] == cols[indx])
3321:       	                {
3322:                            local_data[j] = values[indx];
3323:       		           not_found = 0;
3324:       		           break;
3325:       	                }
3326:       	             }
3327:       	             if (not_found)
3328:       	             {
3329:       	                if (size < space)
3330:       	                {
3331:       	                   local_j[size] = cols[indx];
3332:       	                   local_data[size++] = values[indx];
3333:       	                }
3334:       	                else
3335:       	                {
3336:       	                   tmp_j[tmp_indx] = cols[indx];
3337:       	                   tmp_data[tmp_indx++] = values[indx];
[...]
3344:                   row_length[row_local] = size+tmp_indx;
3345:                   
3346:                   if (tmp_indx)
3347:                   {
3348:    	             aux_j[row_local] = hypre_TReAlloc(aux_j[row_local],HYPRE_Int,
3349:                                                     size+tmp_indx);
3350:    	             aux_data[row_local] = hypre_TReAlloc(aux_data[row_local],
3351:                                                        HYPRE_Complex,size+tmp_indx);
3352:                      row_space[row_local] = size+tmp_indx;
3353:                      local_j = aux_j[row_local];
[...]
3359:    	          for (i=0; i < tmp_indx; i++)
3360:    	          {
3361:    	             local_j[cnt] = tmp_j[i];
3362:    	             local_data[cnt++] = tmp_data[i];
3363: 	          }
3364:   
3365: 	          if (tmp_j)
3366: 	          { 
3367: 	             hypre_TFree(tmp_j); 
3368: 	             hypre_TFree(tmp_data); 
[...]
3376: 	          offd_indx = hypre_AuxParCSRMatrixIndxOffd(aux_matrix)[row_local];
3377: 	          diag_indx = hypre_AuxParCSRMatrixIndxDiag(aux_matrix)[row_local];
3378: 	          cnt_diag = diag_indx;
3379: 	          cnt_offd = offd_indx;
3380: 	          diag_space = diag_i[row_local+1];
3381: 	          offd_space = offd_i[row_local+1];
3382: 	          not_found = 1;
3383:   	          for (i=0; i < n; i++)
3384: 	          {
3385: 	             if (cols[indx] < col_0 || cols[indx] > col_n)
3386:                      /* insert into offd */	
3387: 	             {
3388: 	                for (j=offd_i[row_local]; j < offd_indx; j++)
3389: 	                {
3390: 		           if (offd_j[j] == cols[indx])
3391: 		           {
3392:                               offd_data[j] = values[indx];
3393: 		              not_found = 0;
3394: 		              break;
3395: 		           }
3396: 	                }
3397: 	                if (not_found)
3398: 	                { 
3399: 	                   if (cnt_offd < offd_space) 
3400: 	                   { 
3401: 	                      offd_j[cnt_offd] = cols[indx];
3402: 	                      offd_data[cnt_offd++] = values[indx];
3403: 	                   } 
3404: 	                   else 
3405: 	 	           {
3406:                               hypre_error(HYPRE_ERROR_GENERIC);
3407: #ifdef HYPRE_USING_OPENMP
3408: #pragma omp atomic
3409: #endif  
3410:                               error_flag++;
3411: 	    	              if (print_level)
3412:                                  hypre_printf("Error in row %d ! Too many elements!\n", 
[...]
3422: 	                for (j=diag_i[row_local]; j < diag_indx; j++)
3423: 	                {
3424: 		           if (diag_j[j] == cols[indx])
3425: 		           {
3426:                               diag_data[j] = values[indx];
3427: 		              not_found = 0;
3428: 		              break;
3429: 		           }
3430: 	                } 
3431: 	                if (not_found)
3432: 	                { 
3433: 	                   if (cnt_diag < diag_space) 
3434: 	                   { 
3435: 	                      diag_j[cnt_diag] = cols[indx];
3436: 	                      diag_data[cnt_diag++] = values[indx];
3437: 	                   } 
3438: 	                   else 
3439: 	 	           {
3440:                               hypre_error(HYPRE_ERROR_GENERIC);
3441: #ifdef HYPRE_USING_OPENMP
3442: #pragma omp atomic
3443: #endif  
3444:                               error_flag++;
3445: 	    	              if (print_level)
3446:                                  hypre_printf("Error in row %d ! Too many elements !\n", 
[...]
3454: 	             indx++;
3455: 	          }
3456: 
3457:                   hypre_AuxParCSRMatrixIndxDiag(aux_matrix)[row_local] = cnt_diag;
3458:                   hypre_AuxParCSRMatrixIndxOffd(aux_matrix)[row_local] = cnt_offd;
[...]
3466:                indx +=  n;
3467:    	       if (aux_matrix)
3468:                {
3469:                   col_indx = 0;
3470:                   for (i=0; i < off_proc_i_indx; i=i+2)
3471:                   {
3472: 	             row_len = off_proc_i[i+1];
3473: 	             if (off_proc_i[i] == row)
3474: 		     {
3475: 		        for (j=0; j < n; j++)
3476: 		        {
3477: 			   cnt1 = col_indx;
3478: 			   for (k=0; k < row_len; k++)
3479: 			   {
3480: 			      if (off_proc_j[cnt1] == cols[j])
3481: 			      {
3482:                                  off_proc_j[cnt1++] = -1;
3483:                		         /*cancel_indx++;*/
3484: 	                         offproc_cnt[my_thread_num]++;
[...]
3500: 		        col_indx += row_len;
