File size: 3,204 Bytes
54127af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Fork Notes: ds4-strix-halo

A focused Strix Halo (`gfx1151`) fork of [antirez/ds4](https://github.com/antirez/ds4).
This document records the base, the audit, what was retained, what was rejected,
and the policy for future upstream merges.

## Upstream base commit

The fork starts from current upstream `main` (the clone at
`/home/user/source/ds4-strix-halo`). The original ROCm work lived on the deleted
upstream `new-rocm` branch and is already merged into `main`, so `main` is the
correct Strix Halo base.

## ds4fa audit

`julianmb/ds4fa` was compared against upstream. The common ancestor is:

```
baa084482020263a17a3b33a238f6f0809b425fd
```

Since that point:

- Upstream has **323** commits not present in `ds4fa`.
- `ds4fa` has **15** commits not present in upstream.

A wholesale rebase or merge of `ds4fa` is therefore the wrong approach: it would
remove or replace a large amount of newer upstream code, including the upstream
Metal backend and the current ROCm architecture.

## What was retained (adapted to upstream)

- **ROCm/HIP startup diagnostics**: build/runtime/driver HIP versions, device
  name and `gcnArchName`, managed/concurrent-managed/pageable memory support,
  HIP-visible memory, total system RAM, and the TTM/GTT `pages_limit`.
- **Strix Halo memory diagnostics**: warning when the TTM/GTT limit is below 75%
  of system RAM, and warning when a model is sized too close to the limit.
- **A current ROCm smoke test** (`tests/rocm_smoke.c`) against the `ds4_gpu`
  API, exposed as `make rocm-smoke`.
- **A Strix Halo-focused README** plus updated `STRIXHALO.md` (ROCm 7.2.3,
  preferring `amd-ttm` over hard-coded boot parameters).

## What was rejected and why

- **`ds4_hip.cpp` backend and `hip/` kernel tree**: upstream's ROCm backend is
  substantially newer and more complete.
- **Removal of the Metal backend**: this fork keeps upstream backends intact.
- **`q4_guard.py`**: its useful checks belong in the runtime (now the startup
  diagnostics), not as a separate script.
- **The old `ds4fa` README**: describes incomplete or superseded behavior.

## Policy for future upstream merges

- Track `antirez/ds4` `main`; merge or rebase regularly.
- Keep Strix Halo additions confined to:
  - `rocm/ds4_rocm_runtime.cuh` (diagnostics only),
  - `ds4_rocm.h` (version include),
  - `tests/rocm_smoke.c` and the `Makefile` ROCm targets,
  - this repository's docs (`README.md`, `STRIXHALO.md`, `FORK_NOTES.md`).
- Do **not** reintroduce rejected `ds4fa` components.
- Do **not** replace upstream allocation/cache lifetimes (e.g. with
  `hipMallocAsync`) without profiling and broad regression testing.

### Tooling

- `make rocm-smoke` — allocation/copy/cleanup + optional real-model smoke.
- `make rocm-diag` — print only the runtime profile.
- `make rocm-bench-quick` — confirm gfx1151 kernels execute and report bandwidth.
- `make ci` — strict smoke test + quick bench + `misc/sync-check.sh`.
- `misc/sync-check.sh` — enforces the divergence policy (fails if too far behind
  upstream, or too far ahead without a `FORK_NOTES.md` update).
- `misc/sync.sh` — fetches upstream, runs the policy check, and rebases the
  current branch onto `upstream/main`.