Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

Pardiso Optimization

TD5
Beginner
477 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
477 Views

MKL forum is here.

0 Kudos
Reply