Here goes,
Relevant information (I hope):
- Using Pardiso to solve linear set of equations Ax = b
- matrix A can be extremely large & sparse, nonsymmetric, and is also put into csr format using mkl routine
Below is the section of code where I call Pardiso, it works great everything is fine. I was really hoping someone could look at my set up and let me know if there is something I can do to make it even faster, or if it is as fast as it's going to get.
I also use mkl_set_num_threads(n) above the code to make use of multiple cores according to the desired n.
CODE
// Call pardiso solver
MKL_INT pt[64], iparm[64];
for(i = 0; i < 64; i++) {
pt[i] = 0;
iparm[i] = 0;
}
MKL_INT *perm;
perm = (MKL_INT*)mkl_malloc(m*sizeof(MKL_INT),16);
if (perm == NULL)
{
cout << ">>> error allocating perm"<< endl;
return (0);
}
MKL_INT maxfct, mnum, mtype, phase, nrhs, msglvl, error;
maxfct = 1;
mnum = 1;
mtype = 11;
nrhs = 1;
msglvl = 1;
iparm[0] = 1;
iparm[1] = 3;
iparm[26] = 1;
iparm[34] = 1;
iparm[60] = 0;
error = 0;
// Pardiso Direct Solver
phase = 13;
pardiso (pt, &maxfct, &mnum, &mtype, &phase, &n, acsr, ia, ja, perm, &nrhs, iparm, &msglvl, b, solution, &error);
if (error != 0) {
cout << "ERROR during symbolic factorization: "<< error << endl;
}
Again all I am really seeking is whether or not my call could be any better, or if this is optimal. Let me know if there is any additional information needed, and I will be checking my email frequently today to respond quickly.
Sincerely, Jared