Record controlled K timings and add read-only AMD GPU telemetry
This commit is contained in:
1 parent
973eb5ecd2
commit
9dece89599
6 files changed
+367
-7
No files matched your search
@@ -249,8 +249,8 @@ completion. Every image stays in VRAM. The ZLUDA implementation adds
|
||||
`cuMemcpy2DAsync_v2` using `hipMemcpyParam2DAsync`; format-80 array emulation
|
||||
is explicitly rejected because its synchronous implementation uses temporary
|
||||
host storage. The Windows path supplies canonical FP16/FP32 arrays instead.
|
||||
This experiment is disabled by default until the correctness and game timing
|
||||
gates below pass; there is no claimed FPS improvement yet.
|
||||
This experiment remains disabled by default. Correctness checks pass, but the
|
||||
controlled game comparison below shows only a small frame-time difference.
|
||||
|
||||
```powershell
|
||||
.\scripts\windows\test-deferred-kernel-profile.ps1
|
||||
@@ -277,6 +277,74 @@ four-way K/4K gate passes again with exact candidate RGB and finite RGBA
|
||||
(`test-results/k-batch-committed-source-4k`). This warms the committed runtime's
|
||||
JIT cache before the game comparison.
|
||||
|
||||
The following user-confirmed 30-second foreground-scene capture contains 1925
|
||||
presents at **64.265 FPS**, versus the previous unbatched run's 63.574 FPS.
|
||||
Both use 2259x1271 -> 3840x2160, Independent Flip and SyncInterval 0, without
|
||||
kernel-event profiling, output scans or attached debuggers. Mean present time
|
||||
is 15.561 versus 15.730 ms, a 0.169 ms difference. This single pair does not
|
||||
establish repeatability or a large performance improvement. The containing
|
||||
ten-minute candidate run completes 35673 K frames with zero backend failures,
|
||||
CPU image copies, previous-frame outputs or recorded game crashes. Whole-run
|
||||
median input preparation drops from 0.482 to 0.332 ms; median external span
|
||||
is 5.438 versus 5.399 ms. Whole-run stages are not the selected PresentMon
|
||||
window. No GPU utilization conclusion is drawn from ETW estimates. Results:
|
||||
`test-results/silent-hill2-k-batch-inputs-4k`. The K performance gate stays open.
|
||||
|
||||
### AMD driver telemetry
|
||||
|
||||
A separate read-only diagnostic polls the installed driver's ADLX base C
|
||||
interfaces for device-wide usage, core/VRAM clocks, board power and temperatures.
|
||||
It adds no work to game queues and changes no tuning setting. Build it locally
|
||||
using the official SDK pinned at `32b5a740d42295c5dfe9026b9f52683da0f3af91`:
|
||||
|
||||
```powershell
|
||||
.\scripts\windows\build-gpu-telemetry.ps1
|
||||
.\scripts\windows\capture-presentmon.ps1 -Seconds 30 -GpuTelemetry
|
||||
```
|
||||
|
||||
The SDK retains its own AMD license; SDK headers, implementations, driver DLLs
|
||||
and the SDK-dependent executable are excluded from public game packages.
|
||||
The probe is independently written and uses the documented C ABI, including
|
||||
with LLVM-MinGW. It loads `amdadlx64.dll` only from Windows System32 and
|
||||
releases acquired interfaces before ADLX termination/unload. GPU selection
|
||||
must match exactly one device (`-GpuName` selects a different name substring).
|
||||
The process exits at its bound or target process exit. The capture retains
|
||||
CSV, raw stderr, exit/timeout, driver DLL version/hash and SDK build identity.
|
||||
No optional telemetry failure is silently converted to a valid measurement.
|
||||
|
||||
CSV records independent host UTC/QPC timestamps and the driver's raw sample
|
||||
timestamp. On this installed ADLX 1.5.0.124, the latter is uptime despite the
|
||||
SDK description of epoch time; do not interpret it as UTC. Unsupported metrics
|
||||
are blank, zero utilization/clock remains valid, and the report uses each
|
||||
driver timestamp once. Device-wide usage is distinct from PresentMon's
|
||||
per-process frame attribution and is not measured WMMA occupancy. ADLX API:
|
||||
[AMD GPU metrics sample](https://gpuopen.com/manuals/adlx/adlx-c__perf_g_p_u_metrics/).
|
||||
|
||||
The initial idle-device smoke test captures six valid polls, selects the real
|
||||
RX 9070 XT and terminates ADLX successfully. Board power/core clock/usage
|
||||
and temperatures are available; `GPUPower` is unsupported and stays absent
|
||||
from the report. The first poll costs roughly 10 ms for initialization;
|
||||
subsequent polls are about 0.08 ms at 500 ms intervals. This idle smoke test
|
||||
does not establish game clocks, utilization or an overhead-free benchmark.
|
||||
Results: `test-results/gpu-telemetry-smoke`.
|
||||
|
||||
The subsequent combined-capture smoke test collects 246 presents and ten
|
||||
ADLX polls and exits cleanly (`test-results/gpu-telemetry-capture-smoke`).
|
||||
It includes startup/scene changes and is excluded from FPS comparisons.
|
||||
After the user confirms the foreground comparison scene, the 30-second run
|
||||
with detailed d4r stages/boundary timestamps disabled records **64.661 FPS**
|
||||
over 1935 presents. ADLX's sixty polls report mean usage **93.183%**, core
|
||||
clock **3124.667 MHz**, board power **316.717 W**, temperature 57 C and hotspot
|
||||
82.9 C. Mean PresentMon GPU busy/wait is 14.551/0.800 ms. All presents retain
|
||||
Independent Flip / SyncInterval 0. This records high device-wide driver usage
|
||||
in this run; the previous user-reported 63% has not been captured from the same
|
||||
sensor/window and its discrepancy is unresolved. Do not infer a physical CPU
|
||||
limit, isolated shader occupancy or a FSR4 speed comparison. Query overhead
|
||||
is median 0.094 ms per 500 ms poll, with a roughly 12 ms first query. Results:
|
||||
`test-results/silent-hill2-k-telemetry-unprofiled-4k`. The game stability
|
||||
summary is still pending its existing ten-minute bound. Remaining K work now
|
||||
prioritizes transformer/output-kernel cost; frame scheduling remains measured.
|
||||
|
||||
Further game coverage (HIP kernel profiling disabled, GPU output checks enabled):
|
||||
M at 1920x1080 completes 4833 frames, all finite. K at 3840x2160 completes
|
||||
4685 frames, all finite. Neither has a backend failure, CPU image copy or an
|
||||
|
||||
@@ -26,6 +26,12 @@ host synchronization; postpone further M/FP8 optimization. These user readings
|
||||
are not a controlled same-scene benchmark. Do not infer a hardware CPU limit
|
||||
from utilization alone.
|
||||
|
||||
A subsequent unprofiled K/4K capture records **64.661 FPS** with direct AMD
|
||||
ADLX mean usage **93.183%**, core clock **3124.667 MHz** and board power
|
||||
**316.717 W**. The previous 63% reading is from a different sensor/window;
|
||||
its discrepancy remains unresolved. This new capture places GPU kernel cost
|
||||
at the center of the next K investigation, while retaining queue measurements.
|
||||
|
||||
The next diagnostics add `-ProfileCudaApi` (ZLUDA patch 0015): aggregate host
|
||||
CUDA API durations without HIP-event waits. Boundary stages now separate
|
||||
prepare, copy-list setup, input/output submission and output-copy drain.
|
||||
@@ -103,7 +109,7 @@ stream, which needs explicit opt-in for timestamp sampling. The depth/stencil
|
||||
and packed-format burst/recreation gates pass 24 full K/4K frames: all twelve
|
||||
candidate RGB images match their fresh unbatched synchronous controls exactly,
|
||||
with finite RGBA. Results: `test-results/k-batch-deferred-4k` and
|
||||
`test-results/k-batch-packed-4k`. The game performance gate is pending. The candidate remains
|
||||
`test-results/k-batch-packed-4k`. The candidate remains
|
||||
disabled by default; see `windows-performance.md` for semantics and commands.
|
||||
|
||||
Current candidate source is ZLUDA `67127dde599879ada022d6439383d682e09e0b36`
|
||||
@@ -118,6 +124,23 @@ well as TheRock; PTX output/guards remain correct. It also affects a native K
|
||||
dec4 timing sample, so valid-looking events alone are not a timing-accuracy
|
||||
gate. No hardware utilization or kernel speedup is inferred from these samples.
|
||||
|
||||
The committed batched-input game run completes **35673 K/4K frames** without
|
||||
backend errors, CPU image copies, previous-frame output or recorded crashes.
|
||||
The user-confirmed 30-second PresentMon window records **64.265 FPS** (1925
|
||||
presents), compared with the prior unbatched 63.574 FPS. Both keep Independent
|
||||
Flip / SyncInterval 0 and 2259x1271 -> 3840x2160. This small single-pair
|
||||
difference is not a repeatable speedup gate. Whole-run median input preparation
|
||||
falls from 0.482 to 0.332 ms, while median external span is 5.438 versus
|
||||
5.399 ms. Results: `test-results/silent-hill2-k-batch-inputs-4k`.
|
||||
K performance remains open and batching remains opt-in. The next diagnostic
|
||||
adds a separate read-only AMD ADLX usage/clock/power capture alongside
|
||||
PresentMon. Its local RX 9070 XT smoke test passes, retaining unsupported
|
||||
metrics as absent and preserving the driver's raw timestamp. See
|
||||
`windows-performance.md` for build/capture commands and SDK packaging limits.
|
||||
The combined capture smoke test passes, followed by the user-confirmed
|
||||
1935-present/60-poll measurement recorded at the top of this document. Logs
|
||||
and runtime/DLL hashes: `test-results/silent-hill2-k-telemetry-unprofiled-4k`.
|
||||
|
||||
The public prerelease `windows-rdna4-dev-20261002-a346d76` is published to
|
||||
`xdfnx-dev/d4r`, containing source commit `a346d76` and ZLUDA `a1c506f`.
|
||||
Archive: `d4r-windows-rdna4-20261002.zip`, 88893567 bytes, SHA256
|
||||
|
||||
Reference in new issue
Block a user