GitHunt
DI

discosultan/LinqToCompute

Experimental Vulkan compute provider for .NET LINQ

LinqToCompute

Experimental Vulkan compute provider for .NET LINQ. The purpose of this project is to evaluate the capabilities and potential pitfalls of such a provider. Only a very limited set of functionality is implemented.

The entire public API consists of a single extension method AsCompute to IEnumerable{T}.

int[] input = Enumerable.Range(0, 200_000_000).ToArray();

input             .Select(x => x + 1).ToArray(); // 3.098s Regular LINQ (single CPU core)
input.AsParallel().Select(x => x + 1).ToArray(); // 1.290s PLINQ (multiple CPU cores)
input.AsCompute() .Select(x => x + 1).ToArray(); // 0.954s GPU

Related Work

Languages

C#100.0%

Contributors

MIT License
Created March 19, 2017
Updated February 2, 2024