Unsupported operation: X87TODP, long double precision (80-bit) math

Hi, I could find anything on searching for these compiler errors. Is there support for double precision math? Is there a compiler option and/or openacc notation to support this?

17, Accelerator restriction: datatype not supported: a
or
17, Accelerator restriction: unsupported operation: X87TODP

I get these errors from nvc++ when I use ‘long double’ types

long double a;

or

double a = 1.0L + 2;

Hi carlkyu,

Double precision is supported but the GPU’s don’t support 80-bit long double. These should be downgraded to double when generating the GPU code.

80-bit computation on the CPU is done in the x87 FPU, so the “X87TODP” operation is the cast from long double to double. Possibly due to the “1.0L”.

-Mat

I’ve updated the topic title for clarity. I couldn’t find anything on this error or this topic… your response clarifies what’s possible.

Thank you!