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 | JIT. LLVM | CUDA version 9 | None |
Cudafy | 4-Aug-2015; Inactive | Yes | Free | Nuget | JIT. Decompiler of CIL; converter to C++/CUDA source; Compilation via NVCC | CUDA version 7 | |
Alea GPU | ~Oct-2017 | No | $$$ | Nuget | JIT. LLVM (NVVM) | ||
CudaSharp | 29-Jan-2014; Inactive | Yes | Free | N.A. | JIT. LLVM | NVIDIA GPU | |
Altimesh | Dec-2017 | No | Website says “free”. However, a license is required, and the license expires after a month or so. | Visual Studio Marketplace | AOT | 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. The website says it is free, but the license must be renewed. Consequently, it’s difficult to investigate this product. |
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 | Active. | Unclear. Köster, the author of ILGPU, says it’s open source under “University of Illinois/NCSA Open Source License”, but no C#/C++ source code has been updated since December 30, 2017, while there has been releases 0.3 and 0.4-beta. | Free for now. See “Open Source?” note. | Nuget | LLVM | CUDA GPU, CPU | API–Good. |
Brahma | 10-Nov-2017 | Yes | Free | Converts 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 | Requires Attributed C# (or other NET language) | Data containers for CPU/GPU Global memory | Value Types Supported | Reference Types Supported | Generics Supported | NET Framework included or substituted |
Campy | No | No–seemless C# data structures. | Yes | Yes | Yes | Yes |
Alea GPU | No | No–seemless C# data structures. | Yes | No | Yes | No |
Altimesh | Unclear. Kernel code appears as lambda in Parallel.For() call. However, attributes are often used, “[EntryPoint]”. | No–seemless C# data structures. Additional structures provided, but unclear why.
|
Yes | Yes | Yes | No |
ILGPU | Yes | Yes. Data must be placed in a container, e.g., ArrayView. | Yes | No | Yes | No |
Last updated Nov 17, 2018.