Lines Matching refs:aijmkl
10 #include <../src/mat/impls/aij/seq/aijmkl/aijmkl.h>
33 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
60 if (reuse == MAT_INITIAL_MATRIX) aijmkl = (Mat_SeqAIJMKL *)B->spptr;
62 if (aijmkl->sparse_optimized) PetscCallExternal(mkl_sparse_destroy, aijmkl->csrA);
75 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
79 if (aijmkl) {
82 if (aijmkl->sparse_optimized) PetscCallExternal(mkl_sparse_destroy, aijmkl->csrA);
100 * If called with an AIJMKL matrix for which aijmkl->sparse_optimized == PETSC_TRUE, then it destroys the old matrix
115 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
126 if (aijmkl->no_SpMV2) PetscFunctionReturn(PETSC_SUCCESS);
129 if (aijmkl->sparse_optimized) {
132 PetscCallExternal(mkl_sparse_destroy, aijmkl->csrA);
134 aijmkl->sparse_optimized = PETSC_FALSE;
137 aijmkl->descr.type = SPARSE_MATRIX_TYPE_GENERAL;
138 aijmkl->descr.mode = SPARSE_FILL_MODE_LOWER;
139 aijmkl->descr.diag = SPARSE_DIAG_NON_UNIT;
148 PetscCallExternal(mkl_sparse_x_create_csr, &aijmkl->csrA, SPARSE_INDEX_BASE_ZERO, (MKL_INT)m, (MKL_INT)n, (MKL_INT *)ai, (MKL_INT *)(ai + 1), (MKL_INT *)aj, aa);
149 PetscCallExternal(mkl_sparse_set_mv_hint, aijmkl->csrA, SPARSE_OPERATION_NON_TRANSPOSE, aijmkl->descr, 1000);
150 PetscCallExternal(mkl_sparse_set_memory_hint, aijmkl->csrA, SPARSE_MEMORY_AGGRESSIVE);
151 if (!aijmkl->no_SpMV2) PetscCallExternal(mkl_sparse_optimize, aijmkl->csrA);
152 aijmkl->sparse_optimized = PETSC_TRUE;
153 PetscCall(PetscObjectStateGet((PetscObject)A, &aijmkl->state));
155 aijmkl->csrA = NULL;
169 Mat_SeqAIJMKL *aijmkl;
200 aijmkl = (Mat_SeqAIJMKL *)A->spptr;
201 aijmkl->csrA = csrA;
206 aijmkl->descr.type = SPARSE_MATRIX_TYPE_GENERAL;
207 aijmkl->descr.mode = SPARSE_FILL_MODE_LOWER;
208 aijmkl->descr.diag = SPARSE_DIAG_NON_UNIT;
210 PetscCallExternal(mkl_sparse_set_mv_hint, aijmkl->csrA, SPARSE_OPERATION_NON_TRANSPOSE, aijmkl->descr, 1000);
211 PetscCallExternal(mkl_sparse_set_memory_hint, aijmkl->csrA, SPARSE_MEMORY_AGGRESSIVE);
213 PetscCall(PetscObjectStateGet((PetscObject)A, &aijmkl->state));
229 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
234 if (!aijmkl->csrA) PetscFunctionReturn(PETSC_SUCCESS);
237 PetscCallExternal(mkl_sparse_x_export_csr, aijmkl->csrA, &indexing, (MKL_INT *)&nrows, (MKL_INT *)&ncols, (MKL_INT **)&ai, (MKL_INT **)&unused, (MKL_INT **)&aj, &aa);
249 PetscCall(PetscObjectStateGet((PetscObject)A, &aijmkl->state));
253 aijmkl->sparse_optimized = PETSC_FALSE;
266 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
273 if (!aijmkl->csrA) {
279 PetscCallExternal(mkl_sparse_x_export_csr, aijmkl->csrA, &indexing, (MKL_INT *)&nrows, (MKL_INT *)&ncols, (MKL_INT **)&ai, (MKL_INT **)&unused, (MKL_INT **)&aj, &aa);
301 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
307 PetscCall(PetscArraycpy(aijmkl_dest, aijmkl, 1));
309 if (aijmkl->eager_inspection) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
316 Mat_SeqAIJMKL *aijmkl;
331 aijmkl = (Mat_SeqAIJMKL *)A->spptr;
332 if (aijmkl->eager_inspection) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
376 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
397 if (!aijmkl->sparse_optimized || aijmkl->state != state) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
400 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_NON_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 0.0, y);
449 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
470 if (!aijmkl->sparse_optimized || aijmkl->state != state) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
473 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 0.0, y);
534 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
559 if (!aijmkl->sparse_optimized || aijmkl->state != state) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
565 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_NON_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 1.0, z);
569 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_NON_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 0.0, z);
632 Mat_SeqAIJMKL *aijmkl = (Mat_SeqAIJMKL *)A->spptr;
657 if (!aijmkl->sparse_optimized || aijmkl->state != state) PetscCall(MatSeqAIJMKL_create_mkl_handle(A));
663 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 1.0, z);
667 PetscCallExternal(mkl_sparse_x_mv, SPARSE_OPERATION_TRANSPOSE, 1.0, aijmkl->csrA, aijmkl->descr, x, 0.0, z);
983 Mat_SeqAIJMKL *aijmkl;
993 PetscCall(PetscNew(&aijmkl));
994 B->spptr = (void *)aijmkl;
1002 aijmkl->sparse_optimized = PETSC_FALSE;
1003 aijmkl->no_SpMV2 = PetscDefined(HAVE_MKL_SPARSE_OPTIMIZE) ? PETSC_FALSE : PETSC_TRUE; /* Default to using the SpMV2 routines if our MKL supports them. */
1004 aijmkl->eager_inspection = PETSC_FALSE;
1008 PetscCall(PetscOptionsBool("-mat_aijmkl_no_spmv2", "Disable use of inspector-executor (SpMV 2) routines", "None", (PetscBool)aijmkl->no_SpMV2, (PetscBool *)&aijmkl->no_SpMV2, &set));
1009 PetscCall(PetscOptionsBool("-mat_aijmkl_eager_inspection", "Run inspection at matrix assembly time, instead of waiting until needed by an operation", "None", (PetscBool)aijmkl->eager_inspection, (PetscBool *)&aijmkl->eager_inspection, &set));
1012 if (!aijmkl->no_SpMV2) {
1014 aijmkl->no_SpMV2 = PETSC_TRUE;
1042 if (aijmkl->no_SpMV2) {