tech-quantum / Amplifier.net
Licence: mit
Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Stars: ✭ 92
Projects that are alternatives of or similar to Amplifier.net
Amplifier.NET
Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Stars: ✭ 142 (+54.35%)
Mutual labels: opencl, simd, gpgpu
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+1683.7%)
Mutual labels: compiler, gpgpu, opencl
John
John the Ripper jumbo - advanced offline password cracker, which supports hundreds of hash and cipher types, and runs on many operating systems, CPUs, GPUs, and even some FPGAs
Stars: ✭ 5,656 (+6047.83%)
Mutual labels: simd, gpgpu, opencl
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+306.52%)
Mutual labels: compiler, gpgpu, opencl
Tornadovm
TornadoVM: A practical and efficient heterogeneous programming framework for managed languages
Stars: ✭ 479 (+420.65%)
Mutual labels: gpgpu, opencl
Compute Runtime
Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
Stars: ✭ 593 (+544.57%)
Mutual labels: gpgpu, opencl
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+8045.65%)
Mutual labels: compiler, opencl
Amgcl
C++ library for solving large sparse linear systems with algebraic multigrid method
Stars: ✭ 390 (+323.91%)
Mutual labels: gpgpu, opencl
Vexcl
VexCL is a C++ vector expression template library for OpenCL/CUDA/OpenMP
Stars: ✭ 626 (+580.43%)
Mutual labels: gpgpu, opencl
Knlmeanscl
An optimized OpenCL implementation of the Non-local means de-noising algorithm
Stars: ✭ 92 (+0%)
Mutual labels: gpgpu, opencl
Bitcracker
BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker
Stars: ✭ 463 (+403.26%)
Mutual labels: gpgpu, opencl
Bytecoder
Rich Domain Model for JVM Bytecode and Framework to interpret and transpile it.
Stars: ✭ 401 (+335.87%)
Mutual labels: compiler, opencl
Sycl Dnn
SYCL-DNN is a library implementing neural network algorithms written using SYCL
Stars: ✭ 67 (-27.17%)
Mutual labels: gpgpu, opencl
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+761.96%)
Mutual labels: gpgpu, opencl
Openclpapers
A Collection of Articles and other OpenCL Papers
Stars: ✭ 37 (-59.78%)
Mutual labels: gpgpu, opencl
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-22.83%)
Mutual labels: gpgpu, opencl
Cekirdekler
Multi-device OpenCL kernel load balancer and pipeliner API for C#. Uses shared-distributed memory model to keep GPUs updated fast while using same kernel on all devices(for simplicity).
Stars: ✭ 76 (-17.39%)
Mutual labels: gpgpu, opencl
Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+309.78%)
Mutual labels: gpgpu, opencl
Amplifier.NET
Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
Below is the sample Kernel you can write in CSharp
[OpenCLKernel]
void add_float([Global]float[] a, [Global] float[] b, [Global]float[] r)
{
int i = get_global_id(0);
b[i] = 0.5f * b[i];
r[i] = a[i] + b[i];
}
[OpenCLKernel]
void Fill([Global] float[] x, float value)
{
int i = get_global_id(0);
x[i] = value;
}
Now this kernel will be converted to C99 format which is specific instruction for OpenCL. Let's do some magic to execute the kernel using OpenCL
- Create an instance of OpenCL compiler. You can list all the available devices.
var compiler = new OpenCLCompiler();
Console.WriteLine("\nList Devices----");
foreach (var item in compiler.Devices)
{
Console.WriteLine(item);
}
- Select a device by id and load the Sample kernel created.
compiler.UseDevice(0);
compiler.CompileKernel(typeof(SimpleKernels));
Console.WriteLine("\nList Kernels----");
foreach (var item in compiler.Kernels)
{
Console.WriteLine(item);
}
- Declare variable and do some operation which will run on any hardware selected like Intel CPU/GPU, NVIDIA, AMD etc.
Array a = new float[] { 1, 2, 3, 4 };
Array b = new float[4];
Array r = new float[4];
var exec = compiler.GetExec<float>();
exec.Fill(b, 0.5f);
exec.add_float(a, b, r);
Console.WriteLine("\nResult----");
for(int i = 0;i<r.Length;i++)
{
Console.Write(r.GetValue(i) + " ");
}
Result:
Documentation
- Base: https://tech-quantum.github.io/Amplifier.NET/
- Articles: https://tech-quantum.github.io/Amplifier.NET/articles/intro.html
- API Reference: https://tech-quantum.github.io/Amplifier.NET/api/Amplifier.html
Any contribution is welcome
Please fork the code and suggest improvements by raising PR. Raise issues so that I can make this library robust.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].