Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
A newer version of this document is available. Customers should click here to go to the newest version.
pardiso_export
Places pointers dedicated for sparse representation of a requested matrix (values, rows, and columns) into MKL PARDISO
call pardiso_export(pt, values, rows, columns, step, iparm, error)
- mkl.fi
 - mkl_pardiso.f90
 
This auxiliary routine places pointers dedicated for sparse representation of a requested matrix (values, rows, and columns) into MKL PARDISO. The matrix will be stored in the three-array variant of the compressed sparse row (CSR3 format) with 0-based indexing. For details, refer to Three Array Variation of CSR Format.
Currently, this routine can be used only for a sparse Schur complement matrix. All parameters related to the Schur complement matrix (perm, iparm) must be set before the reordering stage of MKL PARDISO (phase = 11) is called.
pt(64)  |  
      INTEGER on 32-bit architectures; INTEGER*8 on 64-bit architectures Array with a size of 64. Handle to internal data structure for the Intel® MKL PARDISO solver. The entries must be set to zero prior to the first call to pardiso. Unique for factorization.  |  
     ||||||
iparm(64)  |  
      INTEGER This array is used to pass various parameters to Intel® MKL PARDISO and to return some useful information after execution of the solver.  |  
     ||||||
step  |  
      INTEGER Stage indicator. These are the currently supported values: 
  |  
     
values(*)  |  
      Parameter type: input/output parameter. PARDISO_DATA_TYPE (see PARDISO_DATA_TYPE) This array contains the non-zero elements of the requested matrix.  |  
     
rows  |  
      Parameter type: input/output parameter. INTEGER For CSR3 format, rows[i] ( i < size ) points to the first column index of row i in the array columns; that is, rows[i] gives the index of the element in the array values that contains the first non-zero element from row i of the sparse matrix. The last element, rows[size], is equal to the number of non-zero elements in the sparse matrix.  |  
     
columns  |  
      Parameter type: input/output parameter. INTEGER This array contains the column indices for the non-zero elements of the requested matrix.  |  
     
error  |  
      Parameter type: output parameter. INTEGER The error status: 
  |  
     
The following C-style example demonstrates how to use the pardiso_export routine to get the sparse representation (that is, three-array CSR format) of a Schur complement matrix.
#include "mkl.h"
/*
 * Call the reordering phase of MKL PARDISO with iparm[35] set to -1 in
 * order to compute the Schur complement matrix only, or -2 to compute all
 * factorization arrays.  perm array indices related to the Schur complement
 * matrix must be set to 1.
 */
phase = 11;
for ( i = 0; i < schur_size; i++ ) { perm[i] = 1.; }
iparm[35] = -1;
pardiso(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, perm, &nrhs,
  iparm, &msglvl, b, x, &error);
/*
 * After the reordering phase, iparm[35] will contain the number of non-zero
 * elements for the Schur complement matrix.  Arrays dedicated to the sparse
 * representation of the Schur complement matrix must be allocated before
 * the factorization stage of MKL PARDISO is called.
 */
schur_nnz     = iparm[35];
schur_rows    = (MKL_INT   *) mkl_malloc(schur_size+1, ALIGNMENT);
schur_columns = (MKL_INT   *) mkl_malloc(schur_nnz , ALIGNMENT);
schur_values  = (DATA_TYPE *) mkl_malloc(schur_nnz , ALIGNMENT);
/*
 * Call to the pardiso_export routine with step equal to 1 in order to put
 * pointers related to the three-array CSR format into MKL PARDISO:
 */
pardiso_export(pt, schur_values, schur_ia, schur_ja, &step, iparm, &error);
/*
 * Call the factorization phase of PARDISO with iparm[35] equal to -1 or -2
 * to compute the Schur complement matrix:
 */
phase = 22;
iparm[35] = -1;
pardiso(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, perm, &nrhs,
  iparm, &msglvl, b, x, &error);
/*
 * After the factorization stage, schur_values, schur_rows, and
 * schur_columns will contain the Schur complement matrix in CSR3 format.
 */