scalapack and quadruple precision


Is it possible to compile SCALAPACK in quadruple precision using the PG compiler ?




As far as I can tell, pgf90 v5.2-1 doesn’t support quad precision. The result of my Test_Type_Kinds program for PGI on a linux x86 system is:

Kind types:
Double float kind type: 8
Quad float kind type: 8

(If the Quad kind type doesn’t exist, i.e. = -1, then my code defaults to the next “largest” type, in this case the Double float kind which == 8.)

Using Lahey v6.2 shows that quad precision is available on x86,

Kind types:
Double float kind type: 8
Quad float kind type: 16

but my experience has been that, when available, Quad precision is extremely slow since the calcs aren’t done in hardware, but in software. But, I know nothing about SCALAPACK or your hardware, so my observations may not apply.



Hi Karim,

PGI does not support quad precision because of the lack of hardware support. As Paulv points out, software support of real*16 would have very poor performance.

Thanks for the question.


Thanks for your answers,
For the problem of performance with quad precision, I though to use opteron processors.



Hi Karim
Opteron extends the x86 processor by enlarging the integer registers from 32bit to 64bits, adding 8 new 64bit integer registers, and adding 8 new SSE registers. However, it does not have hardware support for 128bit floating bit arithmetic. The 128bit SSE registers are used in four modes:

  • single 32bit floating point, ignoring the other 96 bits (SSE1)
  • packed 4x32bit floating point, using all 128 bits (SSE1)
  • single 64bit floating point, ignore the other 64 bits (SSE2)
  • packed 2x64bit floating point, using all 128 bits (SSE2)
    None of the x86 processors have hardware for 128bit floating point arithmetic.
    I’m not sure any mainstream microprocessor does.


Does quad precision kind support yet?
I have the error KIND value must be non-negative

If so, which switch should I use?


Hi pcheechoung89936,

We don’t support quad precision due to a lack of hardware support for it. There are software libraries to emulate that precision should you need it but those come at a performance cost.

Can I know the software libraries which emulate this Quad Precision?

Doing a web search for “arbitrary precision fortran library” you’ll find several options.

While it’s been a while since I’ve used it, MPFUN might work for what you want, though there are others as well.


1 Like