Skip to content


The goal of Focal is to provide a concise and accessible Fortran interface to the OpenCL API while retaining the full functionality thereof. This is desirable in Fortran which as a language provides a higher level of abstraction than C; importantly this allows scientists and engineers to focus on their domain specific problem rather than details of low-level implementation.

The aims for Focal in particular are to:

  • remove the need to use c pointers in Fortran for the OpenCL API;
  • provide some level of type-safety through the use of typed buffer objects;
  • decrease the verbosity of the API calls while still providing the same functionality;
  • abstract away low-level details, such as buffer size in bytes, not appropriate to Fortran;
  • make it easier to write, debug and profile OpenCL programs.

Focal supports a subset of OpenCL v1.2 features.

See also