GPGPU programming with C# and F#

People often ask me about GPGPU (General Purpose GPU) programming with F#.

One project you might like to take a look at is Brahma, which lets you compile C# expression trees to the GPU. When combined with the F# Power Pack support for converting F# quotations to LINQ expression trees, this should give a viable technique for using GPUs for computation.

Another route is to use Microsoft Accelerator, an incubation project from Microsoft Research. New functionality includes:

  • Accelerator v2 is written as a native-code C++ library with a managed API wrapper
  • Execution on multicore CPUs in addition to DX9 GPUs
  • Extensible HW target interface enabling support for execution on new devices
  • Ability to execute on multiple devices within a single Accelerator instance
  • Asynchronous evaluation of parallel arrays
  • Reusable expression graphs: Across different devices and on the same device with different leaf-node data

Some samples in F# are on the Accelerator home page, and Tomas Petricek has an excellent guide.

Cheers!

Don