ESYS13  Revision_
MKL.h
Go to the documentation of this file.
00001 
00002 /*******************************************************
00003 *
00004 * Copyright (c) 2003-2012 by University of Queensland
00005 * Earth Systems Science Computational Center (ESSCC)
00006 * http://www.uq.edu.au/esscc
00007 *
00008 * Primary Business: Queensland, Australia
00009 * Licensed under the Open Software License version 3.0
00010 * http://www.opensource.org/licenses/osl-3.0.php
00011 *
00012 *******************************************************/
00013 
00014 
00015 /**************************************************************/
00016 
00017 /* Paso: SystemMatrix: interface to intel MKL sparse solver */
00018 
00019 /**************************************************************/
00020 
00021 /* Copyrights by ACcESS Australia 2006 */
00022 /* Author: Lutz Gross, l.gross@uq.edu.au */
00023 
00024 /**************************************************************/
00025 
00026 #ifndef INC_PASO_MKL
00027 #define INC_PASO_MKL
00028 
00029 #include "SparseMatrix.h"
00030 #include "performance.h"
00031 
00032 # if defined(_WIN32) || defined(_WIN64)
00033 #define PARDISO pardiso
00034 #else
00035 #define PARDISO pardiso_
00036 #endif
00037 
00038 #ifdef MKL
00039 #include "mkl_pardiso.h"
00040 #endif
00041 
00042 
00043 #define MKL_ERROR_NO 0
00044 #define MKL_MTYPE_SYM -2
00045 #define MKL_MTYPE_UNSYM 11
00046 
00047 #define MKL_REORDERING_MINIMUM_DEGREE 0
00048 #define MKL_REORDERING_NESTED_DISSECTION 2
00049 #define MKL_PHASE_SYMBOLIC_FACTORIZATION 11
00050 #define MKL_PHASE_FACTORIZATION 22
00051 #define MKL_PHASE_SOLVE 33
00052 #define MKL_PHASE_RELEASE_MEMORY -1
00053 
00054 /* extern int PARDISO
00055 #         (void *, int *, int *, int *, int *, int *,
00056 #         double *, int *, int *, int *, int *, int *,
00057 #         int *, double *, double *, int *);
00058 */
00059 
00060 
00061 void Paso_MKL_free(Paso_SparseMatrix* A);
00062 void Paso_MKL(Paso_SparseMatrix* A, double* out, double* in, index_t reordering, dim_t numRefinements, bool_t verbose);
00063 #endif