/beegfs/hackathon/users/eoseret/qaas_runs_test/178-668-9699/intel/AMG/build/AMG/AMG/seq_mv/csr_matvec.c: 41 - 417
--------------------------------------------------------------------------------

41: {
[...]
48:    HYPRE_Complex    *A_data   = hypre_CSRMatrixData(A);
49:    HYPRE_Int        *A_i      = hypre_CSRMatrixI(A) + offset;
50:    HYPRE_Int        *A_j      = hypre_CSRMatrixJ(A);
51:    HYPRE_Int         num_rows = hypre_CSRMatrixNumRows(A) - offset;
52:    HYPRE_Int         num_cols = hypre_CSRMatrixNumCols(A);
53:    /*HYPRE_Int         num_nnz  = hypre_CSRMatrixNumNonzeros(A);*/
54: 
55:    HYPRE_Int        *A_rownnz = hypre_CSRMatrixRownnz(A);
56:    HYPRE_Int         num_rownnz = hypre_CSRMatrixNumRownnz(A);
57: 
58:    HYPRE_Complex    *x_data = hypre_VectorData(x);
59:    HYPRE_Complex    *b_data = hypre_VectorData(b) + offset;
60:    HYPRE_Complex    *y_data = hypre_VectorData(y) + offset;
61:    HYPRE_Int         x_size = hypre_VectorSize(x);
62:    HYPRE_Int         b_size = hypre_VectorSize(b) - offset;
63:    HYPRE_Int         y_size = hypre_VectorSize(y) - offset;
64:    HYPRE_Int         num_vectors = hypre_VectorNumVectors(x);
65:    HYPRE_Int         idxstride_y = hypre_VectorIndexStride(y);
66:    HYPRE_Int         vecstride_y = hypre_VectorVectorStride(y);
67:    /*HYPRE_Int         idxstride_b = hypre_VectorIndexStride(b);
68:    HYPRE_Int         vecstride_b = hypre_VectorVectorStride(b);*/
69:    HYPRE_Int         idxstride_x = hypre_VectorIndexStride(x);
70:    HYPRE_Int         vecstride_x = hypre_VectorVectorStride(x);
[...]
81:    hypre_Vector	    *x_tmp = NULL;
[...]
94:    hypre_assert( num_vectors == hypre_VectorNumVectors(y) );
95:    hypre_assert( num_vectors == hypre_VectorNumVectors(b) );
96: 
97:    if (num_cols != x_size)
98:       ierr = 1;
99: 
100:    if (num_rows != y_size || num_rows != b_size)
[...]
110:    if (alpha == 0.0)
111:    {
112: #ifdef HYPRE_USING_OPENMP
113: #pragma omp parallel for private(i) HYPRE_SMP_SCHEDULE
[...]
122:       return ierr;
123:    }
124: 
125:    if (x == y)
126:    {
127:       x_tmp = hypre_SeqVectorCloneDeep(x);
128:       x_data = hypre_VectorData(x_tmp);
[...]
135:    temp = beta / alpha;
136:    
137: /* use rownnz pointer to do the A*x multiplication  when num_rownnz is smaller than num_rows */
138: 
139:    if (num_rownnz < xpar*(num_rows) || num_vectors > 1)
[...]
145:       if (temp != 1.0)
146:       {
147:          if (temp == 0.0)
148:          {
149: #ifdef HYPRE_USING_OPENMP
150: #pragma omp parallel for private(i) HYPRE_SMP_SCHEDULE
[...]
158: #pragma omp parallel for private(i) HYPRE_SMP_SCHEDULE
[...]
166:             for (i = 0; i < num_rows*num_vectors; i++)
167:                y_data[i] = b_data[i];
[...]
175:       if (num_rownnz < xpar*(num_rows))
176:       {
177: #ifdef HYPRE_USING_OPENMP
178: #pragma omp parallel for private(i,j,jj,m,tempx) HYPRE_SMP_SCHEDULE
[...]
211: #pragma omp parallel for private(i,j,jj,tempx) HYPRE_SMP_SCHEDULE
[...]
231:       if (alpha != 1.0)
232:       {
233: #ifdef HYPRE_USING_OPENMP
234: #pragma omp parallel for private(i) HYPRE_SMP_SCHEDULE
[...]
243: #pragma omp parallel private(i,jj,tempx)
[...]
411:    if (x == y) hypre_SeqVectorDestroy(x_tmp);
[...]
417: }
