OOPS I DID IT AGAIN: PRODUCTIVE FPGA PROGRAMMING WITH OPTIMA’S OPEN-SOURCE LIBRARY Panagiotis Miliadis, Chloe Alverti, Dimitris Theodoropoulos
Leveraging the device vendor runtime layer, OOPS kernels will
and Dionisios Pnevmatikatos, Institute of Communication
transfer data from the host processor to the hardware kernels,
and Computer Systems, National Technical University of
initiate and monitor data processing and send output results back
to the application layer. The OOPS library set will implement a large subset of the basic linear algebra subprograms (BLAS), the
building blocks for standard matrix and vector operations. It will
also implement a sparse matrix-vector (SpMV) multiplication
when executing certain high-performance computing (HPC)
kernel and a subset of the Portable, Extensible Toolkit for
applications. However, the difficulties in programming,
Scientific Computation (PETSc) suite.
interconnecting and handling them are well known. OOPS will expose a standard C-based application programming To address this problem, the EuroHPC JU OPTIMA project is
interface (API) in the form of function prototypes towards
developing open-source libraries for FPGA-based HPC systems
the application layer, meaning that developers will be able to
to deliver a significantly higher performance-to-energy ratio
integrate the library simply by including its API header in their
than that in existing HPC systems, including those made up
software code. OOPS can easily be integrated or combined
of low-power central processing units (CPUs) like ARM and
with existing frameworks, such as Parallelware, developed by
/ or graphics processing units (GPUs). In addition, OPTIMA
Appentra, or GASPI, created by Fraunhofer. Other widely used
will provide guidelines and open-source reference designs,
programming languages like Python will also be evaluated.
eventually allowing third parties to port applications to FPGAbased platforms in a similar way to porting to systems using
GPUs and / or manycores today.
OPTIMA will shortly publish a repository containing:
The OPTIMA OPen Source (OOPS) library will provide optimized software routines for a range of key operations in scientific and industrial applications, including vector operations, linear and differential equations, and matrix multiplications. OOPS will dramatically reduce the effort of mapping primitive
• hardware implementation of the supported kernels • host processor helper routines for easy deployment onto the FPGA • example projects with instructions on how developers can use the OOPS library
computational kernels onto OPTIMA’s reconfigurable logic,
OPTIMA will adopt a continuous integration / continuous
leading to faster execution time and improved energy efficiency.
deployment (CI / CD) approach for continuous updates and
The library will be integrated into the OPTIMA toolflow (see
maintenance of the library, to ensure computer-aided design
figure below), enabling seamless utilization of the available
(CAD) tool compatibility and FPGA device support, as well as
hardware resources by software developers.
optimal performance with respect to the available resources.
OPTIMA website BLAS
Balay S., Gropp W.D., McInnes L.C., Smith B.F. (1997) ‘Efficient Management of Parallelism in Object-Oriented Numerical Software Libraries’. In: Arge E., Bruaset A.M., Langtangen H.P. (eds) Modern Software Tools for Scientific Computing. Birkhäuser, Boston, MA. OPTIMA has received funding from the EuroHPC JU under grant agreement no. 955739. The JU receives support from the European Union’s Horizon 2020 research and innovation programme and OOPS intercommunication with the OPTIMA toolflow
32 HiPEACINFO 66
Greece, Germany, Italy, the Netherlands, Spain and Switzerland.