HorneSci / HST API

Documentation

Try HST with a simple workload descriptor.

Use this page as a quick reference for the public demo endpoint. Start with the defaults, then adjust the parameters to match the shape of the workload you want to explore.

The fastest way to get a feel for the API is to copy one of the example URLs below, open it in a browser, or run it with `curl` and inspect the returned JSON.

Quick start

One request, one result.

Use the default shape for a broad, balanced example, or tune the descriptor when you want to stress a specific pattern.

curl 'https://hornesci-api.pages.dev/api/demo'

A typical custom request looks like this:

curl 'https://hornesci-api.pages.dev/api/demo?rows=60000&cols=60000&tile_width=32&active_col_tiles=4&reuse_steps=8&fill=0.45&pattern=tile-local'

Parameters

What each knob does

rows / cols

default: 60000

Sets the size of the workload descriptor. Larger numbers describe a broader system.

tile_width

default: 32

Controls the tile size used by the example. Start with 32, then try 16 or 64 if you want to compare shapes.

active_col_tiles

default: 4

How many column tiles are active in the update. Smaller values keep the change more localized.

reuse_steps

default: 8

How many times the same descriptor is reused. Higher values show the effect of repeated calls.

fill

default: 0.45

Approximate density inside the active area. Higher fill means more touched work in the same region.

pattern

tile-local, tile-burst, scattered

Chooses the update shape. `tile-local` is the best starting point; `scattered` is the hardest case.

backend

synthetic-envelope, arrayfire-csc-delta

Switches between the default synthetic demo and the ArrayFire-backed integration path.

scheduler_mode

baseline-csc, hst-fronted

Use `hst-fronted` when you want the demo to show the HST-dispatched route for the ArrayFire path.

Examples

Copy-paste requests for common cases

1. Start with the default shape

Good for a first pass. It uses the same defaults the endpoint would choose if you omit every query parameter.

https://hornesci-api.pages.dev/api/demo
  • Use this when you want the shortest possible request.
  • It is the best "hello world" path for the demo endpoint.

2. Local, reusable updates

Use this when the update is concentrated in a few adjacent tiles and you expect the same pattern to repeat.

https://hornesci-api.pages.dev/api/demo?rows=60000&cols=60000&tile_width=32&active_col_tiles=4&reuse_steps=8&fill=0.45&pattern=tile-local
  • Best starting point for most HST-style workloads.
  • Good for explaining locality, reuse, and the shape of the returned envelope.

3. Broader or harder updates

Use these to compare against the local case. `tile-burst` spreads the work further; `scattered` is the stress case.

https://hornesci-api.pages.dev/api/demo?rows=24000&cols=12000&tile_width=32&active_col_tiles=12&reuse_steps=4&fill=0.3&pattern=tile-burst
https://hornesci-api.pages.dev/api/demo?rows=60000&cols=60000&tile_width=32&active_col_tiles=4&reuse_steps=8&fill=0.45&pattern=scattered
  • Use `tile-burst` to show a less concentrated update shape.
  • Use `scattered` to show how the demo behaves when locality is weak.

4. Show the integration path

If you want the ArrayFire-backed route, add the backend and scheduler parameters to the same descriptor.

https://hornesci-api.pages.dev/api/demo?rows=60000&cols=60000&tile_width=32&active_col_tiles=4&reuse_steps=8&fill=0.45&pattern=tile-local&backend=arrayfire-csc-delta&scheduler_mode=hst-fronted
  • Use this when you want the request to include integration metadata.
  • It pairs well with the default `tile-local` example above.

Response

What to look for in the JSON

input The descriptor the endpoint used after applying defaults and validation.
envelope.fit A simple fit signal that summarizes whether the shape looks favorable for the demo.
envelope.estimated_speedup_band A rough range for the synthetic envelope, useful for side-by-side comparisons.
integration Present when you ask for the ArrayFire CSC delta path with HST dispatch metadata.
synthetic_run.match Confirms the sample synthetic run matches the baseline checksum for the selected descriptor.