Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions MANIFEST.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ repository.
| Inflector | 0.11.4 | BSD-2-Clause |
| addr2line | 0.25.1 | Apache-2.0 OR MIT |
| adler2 | 2.0.1 | 0BSD OR MIT OR Apache-2.0 |
| adlx | 0.0.0-alpha.1 | MIT |
| aes | 0.8.4 | MIT OR Apache-2.0 |
| aho-corasick | 1.1.4 | Unlicense OR MIT |
| allocator-api2 | 0.2.21 | MIT OR Apache-2.0 |
Expand Down Expand Up @@ -258,6 +259,7 @@ repository.
| lab | 0.11.0 | MIT |
| lazy_static | 1.5.0 | MIT OR Apache-2.0 |
| libc | 0.2.186 | MIT OR Apache-2.0 |
| libloading | 0.8.9 | ISC |
| libm | 0.2.16 | MIT |
| libredox | 0.1.17 | MIT |
| line-clipping | 0.3.7 | MIT OR Apache-2.0 |
Expand Down
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,17 @@ for Lemonade and vLLM.
| Platform | Prebuilt binary | Notes |
|---|---|---|
| Linux (x86_64) | Yes | Ubuntu 24.04 or newer; full support, including the live dashboard and both inference engines |
| Windows (x86_64) | Yes | CLI and Lemonade serving; no live dashboard or vLLM |
| Windows (x86_64) | Yes | CLI and Lemonade serving; live dashboard shows GPU/CPU/memory but not the serving-instance registry; no vLLM |
| WSL2 (x86_64) | Yes (Linux binary) | Ubuntu 24.04 or newer; full support, including the live dashboard |
| macOS | No | No official installer, release, CI, or QA coverage |
<!-- platform-support-table-end -->

For WSL2 setup and diagnosis, see [docs/wsl.md](docs/wsl.md).

Live dashboard telemetry requires Linux or WSL2 (see
[Interactive interfaces](#interactive-interfaces)). vLLM serving is Linux or WSL2
only (see [docs/vllm.md](docs/vllm.md)).
Live dashboard telemetry works on Windows too, but shows only GPU/CPU/memory —
the serving-instance registry view needs the `rocmdashd` unix socket, so it's
Linux/WSL2 only (see [Interactive interfaces](#interactive-interfaces)). vLLM
serving is Linux or WSL2 only (see [docs/vllm.md](docs/vllm.md)).

The minimum supported Linux release, native or under WSL2, is Ubuntu 24.04. On
other distributions the equivalent requirement is glibc 2.38 with
Expand Down Expand Up @@ -202,9 +203,10 @@ five tabs (switch with `Tab`/`Shift+Tab` or number keys `1`–`5`):
| **Observe** | Live GPU utilization, instances, and benchmark telemetry |
| **Chat** | Assistant chat backed by a local server or configured provider |

Live mode reads telemetry over a Unix domain socket, so it requires Linux or
WSL. Use `rocm dash --demo` for a synthetic session that runs anywhere without a
GPU or daemon.
Live mode works on Windows too, but shows only GPU/CPU/memory — the
serving-instance registry needs the Unix domain socket telemetry, so that view
is Linux/WSL only. Use `rocm dash --demo` for a synthetic session that runs
anywhere without a GPU or daemon.

## Configure ROCm and serve a model

Expand Down Expand Up @@ -813,7 +815,9 @@ and a chat tab backed by any configured provider. See
- `--demo` runs a deterministic synthetic session with no GPU or daemon needed,
works on all platforms.
- `--replay <file>` replays a recorded NDJSON session.
- Live mode requires Unix domain sockets (Linux and WSL only).
- Live mode works on Windows too, but shows only GPU/CPU/memory — there's no
`rocmdashd` unix socket to connect to there, so the serving-instance
registry view stays empty (Linux and WSL2 get the full live view).

### Bench

Expand Down
51 changes: 51 additions & 0 deletions THIRD_PARTY_NOTICES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8937,6 +8937,27 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


================================================================================
ISC License
================================================================================

The following component(s) are licensed under ISC License:
- libloading 0.8.9 <https://github.com/nagisa/rust_libloading/>

Copyright © 2015, Simonas Kazlauskas

Permission to use, copy, modify, and/or distribute this software for any purpose with or without
fee is hereby granted, provided that the above copyright notice and this permission notice appear
in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.


================================================================================
ISC License
================================================================================
Expand Down Expand Up @@ -10684,6 +10705,36 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================================================
MIT License
================================================================================

The following component(s) are licensed under MIT License:
- adlx 0.0.0-alpha.1 <https://github.com/Traverse-Research/adlx-rs>

MIT License

Copyright (c) 2024 Traverse Research BV

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================================================
MIT License
================================================================================
Expand Down
11 changes: 6 additions & 5 deletions apps/rocm/src/dash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -339,11 +339,12 @@ pub fn resolved_args(
/// Re-reads `services_dir` fresh on every [`snapshot`](ManagedRegistryProbe::snapshot)
/// call: a local JSON-file read, no daemon round-trip, no network I/O — cheap
/// enough for the quit-confirm gate to call on every render while the prompt
/// is open, and the only source of truth at all on a host whose
/// dashboard-embedded daemon client never connects (Windows —
/// `rocm_dash_tui::client`'s connect path and `maybe_spawn_embedded_daemon`
/// are unix-only, so `AppState::instances` never gets a first snapshot
/// there).
/// is open, and the only source of truth at all on Windows, where
/// `rocm_dash_tui::client`'s `#[cfg(windows)]` arm does connect and stream
/// live GPU/CPU/memory every tick but — by design, there being no
/// `rocmdashd` unix socket to source one from (`maybe_spawn_embedded_daemon`
/// is unix-only) — never sends an instance snapshot, so
/// `AppState::instances` never gets a first one there.
///
/// **Known divergence, same shape as [`services_past_attempts`]'s:** this
/// reads the record's raw on-disk `status`, not process liveness. A service
Expand Down
8 changes: 8 additions & 0 deletions crates/rocm-dash-collectors/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,11 @@ reqwest = { version = "0.12", default-features = false }
tokio = { version = "1", features = ["full"] }
tempfile = "3"
wiremock = "0.6"

# ADLX binds dynamically to the AMD driver's bundled amdadlx64.dll at
# runtime (not a build-time link), so this only makes sense on Windows;
# winperf.rs's `AdlxHelper::new()` call already degrades to 0.0/None when
# the DLL isn't present (no AMD driver, non-AMD GPU), same as elsewhere.
[target.'cfg(windows)'.dependencies]
adlx = "0.0.0-alpha.1"
windows-sys = { version = "0.61", features = ["Win32_System_LibraryLoader"] }
1 change: 1 addition & 0 deletions crates/rocm-dash-collectors/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ pub mod proc_scan;
pub mod sysfs;
pub mod vllm_log;
pub mod vllm_prom;
pub mod winperf;
Loading