#define MKL_INT int #include #include #include #include "mkl.h" #define MKL_INT int using namespace std; void mkl_version(){ MKLVersion Version; mkl_get_version(&Version); printf("MKL v. %d.%d.%d \n", Version.MajorVersion,Version.MinorVersion,Version.UpdateVersion); //printf("Platform: %s\n", Version.Platform); printf("Processor optimization: %s\n", Version.Processor); printf("\n"); } int main() { void** pt = new void*[64]; MKL_INT* iparm = new MKL_INT[64]; iparm[0] = 1; //iparm[1] = 2; iparm[1] = 3; iparm[2] = 0;//4 ???? iparm[3] = 0; iparm[4] = 0; iparm[5] = 1; iparm[6] = 0; iparm[7] = 1; iparm[8] = 0; iparm[9] = 12; //8 for default value for symmetric indefinite matrices (mtype =-2, iparm[10] = 0; // //iparm[10] = 0; // defect -- jira -- verbose are very different iparm[11] = 0; iparm[12] = 0; //iparm[12] = 0; iparm[13] = 0; iparm[14] = 738059; iparm[15] = 655255; iparm[16] = 3230874; iparm[17] = 353891710; iparm[18] = 6075185; iparm[19] = 0; iparm[20] = 3; iparm[21] = 0; iparm[22] = 0; iparm[23] = 0; //Disable iparm[10] (scaling) and iparm[12]= 1 (matching) when using the two-level factorization algorithm iparm[24] = 0; iparm[25] = 0; iparm[26] = 0;//1; //Matrix Checker iparm[27] = 0; iparm[28] = 0; iparm[29] = 0; iparm[30] = 0; iparm[31] = 0; iparm[32] = 0; iparm[33] = -1; iparm[34] = 0; iparm[35] = 0; iparm[36] = 0; iparm[37] = 0; iparm[38] = 0; iparm[39] = 0; iparm[40] = 0; iparm[41] = 0; iparm[42] = 0; iparm[43] = 0; iparm[44] = 0; iparm[45] = 0; iparm[46] = 0; iparm[47] = 0; iparm[48] = 0; iparm[49] = 0; iparm[50] = 0; iparm[51] = 0; iparm[52] = 0; iparm[53] = 0; iparm[54] = 0; iparm[55] = 0; iparm[56] = -1; iparm[57] = 0; iparm[58] = 0; iparm[59] = 0; iparm[60] = 738059; iparm[61] = 1026905; iparm[62] = 434664; iparm[63] = 0; mkl_version(); vector a_; ifstream inputFile("A.txt"); if (inputFile) { double value; while (inputFile >> value) { a_.push_back(value); } inputFile.close(); } vector ia_; ifstream inputFile2("IA.txt"); if (inputFile2) { int value; while (inputFile2 >> value) { ia_.push_back(value); } inputFile2.close(); } vector ja_; ifstream inputFile3("JA.txt"); if (inputFile3) { int value; while (inputFile3 >> value) { ja_.push_back(value); } inputFile3.close(); } MKL_INT maxfct = 1; MKL_INT mnum = 1; MKL_INT mtype = -2; MKL_INT n = 1096299; MKL_INT idum = 4; MKL_INT nrhs = 0; MKL_INT msglvl = 1; double ddum = 0.0; MKL_INT error = 0; printf("...phase == 11...\n"); MKL_INT phase = 11; PARDISO (pt, &maxfct, &mnum, &mtype, &phase,&n, &a_[0], &ia_[0], &ja_[0], &idum, &nrhs, iparm, &msglvl, &ddum, &ddum, &error); if(error != NULL){ printf("...pardiso returns the %d after the 11 phase \n", error); } printf("...phase == 22...\n"); phase = 22; PARDISO (pt, &maxfct, &mnum, &mtype, &phase,&n, &a_[0], &ia_[0], &ja_[0], &idum, &nrhs, iparm, &msglvl, &ddum, &ddum, &error); printf("...phase == -1...\n"); phase = -1; PARDISO (pt, &maxfct, &mnum, &mtype, &phase,&n, &ddum, &ia_[0], &ja_[0], &idum, &nrhs,iparm, &msglvl, &ddum, &ddum, &error); printf("...test finished...\n"); return 0; }