Skip to content
@fastfields

fastfields

Welcome to fastfields πŸ‘‹

Fast tools for dense scalar and vector fields (implemented in C++/CUDA).

Project hierarchy

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

Popular repositories Loading

  1. .github .github Public

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…