Campy is an API for GPGPU programming for C#, currently targeting Windows 10 64-bit OS, CUDA GPU Toolkit 9.1.85, Net Core 2.0, Net Framework >= 4.6.1, Net Standard 2.0. It is loosely modeled after Microsoft’s C++ AMP, hence the name “C-AMP-Y”. Campy uses unattributed, anonymous C# lambda functions for GPU “kernel” code, offering locality of declaration of GPU kernel (a for-loop body) and caller (the ‘for ( for-initializeropt ; for-conditionopt ; for-iteratoropt )’ header of the for-loop statement). 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.
The goal of Campy is for writing, exploring, and documenting parallel algorithms, especially for the GPU. While there are several other APIs for GPU programming with NET–some currently more capable and speedier than Campy–Campy is simple and easy to use, perfect for describing an algorithm. It literally takes one minute to get it running (assuming you have the prerequisite software installed).
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. While there are other NET GPU APIs that have or are being developed, Campy is free and open source, and no license is required. Campy is under GIT version control in https://github.com/kaby76/campy.
Why Campy? Although GPGPU programming for the NVIDIA GPU has existed since 2007 for C, when I started looking at what was available in 2014 for C#, there was no good solution. At the beginning of 2017, I started developing Campy full time because I have not been able to find any work for a long time, and have since been driven into poverty. Even though I still love programming and computer science, I would never recommend that anyone pursue software development as a profession. The industry bemoans that there are “no qualified” programmers to do work, but it is simply not at all true.