kunzmi/managedCuda

ManagedCUDA aims an easy integration of NVidia's CUDA in .net applications written in C#, Visual Basic or any other .net language.

What it solves

ManagedCUDA provides a way for .NET applications written in C#, Visual Basic, or other .NET languages to easily integrate and access NVIDIA's CUDA platform for GPU acceleration. It removes the need to write low-level C++ code to interface with the GPU, allowing .NET developers to manage device memory and execute kernels directly from their managed code.

How it works

The project acts as a comprehensive wrapper for the CUDA Driver API (version 13.2), providing a 1:1 representation of cuda.h in C#. It abstracts the CUDA context, kernels, and device variables into C# classes. It also includes wrappers for essential CUDA libraries such as cuBLAS, cuFFT, cuRand, cuSolver, cuSparse, NPP, nvjpeg, nvJitLink, and NVRTC.

Who it’s for

.NET developers who want to leverage NVIDIA GPU acceleration and CUDA libraries within their applications without leaving the C# ecosystem.

Highlights

  • Comprehensive Library Support: Wrappers for a wide range of CUDA libraries including cuBLAS, cuFFT, and NVRTC.
  • Easy Memory Management: Supports direct access to device memory via the [] operator and implicit converter operators for seamless data transfer between host and device.
  • Cross-Platform: Native Linux support for .NET Core >3.1, with compatibility for .NET Framework 4.8.
  • Graphics Interop: Includes wrappers for graphics interop with DirectX and OpenGL via SlimDX and OpenTK.
  • Flexible Typing: Supports user-defined value types (structs) in CudaDeviceVariable.

Related

  • Project
  • Project
  • Project
  • Project
  • Dispatch