/MultiBackends

playground development for multi backend management for GPU usage

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Multi-Backends

Playground repo for CUDA and OpenCL Backend development.

Roadmap

  • CMake build system
  • Device (CUDA, OpenCL)
    • Device initialisation
    • Device info
    • Device program cache
  • Backends (CUDA, OpenCL)
    • Device search
    • Device selection
    • Buffer
      • Buffer allocate to device (create)
      • Buffer copy to host (read)
      • Buffer copy to device (write)
      • Buffer copy device to device (copy)
      • Buffer free
    • Image (1D/2D/3D)
      • Image allocate to device (create)
      • Image copy to host (read)
      • Image copy to device (write)
      • Image copy device to device (copy)
      • Image free
    • Program (ocl) / Module (cuda) creation from source
    • Kernel launch
  • Backend Manager (singleton)
  • Array (CUDA, OpenCL)
    • Array creation
    • Array allocate to device (create)
    • Array copy to host (read)
    • Array copy to device (write)
    • Array copy device to device (copy)
    • Array free
  • Image (CUDA, OpenCL)
    • Image creation
    • Image allocate to device (create)
    • Image copy to host (read)
    • Image copy to device (write)
    • Image copy device to device (copy)
    • Image free
  • Execution
    • Generate Defines
    • Get Preamble
    • Manage kernel parameters
    • Launch kernel

Install

Git clone the repository and run cmake as followed:

cmake -S . -B ./build
cmake --build ./build --parallel 10

Requirements

  • CMake
  • C++ compiler
  • CUDA and/or OpenCL installed on the system