Application Acceleration With FPGAs
Programmable Acceleration Cards (PACs), DCP, FPGA AI Suite, Software Stack, and Reference Designs

Quad Precision?

MSimm2
New Contributor I
905 Views

What options are there for doing greater than double precision on fpgas?

ie real quad precision/fp128, triple precision or even x87 and NOT double double

 

Can fpga opencl be extended with quad? (quad4 more specifically)

Is there an open source fpga opencl?

 

Does it give better than cpu flops (say libquadmath) or x87?

 

0 Kudos
2 Replies
HRZ
Valued Contributor III
546 Views

OpenCL does not have a built-in triple or quad precision data type. However, if you have C or OpenCL-based libraries that implement such data types and their associated mathematical operations, then you can probably use them on any standard OpenCL device, including FPGAs. On FPGAs in particular, if you have access to existing HDL libraries that implement such functions, then you can also use those libraries in OpenCL.

 

>Is there an open source fpga opencl?

If you mean free OpenCL compiler/SDK for FPGAs, Intel FPGA SDK for OpenCL does not require a license starting from v17.1. However, you will need a license for Quartus to be able to place and route the design.

 

>Does it give better than cpu flops (say libquadmath) or x87?

This is uncharted territory and will depend on many different things: the efficiency of the implementation on the FPGA, the size of the target FPGA, the performance of the CPU you are comparing against, etc. Assuming that you have access to IEEE, this is an interesting paper you might want to look at where they use HDL libraries for implementing quad-precision in OpenCL:

 

https://ieeexplore.ieee.org/abstract/document/8742336

MSimm2
New Contributor I
546 Views

Thanks for the link.

This is spot on what I wanted. my app is also an n-body opencl simulation https://sourceforge.net/projects/openclsolarsyst/

I wish Intel would add quad to their fpga opencl it's not like its an hardware issue like it would be on GPU's

quad is a reserved keyword in opencl (I't use to be anyway) but no one actually implemented it or extened the opencl spec to include it.

 

 

0 Kudos
Reply