/Obsidian

Main Obsidian Repository

Primary LanguageHaskellOtherNOASSERTION

Obsidian

An embedded language for GPU kernel programming.

Current features

  • Pull arrays: traditional “arrays as function from index to value”
  • Push arrays: a computation that is parameterised on a “write function”.
  • Executing kernels from within Haskell is possible on platforms supported by the CUDA bindings (Linux, Mac). Obsidian.Run.CUDA.Exec provides a very low level interface to running kernels.

In Progress

  • Support for CUDA Vector types (float4, Double2).
  • Mutable arrays: Mutable arrays in shared memory can be created. Global mutable arrays can be passed into a kernel as an argument.
  • Atomic operations on mutable arrays.

TODOs

  • Interface with cub in some way. Allow the programmer to call functions from the cub library
    • Blockwide operations.
  • Look at code generation, is there a problem with the memory management ?

Versioning Policy (from Apr 14 2014 with the release of version 0.1.0.0)

  • A.B.C.D
  • A.B changes when API Changes (in a disruptive way)
  • C changes with additions that does not break existing programs
  • D Bugfixes and internal hacking.