Campy is an API for GPGPU programming for C#, and loosely modeled after Microsoft’s C++ AMP. Campy uses unattributed, anonymous C# lambda functions for GPU code, providing a solution to the problem of locality of declaration of GPU kernel and caller. In other words, GPU and CPU code can be co-mingled, and there is no tagging of GPU code. The goal will be to use a unified memory model in order to provide automatic synchronization/shared GPU/CPU memory data structures, with an interface similar to the System.Threading.Tasks.Parallel class.
Campy uses LLVM for code generation, targeting 64-bit Windows with NVIDIA Maxwell or newer GPUs. The product also includes a NET language Base Class Library (BCL) that runs on the GPU. There are pre-releases, but only for demonstration. It is under active development, with an initial release sometime in early 2018.
Why Campy? Although GPGPU programming has existed since 2007, there is no good solution for C#. I started Campy to try to fill that gap. In the beginning of 2017, I started developing Campy full time because I have not been able to find work in software (outside of my family hiring me) for a long time, despite having two MS degrees with mostly A grades, three years of research and teaching computer science as a teaching fellow, and programming since 1984. In an industry that bemoans that there are “no qualified” programmers to do work, consistently brushing aside older programmers, I aim to prove otherwise.
Campy is under GIT version control in https://github.com/kaby76/campy.