Render graphics from GPU-resident tensors.

Caliper turns MPS and CUDA tensors into live ImGui graphics. Its Metal and Vulkan paths keep dense image and geometry views off the CPU staging path.

Source available · no packaged release

Tensor input MPS   CUDA
GPU path Metal   Vulkan
Frame output ImGui   ImPlot   ImPlot3D

One host, focused applets.

The host owns the window, rendering backend, UI contexts, and frame clock. Applets provide tools and compute through a small C ABI.

Applet runtime

Loads shared-library applets, checks their manifests and ABI epoch, and negotiates required services before launch.

Tensor bridge

Turns validated tensor descriptors into opaque texture IDs. Native backends keep dense views off the CPU staging path; the OpenGL fallback stages inside the host.

Shared services

Provides common contracts for jobs, metrics, device selection, artifacts, tabular data, exports, and host telemetry.

Backend status

macOSMetal default · GPU-resident MPS tensor path
WindowsVulkan default · CUDA external-memory interop
FallbackOpenGL 3.3 core · CPU-staged tensor upload

Tensor views stay inside the frame loop.

On native backends, Caliper hands tensor data to the renderer without a host-memory round trip. Colormap and blit work remains on the GPU, and ImGui receives the resulting texture in the same frame.

Curve and scatter coordinates may still use small CPU arrays. The GPU-resident path applies to dense image and geometry views.

Tensor bridge reference
Comparison between a host-staged plotting path and Caliper. The host-staged path copies a GPU tensor to a CPU array, encodes and decodes a file, then uploads a texture. Caliper performs the tensor-to-texture work on the GPU and draws it with ImGui in the same frame.
Native tensor bridge path compared with a file-and-browser plotting pipeline.

One applet contract, two GPU paths.

Graphics APIs stay behind the host renderer. Applets use the same tensor and UI contracts on both platforms.

macOS / Metal

Unified-memory path

Metal path on Apple silicon. A contiguous MPS tensor is validated, handed to Metal through unified memory, converted to a texture on the GPU, and drawn through ImGui.
MPS tensor data is colormapped or blitted on the GPU before ImGui draws it.

The Metal renderer is the macOS default. The bridge validates layout and device information before using the buffer; unsupported inputs are rejected instead of reinterpreted.

Windows / Vulkan

Device-local CUDA interop

Vulkan and CUDA path on Windows. A CUDA tensor stays in device-local memory, passes through a Vulkan-exported shared buffer and GPU colormap operation, and is drawn through ImGui without system-RAM staging.
The path remains in device-local memory, with one VRAM copy at most and no system-RAM staging.

Vulkan exports device-local memory for CUDA import and uses a shared timeline semaphore for GPU-side ordering. Device pairing is UUID-based; mismatches disable interop instead of crossing adapters.

Documentation

Tutorials for building applets, ABI and service reference, renderer architecture, compatibility rules, and the project decision log.