Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

Pardiso Optimization

TD5
Beginner
69 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
Black Belt Retired Employee
69 Views

MKL forum is here.

Reply