Hardware
Everything in NaviMed-UMB runs on one workstation built from parts anyone can buy. No datacentre accelerators, no cloud. This page documents what it is, how it is wired, and what was measured on it.
Wszystko w NaviMed-UMB działa na jednej stacji roboczej złożonej z podzespołów dostępnych w sklepie. Bez akceleratorów serwerowych, bez chmury. Ta strona dokumentuje, co to jest, jak jest połączone i co na tym zmierzono.
Bill of materials
Zestawienie podzespołów
| Component | Podzespół | Model | Model |
|---|---|---|---|
| CPU | Procesor | AMD Ryzen 9 9950X3D (16C/32T, 3D V-Cache)(16 rdzeni / 32 wątki, 3D V-Cache) | |
| GPU | Karty graficzne | 2× GIGABYTE Radeon AI PRO R9700 AI TOP 32G (gfx1201, RDNA 4) | |
| Motherboard | Płyta główna | ASUS ProArt X870E-Creator WiFi | |
| RAM | Pamięć | Corsair 96 GB (2×48 GB) DDR5-6000 CL30, EXPO II | |
| Storage | Dyski | GOODRAM PX700 4 TB NVMe (primary)(główny) + 1 TB | |
| PSU | Zasilacz | FSP PTM PRO 1650 W 80+ Platinum, ATX 3.1 (IEC C20) | |
| CPU cooling | Chłodzenie CPU | Noctua NL-LC1-42 (420 mm AIO, 3× NF-A14x25 G2, Asetek Emma V2 pump)(AIO 420 mm, 3× NF-A14x25 G2, pompa Asetek Emma V2) | |
| Case fans | Wentylatory obudowy | 2× Noctua NF-A14 140 mm | |
| Case | Obudowa | ASUS ProArt PA602 | |
| UPS | UPS | ARMAC OFFICE ON-LINE PF1 2000VA (VFI double conversion)(VFI, podwójna konwersja) | |
| OS / kernel | System / jądro | Kubuntu 24.04 LTS · 7.0.0-30-generic | |
| Compute stack | Stos obliczeniowy | ROCm 7.2.0 · vLLM 0.19.0+rocm721 |
PCIe topology
Topologia PCIe
Two graphics cards on a consumer platform share the CPU's sixteen graphics lanes. The allocation that actually results is the single most consequential number on this page, because it sets the ceiling on tensor-parallel inference.
Dwie karty graficzne na platformie konsumenckiej dzielą szesnaście linii graficznych procesora. To, jak ten podział wypadnie w praktyce, jest najważniejszą liczbą na tej stronie. Wyznacza sufit dla inferencji tensor-parallel.
| Root port | Root port | Feeds | Obsługuje | Link width | Szerokość | Speed | Prędkość | IOMMU |
|---|---|---|---|---|---|---|---|---|
00:01.1 | GPU0 | x8 | Gen4, 16 GT/s | 17 | ||||
00:01.3 | GPU1 | x8 | Gen4, 16 GT/s | 22 |
Both GPUs sit on separate root ports, in separate IOMMU groups, at a symmetric x8/x8. That symmetry was restored on 14 June 2026 by moving one NVMe drive from an M.2 slot on CPU lanes to a chipset slot; before that, two CPU-lane NVMe drives had starved GPU1 down to x4.
Obie karty siedzą na osobnych root portach, w osobnych grupach IOMMU, symetrycznie x8/x8. Symetrię przywrócono 14 czerwca 2026, przekładając jeden dysk NVMe z gniazda M.2 na liniach procesora do gniazda chipsetowego. Wcześniej dwa dyski na liniach CPU ścinały GPU1 do x4.
Measurement gotcha. The GPU endpoints (03:00.0, 07:00.0) always report x16 at 32 GT/s. That is the card-internal GPU-to-switch link, not the CPU-to-GPU link, and reading it as system bandwidth is simply wrong. Read max_link_width on the root port instead. current_link_width also under-reports at idle, because ASPM collapses both width and speed. Measure under load or use max_link_width.
Pułapka pomiarowa. Endpointy kart (03:00.0, 07:00.0) zawsze pokazują x16 przy 32 GT/s. To link wewnętrzny karty, między GPU a jej switchem (nie link CPU↔GPU), i czytanie go jako pasma systemowego jest po prostu błędem. Odczytuj max_link_width na root porcie. current_link_width dodatkowo zaniża w bezczynności, bo ASPM zwija i szerokość, i prędkość. Mierz pod obciążeniem albo patrz na max_link_width.
Power and UPS
Zasilanie i UPS
The workstation PSU is connected directly to the UPS with a single IEC C13-to-C20 16 A cable, with no intermediate adapters. Monitors, router and peripherals hang off a second UPS output. Power-failure detection is monitored with NUT via the nutdrv_qx driver and has been tested against a real cut.
Zasilacz stacji jest podłączony wprost do UPS-a jednym kablem IEC C13→C20 16 A, bez przejściówek. Monitory, router i peryferia wiszą na drugim wyjściu UPS-a. Wykrywanie zaniku zasilania obsługuje NUT przez sterownik nutdrv_qx i zostało sprawdzone na realnym zaniku.
ARMAC OFFICE ON-LINE PF1 2000VA: 2000 VA / 2000 W at PF 1.0, online double conversion with 0 ms transfer, 72 V battery pack, eight IEC C13 outputs.
ARMAC OFFICE ON-LINE PF1 2000VA: 2000 VA / 2000 W przy PF 1,0, podwójna konwersja online z czasem przełączenia 0 ms, akumulatory 72 V, osiem gniazd IEC C13.
CPU cooling
Chłodzenie procesora
The air tower was swapped for a 420 mm liquid cooler in August 2026, and both were measured under a 40-minute all-core load. The headline result is that they are indistinguishable: the same 81.2 °C peak, the same clocks, a 0.7 K difference in temperature rise that sits below the resolution of the test.
W sierpniu 2026 wieżę powietrzną zastąpiło chłodzenie cieczą 420 mm; oba zmierzono pod 40-minutowym obciążeniem wszystkich rdzeni. Wynik główny: są nieodróżnialne, ten sam szczyt 81,2 °C, te same zegary, a różnica 0,7 K w przyroście temperatury leży poniżej rozdzielczości testu.
The study is worth reading less for the verdict than for what went wrong on the way to it. One run produced a clear, wrong answer because the radiator fans were not turning, and the sensor reporting 0 was misread as a missing sensor rather than a stopped fan.
Badanie warto przeczytać nie tyle dla werdyktu, ile dla tego, co poszło po drodze nie tak. Jeden przebieg dał jasną i nieprawdziwą odpowiedź, bo wentylatory chłodnicy się nie kręciły, a czujnik pokazujący 0 odczytano jako brak czujnika zamiast jako zatrzymany wentylator.
Validation status
Stan walidacji
- Hardware assembled and validated
- Sprzęt złożony i zwalidowany
- UPS monitoring operational (NUT +
nutdrv_qx), power-failure detection tested - Monitoring UPS działa (NUT +
nutdrv_qx), wykrywanie zaniku sprawdzone - PCIe link width verified at the root ports
- Szerokość linku PCIe zweryfikowana na root portach
- IOMMU group separation confirmed for both GPUs
- Rozdzielenie grup IOMMU potwierdzone dla obu kart
- CPU cooling characterised under sustained all-core load
- Chłodzenie CPU scharakteryzowane pod ciągłym obciążeniem wszystkich rdzeni
Raw bills of materials, the PCIe map, power topology and the cooling test scripts and CSVs live in bom/ in the repository.
Surowe zestawienia, mapa PCIe, topologia zasilania oraz skrypty i pliki CSV testu chłodzenia leżą w katalogu bom/ w repozytorium.