My friend Antonio Cisternino recently pointed me to FSCL – a compiler from F# to OpenCL.
Nowadays, OpenCL is one of the most popular programming frameworks for high-performance computing over multicore and many-core devices. Thanks to OpenCL,different parallel architectures coming from an heterogeneous set of brands and companies can be programmed in an homogeneous, standard way. Nevertheless, OpenCL lacks of some aspects and facilities characterizing high-level parallel programming frameworks and, more generally, high-level languages, which makes parallel programming still difficult, error-prone and hardly portable. In the last few years there have been many activities toward raising abstraction over OpenCL, introducing facilities to write parallel code and enhancing portability of features and performances. In this document we present FSCL, an F# to OpenCL open compiler aimed at raising abstraction over OpenCL programming allowing programmers to express OpenCL kernels inside F# with all the benefits of integrated development, code completion and error reporting. Moreover, working over a Virtual Machine (VM) allows to automatize most of the effort. OpenCL programmers must spend in coding the host-side part of parallel computations, which means creating context, devices, buffers and coordinating the execution of the computation on the device.
I believe the project will also be able to make good use of the improved debugging information in F# quotations we’re introducing in F# 3.1.