Lines Matching refs:pastix
13 #include <pastix.h>
35 MPI_Comm comm; /* MPI Communicator used to initialize pastix */
54 static PetscErrorCode MatConvertToSPM(Mat A, MatReuse reuse, Mat_Pastix *pastix)
86 PetscStackCallExternalVoid("spmInitDist", spmInitDist(spm, pastix->comm));
122 pastix->iparm[IPARM_TRANSPOSE_SOLVE] = PastixTrans;
134 pastix->spm = spm;
144 Mat_Pastix *pastix = (Mat_Pastix *)A->data;
148 if (pastix->spm) {
149 PetscStackCallExternalVoid("spmExit", spmExit(pastix->spm));
150 PetscCall(PetscFree(pastix->spm));
157 if (pastix->pastix_data) pastixFinalize(&pastix->pastix_data);
171 Mat_Pastix *pastix = (Mat_Pastix *)A->data;
176 pastix->rhsnbr = 1;
177 ldrhs = pastix->spm->n;
180 PetscCall(VecGetArray(x, &pastix->rhs));
185 PetscCheck(pastix->pastix_data, PETSC_COMM_SELF, PETSC_ERR_SUP, "PaStiX hasn't been initialized");
186 PetscCallExternal(pastix_task_solve, pastix->pastix_data, ldrhs, pastix->rhsnbr, pastix->rhs, ldrhs);
187 PetscCallExternal(pastix_task_refine, pastix->pastix_data, ldrhs, pastix->rhsnbr, (PetscScalar *)bptr, ldrhs, pastix->rhs, ldrhs);
189 PetscCall(VecRestoreArray(x, &pastix->rhs));
203 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
209 PetscCheck(pastix->pastix_data, PETSC_COMM_SELF, PETSC_ERR_SUP, "PaStiX hasn't been initialized");
210 PetscCallExternal(pastix_task_numfact, pastix->pastix_data, pastix->spm);
218 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
221 PetscCheck(pastix->iparm[IPARM_FACTORIZATION] == PastixFactGETRF, PetscObjectComm((PetscObject)F), PETSC_ERR_SUP, "Incorrect factorization type for symbolic and numerical factorization by PaStiX");
222 pastix->iparm[IPARM_FACTORIZATION] = PastixFactGETRF;
229 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
232 PetscCheck(pastix->iparm[IPARM_FACTORIZATION] == PastixFactSYTRF, PetscObjectComm((PetscObject)F), PETSC_ERR_SUP, "Incorrect factorization type for symbolic and numerical factorization by PaStiX");
233 pastix->iparm[IPARM_FACTORIZATION] = PastixFactSYTRF;
253 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
256 pastix->matstruc = DIFFERENT_NONZERO_PATTERN;
259 PetscCall(MatConvertToSPM(A, MAT_INITIAL_MATRIX, pastix));
262 PetscCheck(pastix->pastix_data, PETSC_COMM_SELF, PETSC_ERR_SUP, "PaStiX hasn't been initialized");
263 PetscCallExternal(pastix_task_analyze, pastix->pastix_data, pastix->spm);
269 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
272 pastix->iparm[IPARM_FACTORIZATION] = PastixFactGETRF;
280 Mat_Pastix *pastix = (Mat_Pastix *)F->data;
286 https://solverstack.gitlabpages.inria.fr/pastix/group__pastix__api.html). */
287 pastix->iparm[IPARM_FACTORIZATION] = PastixFactSYTRF;
302 Mat_Pastix *pastix = (Mat_Pastix *)A->data;
303 spmatrix_t *spm = pastix->spm;
308 PetscCall(PetscViewerASCIIPrintf(viewer, " Level of printing (0,1,2): %ld \n", (long)pastix->iparm[IPARM_VERBOSE]));
309 PetscCall(PetscViewerASCIIPrintf(viewer, " Number of refinements iterations : %ld \n", (long)pastix->iparm[IPARM_NBITER]));
310 PetscCall(PetscPrintf(PETSC_COMM_SELF, " Error : %e \n", pastix->dparm[DPARM_RELATIVE_ERROR]));
311 if (pastix->iparm[IPARM_VERBOSE] > 0) spmPrintInfo(spm, stdout);
321 Use `./configure --download-hwloc --download-metis --download-ptscotch --download-pastix --download-netlib-lapack [or MKL for ex. --with-blaslapack-dir=${MKLROOT}]`
324 Use `-pc_type lu` `-pc_factor_mat_solver_type pastix` to use this direct solver.
349 Mat_Pastix *pastix = (Mat_Pastix *)A->data;
353 info->nz_allocated = pastix->iparm[IPARM_ALLOCATED_TERMS];
354 info->nz_used = pastix->iparm[IPARM_NNZEROS];
375 Mat_Pastix *pastix = (Mat_Pastix *)A->data;
376 pastix_int_t *iparm = pastix->iparm;
377 double *dparm = pastix->dparm;
425 Mat_Pastix *pastix;
452 /* Create the pastix structure */
453 PetscCall(PetscNew(&pastix));
454 B->data = (void *)pastix;
456 /* Call to set default pastix options */
457 PetscStackCallExternalVoid("pastixInitParam", pastixInitParam(pastix->iparm, pastix->dparm));
461 PetscCall(PetscObjectGetComm((PetscObject)A, &pastix->comm));
464 pastix->iparm[IPARM_SCOTCH_MT] = 0;
465 PetscStackCallExternalVoid("pastixInit", pastixInit(&pastix->pastix_data, pastix->comm, pastix->iparm, pastix->dparm));
470 https://solverstack.gitlabpages.inria.fr/pastix/group__pastix__api.html). */
471 pastix->iparm[IPARM_FACTORIZATION] = ftype == MAT_FACTOR_CHOLESKY ? PastixFactSYTRF : PastixFactGETRF;