Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

PARDISO single precision

xian-zhong_guous_cd-
761 Views
I found PARDISO single precision takes longer than double precision (at least for factorize to factorize), which contradiates my expectation:

single precision:

Summary PARDISO: ( factorize to factorize )
================

Times:
======
Time A to LU: 0.000000 s
Factorization: Time for writing to files : 0.000000
Factorization: Time for reading from files : 0.000000
Time numfct : 4066.776367 s
Time malloc : 0.000056 s
Time total : 4066.812012 s total - sum: 0.035689 s

Statistics:
===========
< Parallel Direct Factorization with #processors: > 8
< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b>
#equations: 5389726
#non-zeros in A: 42250735
non-zeros in A (%): 0.000145

#right-hand sides: 1

< Factors L and U >
#columns for each panel: 96
#independent subgraphs: 0
< Preprocessing with state of the art partitioning metis>
#supernodes: 2241484
size of largest supernode: 9951
number of nonzeros in L 3046299967
number of nonzeros in U 1
number of nonzeros in L+U 3046299968
gflop for the numerical factorization: 11175.376953

gflop/s for the numerical factorization: 2.747969
------------------------------------------------------------------------------------------------------------
double precision:

Summary PARDISO: ( factorize to factorize )

================

Times:

======

Time A to LU: 0.000000 s

Factorization: Time for writing to files : 0.000000

Factorization: Time for reading from files : 0.000000

Time numfct : 663.914768 s

Time malloc : 0.000054 s

Time total : 663.954133 s total - sum: 0.039310 s

Statistics:

===========

< Parallel Direct Factorization with #processors: > 8

< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b>

#equations: 5389726

#non-zeros in A: 42250735

non-zeros in A (%): 0.000145

#right-hand sides: 1

< Factors L and U >

#columns for each panel: 96

#independent subgraphs: 0

< Preprocessing with state of the art partitioning metis>

#supernodes: 2241484

size of largest supernode: 9951

number of nonzeros in L 3046299967

number of nonzeros in U 1

number of nonzeros in L+U 3046299968

gflop for the numerical factorization: 11175.376693

gflop/s for the numerical factorization: 16.832547

0 Kudos
5 Replies
Sergey_P_Intel2
Employee
761 Views
Hi,

Described issue looks too strange becauseon our tests single precision version of PARDISO provides significantly better performance than double precision version.So is it possible for you to provide us with your test case? Alsoplease provide us with MKL version you useand withplatform description.

Regards,
Sergey
0 Kudos
Sergey_Solovev__Inte
New Contributor I
761 Views

Hi,
Could you provide us with the following info:
What the iparm(60) do you set? What MKL_PARDISO_OOC_MAX_CORE_SIZE do you set and how much RAM your system has?
Regards, Sergey

0 Kudos
xian-zhong_guous_cd-
761 Views
From the article

Single precision real and complex data support in PARDISO

: http://software.intel.com/en-us/articles/single-precision-real-and-complex-data-support-in-pardiso/, I set iparm(28)=1 for single precision. However, I don't find this instruction in manaul. What's the right way to solve single precision? Just input single precision A,b and x?

By the way, I set MKL_PARDISO_OOC_MAX_CORE_SIZE=20000 and my RAM=32G.
0 Kudos
xian-zhong_guous_cd-
761 Views
I am really confused by how to use single precision in PARDISO. I got double A,b and x to begin with, then I input them into PARDISO by casting them into (float*). For example, for facrotization,
PARDISO (pt, &maxfct, &mnum, &mtype, &phase,
&N, (float*)mkl_a, mkl_ia, mkl_ja, &idum, &nrhs,
iparm, &msglvl, &ddum, &ddum, &error);

In adiition, I set iparm(28)=1. However, I got gabage sometime for solution, even though error=0.
0 Kudos
Sergey_P_Intel2
Employee
761 Views
Hi,

According to MKL manual, for single precision mode A, x and b should be offloat type:


A: DOUBLE PRECISION - for real types of matrices (mtype=1,2, -2 and 11) and for double precision PARDISO (iparm(28)=0)

REAL - for real types of matrices (mtype=1, 2, -2 and 11) and for single precision PARDISO (iparm(28)=1)

Regards,
Sergey

0 Kudos
Reply