Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Pardiso Optimization

TD5
Beginner
247 Views

Hallo, i am currently solving a relatively small (3000-6000 equations) system of equations with pardiso. Since i have to solve it millions of times for slightly different system matrices and right hand sides i am trying to omptimize it as much as possible. I already managed to shave a bit of time off by applying iparm(2)=0, so my question is if there are any more tricks that i could apply. The system matrix is real and not symmetric.

I noticed that pardiso takes quite some time for memory allocation, even though i am already reusing pt for every iteration. That seems unneccessary, especially for such a small system.

 

 

 MSGLVL=2
    PERM=0
    phase=13
    mtype=11
    error=0
    nrhs=1
    mnum=1

    maxfct=1
    mnum=1

    n=GIT%NX*GIT%NY
    iparm=0_8
    
    CALL PARDISOINIT(pt_temp,mtype,iparm)
    if (schleife == 1) pt=pt_temp
    iparm(2)=0
    
    CALL AMUX(n,ZUST%P0,Zwischenergebnis,A,ja,ia)
    Zwischenergebnis=SYS%RHS-Zwischenergebnis

    CALL PARDISO(pt, maxfct, mnum, mtype, phase, n, jac_a, jac_ia, jac_ja, perm, nrhs, iparm, msglvl, Zwischenergebnis, Zwischenergebnis2, error)
    ZUST%P0=ZUST%P0+Zwischenergebnis2  

 

0 Kudos
1 Reply
Steve_Lionel
Honored Contributor III
247 Views

MKL forum is here.

0 Kudos
Reply