An embedded language for GPU kernel programming.
- 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.
- 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.
- 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 ?
- 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.