APIs for GP-GPU computing in NET languages

Traditional APIs–Kernels written in C++, with C# (or NET) API

API Last Updated Open source? Cost? Install type GPU target GPU software? Documentation?
Cloo 19-12-2012; Inactive Yes Free SourceForge Download OpenCL supported devices. I assume 1.2 devices, although Enums.cs does not have OpenCLVersion  updated for 1.2. It has not been updated for 2.0 devices. Drivers for OpenCL devices installed. Negligible
CSCuda 29-Sep-2016; Inactive Yes Free Nuget NVIDIA CUDA NVIDIA GPU Toolkit 8. None
ManagedCUDA 2-Jun-2017; As far as I know, Kunzmi still is supporting this, but it’s behind the latest CUDA GPU Toolkit; (Maybe wisely behind.) Yes Free Nuget Various NVIDIA CUDA Requires NVIDIA GPU Toolkit 8 or less; not ported to GPU T.K. v9. Minimal
OpenCL.NET 23-10-2013; Inactive Yes Free Nuget OpenCL supported devices. I assume 1.2. Drivers for OpenCL devices installed. Negligible
Swigged.CUDA 9-Nov-2017 Yes Free Nuget Various NVIDIA CUDA Requires NVIDIA GPU Toolkit 9 Minimal

Notes:

  • There are other APIs which one could use, but they appear specialized or part of another tool, so may not be suitable.
  • There are forked versions of Cloo which have been updated versions on Github, but I have not found anything that has changed in the last year.

 

CIL (NET language) Compilers

API Last Updated Open source? Cost? Install type Compiler type Targets Documentation?
Campy Dec-2017 Yes Free Nuget LLVM CUDA version 9 None
Cudafy  4-Aug-2015; Inactive Yes Free Nuget Decompiler of CIL; converter to  C++/CUDA source; Compilation via NVCC CUDA version 7  
Alea GPU ~Oct-2017 No $$$ Nuget LLVM (NVVM)    
CudaSharp 29-Jan-2014; Inactive Yes Free N.A. LLVM NVIDIA GPU  
Altimesh Dec-2017 No Website says “free”. However, if “free”, why is a  license required? Visual Studio Marketplace LLVM? Unclear, as CUDA source code is compiled for generated CUDA source files. GPU, CPU Install-Good; API–Poor documentation of assembly Hybridizer.Runtime.CUDAImports API. Unclear whether “EntryPoint” can only contain one Parallel.For or one for-loop.
GpuLinq 6-Apr-2015; Inactive Yes Free       Note: Build using GpuLinq.sln fails–LinqOptimizer,CSharp problem, which in itself does not build. Hasn’t bee update for a long, long time.
ILGPU 19-Dec-2017 Yes Free Nuget LLVM CUDA GPU, CPU API–Good.
Brahma 10-Nov-2017 Yes Free    Converter to OpenCL source.    

This list contains only projects that have either source code for building the product from scratch, or a download available. Other projects exist, but I cannot find either source or download.

CIL (NET language) Compilers–Language Features

 

API Kernel Code Language Requires Attributed C# (or other NET language) Lambda support? Variable Capture with lambda Data containers for CPU/GPU Global memory Value Types Supported Reference Types Supported Generics Supported
Campy NET language No Yes Yes All C# accepted in kernel code. Memory copied implicitly. Yes Incomplete Yes
Alea GPU NET language No Yes Yes Value types accepted in kernel. Memory copied implicitly. Yes No Yes
Altimesh NET language Yes. Kernel code appears in a separate method, tagged as “[EntryPoint]”. No N.A. All C# accepted in kernel code; however, array container types seem to be needed, e.g., FloatResidentArray

 

Yes Yes Yes
ILGPU NET language Yes No N.A. Data must be placed in a container, e.g., ArrayView. Elements in the array must be value types as reference types are not supported. Yes No Yes

Last updated 28-Dec-2017