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|
- 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.
|ILGPU||Yes||Yes. Data must be placed in a container, e.g., ArrayView.||Yes||No||Yes||No|
Last updated Nov 17, 2018.