Free and open source
JIT compiler and .NET framework
for GPU programming in C#

Welcome! This website contains documentation and examples for Campy.

Panel 1

What Campy is

Based on the ECMA standards for CLI and C#, Campy is the only free and open-source JIT compiler and substituting .NET base class layer that enables GPGPU programming for NET Core and Framework applications for most C#. It is targeted for Windows 10 64-bit and Ubuntu 16.04 64-bit OSes, CUDA GPU Toolkit 9.1, Net Core 2.x, Net Framework >= 4.6.1, Net Standard 2.0, and NVIDIA GPUs with sm_30 (Kepler) or newer architecture.

Campy offers a unique blend of features: able to execute all C# on a GPU, except for certain OS-specific code; a small API that allows for clean and simple implementations to be developed; easy integration into an application via Nuget. Visual Studio is not required. There are no extra build steps. Just compile your program normally, and Campy will JIT at runtime. Full deployment of your app is achieved via Net Core 2.x as a self-contained deployment.

Note, Campy is still in development. The releases are debug builds, with no emphasis on the speed of the code, mostly correctness of the results. Check out the blog for further details.

Panel 2

What Campy is not

Campy cannot parallelize an existing compiled program. You need to write C# code to call Campy.Parallel.For(), and rebuild your app. Campy is not a platform-specific API, so you cannot call CUDA, C++/AMP, or OpenCL directly. Campy cannot run without a GPU, which is currently only targeted for NVIDIA GPUs. Campy is not a panacea for discharging you from understanding GPUs and GPGPU programming; you still need to understand how to program a GPU. However, there will be a plenty of examples of Campy to get you on your way.

 

 

Panel 3

What Campy can do

  • Use Campy to run Parallel.For() loop code written in C# on a GPU;
  • C# code in Parallel.For() can be virtually any C# code;
  • Develop fully functional and easy-to-understand parallel algorithms;
  • Document parallel algorithms in a platform independent language;

Learn more

Panel 4 Placeholder