| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- !===============================================================================
- ! Copyright 2014-2022 Intel Corporation.
- !
- ! This software and the related documents are Intel copyrighted materials, and
- ! your use of them is governed by the express license under which they were
- ! provided to you (License). Unless the License provides otherwise, you may not
- ! use, modify, copy, publish, distribute, disclose or transmit this software or
- ! the related documents without Intel's prior written permission.
- !
- ! This software and the related documents are provided as is, with no express
- ! or implied warranties, other than those that are expressly stated in the
- ! License.
- !===============================================================================
- !
- ! This file contains preliminary version of new SpBLAS API which supports
- ! two-step execution (inspector-executor) model.
- !
- !*******************************************************************************
- !*******************************************************************************
- !*********************************** Basic types and constants *****************
- !*******************************************************************************
- MODULE MKL_SOLVERS_EE
- USE MKL_SPBLAS
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INTPTR_T, C_INT
- !*************************************************************************************************
- !*** Opaque structure for sparse matrix in internal format, further D - means double precision ***
- !*************************************************************************************************
- ! struct sparse_matrix;
- ! typedef struct sparse_matrix *sparse_matrix_t;
- ! TYPE, BIND(C) :: SPARSE_MATRIX_T
- ! INTEGER(C_INTPTR_T) :: PTR
- ! END TYPE SPARSE_MATRIX_T
- ! descriptor of main sparse matrix properties
- ! TYPE, BIND(C) :: MATRIX_DESCR
- ! INTEGER(C_INT) :: TYPE
- ! INTEGER(C_INT) :: MODE
- ! INTEGER(C_INT) :: DIAG
- ! END TYPE MATRIX_DESCR
- INTERFACE
- !****************************************************************************************
- !****************************** Computational routines **********************************
- !****************************************************************************************
- FUNCTION MKL_SPARSE_EE_INIT(pm) &
- BIND(C, name='MKL_SPARSE_EE_INIT')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- INTEGER(C_INT) MKL_SPARSE_EE_INIT
- END FUNCTION
- FUNCTION MKL_SPARSE_S_EV(which, pm, A, descrA, k0, k, E, X, res) &
- BIND(C, name='MKL_SPARSE_S_EV')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_FLOAT
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: which
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: X
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_S_EV
- END FUNCTION
- FUNCTION MKL_SPARSE_D_EV(which, pm, A, descrA, k0, k, E, X, res) &
- BIND(C, name='MKL_SPARSE_D_EV')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_DOUBLE
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: which
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: X
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_D_EV
- END FUNCTION
- FUNCTION MKL_SPARSE_D_GV(which, pm, A, descrA, B, descrB, k0, k, E, X, res) &
- BIND(C, name='MKL_SPARSE_D_GV')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_DOUBLE
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: which
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: B
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrB
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: X
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_D_GV
- END FUNCTION
- FUNCTION MKL_SPARSE_S_GV(which, pm, A, descrA, B, descrB, k0, k, E, X, res) &
- BIND(C, name='MKL_SPARSE_S_GV')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_FLOAT
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: which
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: B
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrB
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: X
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_S_GV
- END FUNCTION
- FUNCTION MKL_SPARSE_S_SVD(whichE, whichV, pm, A, descrA, k0, k, E, XL, XR, res) &
- BIND(C, name='MKL_SPARSE_S_SVD')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_FLOAT
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: whichE
- CHARACTER , INTENT(IN) :: whichV
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: XL
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: XR
- REAL(C_FLOAT), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_S_SVD
- END FUNCTION
- FUNCTION MKL_SPARSE_D_SVD(whichE, whichV, pm, A, descrA, k0, k, E, XL, XR, res) &
- BIND(C, name='MKL_SPARSE_D_SVD')
- USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_DOUBLE
- IMPORT SPARSE_MATRIX_T
- IMPORT MATRIX_DESCR
- CHARACTER , INTENT(IN) :: whichE
- CHARACTER , INTENT(IN) :: whichV
- INTEGER, INTENT(IN), DIMENSION(*) :: pm
- TYPE(SPARSE_MATRIX_T), INTENT(IN) :: A
- TYPE(MATRIX_DESCR) , INTENT(IN) :: descrA
- INTEGER, INTENT(IN) :: k0
- INTEGER, INTENT(INOUT) :: k
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: E
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: XL
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: XR
- REAL(C_DOUBLE), INTENT(INOUT), DIMENSION(*) :: res
- INTEGER(C_INT) MKL_SPARSE_D_SVD
- END FUNCTION
- END INTERFACE
- END MODULE MKL_SOLVERS_EE
|