Fast tools for dense scalar and vector fields (implemented in C++/CUDA).
C++/CUDA sources
ββ fastfields-kernels # "Kernels" that operate at the single-element level
β # * header-only
β # * all functions are static (= hidden to linker)
β # * data and pointer types are templated
β # * sizes can be either statically or dynamically defined
|
ββ fastfields-csrc-cppyy # Functions that aim to be JIT-compiled by cppyy
β # * header-only
β # * implement parallel loops across elements
β # * data and pointer types are templated
β # * sizes are statically defined
|
ββ fastfields-csrc-cupy # CUDA kernels that aim to be JIT-compiled by cupy
β # * header-only
β # * operate on a subset of element
β # * data and pointer types are templated
β # * sizes are statically defined
|
ββ fastfields-cpu-impl # Header-only low level implementation that runs on the CPU
β β # * header-only
β β # * all functions are static (= hidden to linker)
β β # * implement parallel loops across elements
β β # * data and pointer types are templated
β β # * sizes are dynamically defined
| |
β ββ fastfields-cpu-lib ββ # Header + source files that end up in "fastfields-cpu.{ext}"
β β # * all functions are exported
β β # * inputs are dlpack tensors with CPU memory (no template)
β β # * dispatches dlpack dtype to correct template implementation
β β # * compiled by gcc/lvmm
| β
ββ fastfields-cuda-impl β # Header-only low level implementation that runs on the CPU
β β # * header-only
β β # * all functions are static (= hidden to linker)
β β # * implement parallel loops across elements
β β # * data and pointer types are templated
β β # * sizes are dynamically defined
β β
ββ fastfields-cuda-lib ββ€ # Header + source files that end up in "fastfields-cuda.{ext}"
β # * all functions are exported
β # * inputs are dlpack tensors with CUDA memory(no template)
β # * dispatches dlpack dtype to correct template implementation
β # * compiled by nvcc
β
β fastfields-lib # Header + souce files that end up in "fastfields.{ext}"
# * all functions are exported
# * inputs are dlpack tensors (no template)
# * dispatches dlpack device to correct lib (cpu or cuda)
# * links against fastfields-cpu and fastfields-cuda
# * compiled by gcc/lvmm
Python packages
ββ fastfields-cpu-impl ββ
ββ fastfields-csrc-cupy ββ€
β ββ jitfields # Python bindings using JIT compilation (cppyy and cupy)
β
ββ fastfields-lib
ββ fastfields-binds # Python bindings from dlpack to fastfields-lib, using nanobinds
ββ fastfields-numpy ββ # User-friendly numpy interface (with checks)
ββ fastfields-cupy ββ€ # User-friendly cupy interface (with checks)
ββ fastfields-torch ββ€ # User-friendly torch interface (with checks and autodiff)
ββ fastfields # Meta package