Skip to main content

Formal methods for GPU software development and verification

Running

Running

Organisational Unit
Activity Type
Implementation progress
0%
12 December 2022

Duration: 12 months

Objective

On-board data processing requires increasing computational power not possible to be provided by space-grade processors. According to the ESA funded GPU4S (GPU for Space) activity, embedded GPUs are among the most promising candidate platforms in terms of obtained performance. While GPUs have easy to learn programming models, such as CUDA and OpenCL, their dependence on pointers and dynamic memory allocation make the verification of their software challenging. While formal methods have slowly found their way in CPU programs, such as in SPARK Ada and Frama-C, such tools do not yet support for GPUs. In this project we propose to extend a GPU programming model e.g. CUDA with support for formal proofs of software properties as these are supported in the aforementioned languages. This will allow to increase the confidence in GPU software, as it will support both more powerful static analysis of GPU code, as well as support for dynamic verification at program runtime, for those parts of the code that are not possible to be proven. Our implementation will be open source, as Frama-C and Ada SPARK are, and will be possible to be extended by the community in the future. The implementation of this project will increase considerably the confidence on critical GPU code, e.g. code which can be used in the future to accelerate a vision based navigation algorithm on a GPU, and moreover will reduce the verification and qualification cost of GPU code. In other words, the benefits of the application of formal methods in GPUs will be the same as the ones that can be enjoyed nowadays for CPU code.

Contract number
4000140141
Programme
OSIP Idea Id
I-2022-01258
Related OSIP Campaign
New concepts for onboard software development
Main application area
Generic for multiple space applications
Budget
100000€
FORMAL METHODS FOR GPU SOFTWARE DEVELOPMENT AND VERIFICATION