Skip to main content

Distributed compute orchestration for the SandX platform

Project description

sandx-compute

Distributed compute orchestration for the SandX platform.

CI Python 3.10+ License: Apache 2.0

Part of the SandX Lab computational infrastructure ecosystem.


What It Does

sandx-compute is the resource orchestration layer for the SandX platform. It tracks available compute nodes, matches workloads to nodes by capability, and manages the full job lifecycle.

Submit job  →  Scheduler  →  ResourceRegistry  →  Allocated node
                                                     ↓
                                          complete / fail / cancel
                                                     ↓
                                              Node released

Status

v0.1 — Working

Component Status
ResourceRegistry — node registration and capability tracking Working
Scheduler — requirement-aware first-fit allocation Working
Job lifecycle — submit, complete, fail, cancel Working
Distributed consensus locking Planned (Phase 3)
PyPI package Working

Installation

pip install sandx-compute

Or from source:

git clone https://github.com/sandxlab/sandx-compute
cd sandx-compute
pip install -e ".[dev]"

Demo

pip install sandx-compute
python -m examples.schedule_jobs

Registers a 5-node compute cluster (CPU + GPU nodes), submits 6 jobs with mixed requirements, shows allocation decisions, and walks through the full job lifecycle — no external data required.

Quick Start

from sandx_compute import ResourceRegistry, Scheduler

# Register compute nodes
registry = ResourceRegistry()
registry.register("cpu-1", cpu_cores=8, ram_gb=32)
registry.register("gpu-1", cpu_cores=16, ram_gb=64, gpu="A100", vram_gb=80)
registry.register("gpu-2", cpu_cores=8, ram_gb=32, gpu="T4", vram_gb=16)

# Create a scheduler
scheduler = Scheduler(registry)

# Submit a GPU job
job = scheduler.submit("train", requirements={"gpu": True, "min_vram_gb": 40})
print(job)
# Job(id=3f2a1b8c, task='train', status='running', node='gpu-1')

# Complete the job — releases the node
scheduler.complete(job)
print(registry.get("gpu-1").status)  # "available"

# Submit with no suitable node → stays pending
big_job = scheduler.submit("train", requirements={"gpu": True, "min_vram_gb": 200})
print(big_job.status)  # "pending"

Job Requirements

Key Type Description
gpu bool Requires a GPU node
min_vram_gb float Minimum VRAM in GB
min_cpu_cores int Minimum CPU core count
min_ram_gb float Minimum RAM in GB

Node Status Transitions

available  →  busy       (job scheduled)
busy       →  available  (job completed / failed / cancelled)
available  →  offline    (manual / health check)
available  →  reserved   (manual hold)

Design Notes

  • Single-process v0.1 — correct for local use; no distributed coordination.
  • First-fit allocation — jobs are assigned to the first node that satisfies all requirements.
  • Distributed locking is Phase 3 scope — the Scheduler API is designed to accommodate a consensus protocol without breaking changes.

Related

License

Apache 2.0 — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sandx_compute-0.1.1.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sandx_compute-0.1.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file sandx_compute-0.1.1.tar.gz.

File metadata

  • Download URL: sandx_compute-0.1.1.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for sandx_compute-0.1.1.tar.gz
Algorithm Hash digest
SHA256 65116a61baca71097cc46c973ab527cb1ade41f419d49979c3ffd95f8cf64043
MD5 a5e505c35174854de948f8f55676892d
BLAKE2b-256 48d43ee6d7ef9372699f688fc0069dc81a20cb7d354aa2824f2cba2e8dae1822

See more details on using hashes here.

File details

Details for the file sandx_compute-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sandx_compute-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for sandx_compute-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b4bb686360c91f36ed405fe772907ae89cedcfe5f12935499570a71b83215bb7
MD5 7e0c13b04d7f5eccf34196179c23cda0
BLAKE2b-256 7dbc9b0eff08d0daf4634609189de745fda87c74c849948d9baf3c93eaf9598e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page