Why this build

The Tesla P4 is a 75 W, passively cooled, half-height data-center card that is very cheap used. A small-form-factor PC has no PCIe slot, but the HP ProDesk 600 G5 Mini does have two M.2 slots, and OCuLink turns each one into an external PCIe x4 link. Pascal (compute capability 6.1) still runs current CUDA drivers, and the P4 has no artificial NVENC concurrent-session cap. The result is a compact, low-power box for local LLM inference, speech-to-text, transcoding and training experiments, with 16 GB of GPU memory for about $600.

How it fits together

  • Each M.2 slot in the ProDesk carries an M.2-to-OCuLink adapter, which feeds a JHH OCuLink PCIe 4.0 x4 dock. Each dock holds one Tesla P4.
  • Each dock has its own 120 W Pico PSU on its 24-pin header. Both Pico PSUs run from a single 12 V 300 W supply.
  • The ProDesk is powered separately by a 90 W universal laptop power brick.
  • A XIAO microcontroller polls nvidia-smi for GPU temperature and drives a Thermalright 12-port fan hub, which feeds nine 60 mm fans.
  • Storage: a 2 TB PNY 2.5 inch SATA SSD for boot, plus a 512 GB KingSpec NX NVMe drive in a fan-cooled ORICO 40 Gbps enclosure on the USB-C port.

Bill of materials (about $600 total, mostly used parts)

ItemQtyNotes
HP ProDesk 600 G5 Mini, barebones1Bought on eBay. Both M.2 slots used for the GPU links. Case modded to carry three fans
NVIDIA Tesla P4 8 GB2Used data-center pulls, bought on eBay
M.2 to OCuLink adapter2One per M.2 slot
JHH OCuLink PCIe 4.0 x4 dock2One per GPU. DIP switches for power-on and reset delay
120 W Pico PSU (24-pin ATX)2One per dock
12 V 300 W power supply1Feeds both Pico PSUs
90 W universal laptop power brick1Powers the ProDesk
PNY 2 TB 2.5 inch SATA SSD1Boot drive
KingSpec NX 512 GB NVMe SSD1External data drive
ORICO 40 Gbps NVMe enclosure, with fan1USB-C. Negotiated 10 Gbps on the ProDesk when checked
Thermalright 60 x 60 x 25 mm fans, black9Three per GPU, plus three on the modded ProDesk case
Copper-fin heatsink2Replaces the stock P4 heatsink
XIAO microcontroller1Polls GPU temperature and sets fan speed
Thermalright 12-port fan hub1Distributes the PWM signal to all fans
Digital fan-speed readout1Shows speed as a percentage

PCIe link (measured)

Both cards link at x4, the most an M.2 slot can offer. The docks are PCIe 4.0 capable, but the P4 is a PCIe 3.0 card, so the link runs at Gen 3. At idle the link drops to a lower speed to save power, so check it under load for the real figure.

GPUPCI addressRoot portNegotiated link
GPU 001:00.000:1b.0x4, Gen 3 under load (Gen 1 at idle)
GPU 102:00.000:1b.4x4, Gen 3 (8 GT/s)

The two cards sit behind separate PCH root ports, so each has its own link.

Power

The Tesla P4 has a 75 W power limit, confirmed with nvidia-smi, and is powered through its dock. Idle readings: GPU 0 about 6.4 W, GPU 1 about 23.7 W (light load at the time). Under sustained LLM inference on both cards, peak GPU power was 61.6 W (GPU 0) and 64.9 W (GPU 1), below the 75 W limit.

Cooling

The P4 is built for server airflow, so the stock heatsink comes off. Each card gets a copper-fin heatsink and three 60 mm fans in a cut-out shroud. Three more fans are fitted to the modded ProDesk case. All nine fans run from one Thermalright 12-port hub, and a XIAO sets the fan speed automatically from GPU temperature. The GPU driver reports fan speed as N/A because the fans are external.

Idle temperatures: GPU 0 32 C, GPU 1 38 C. Peak under sustained inference on both cards: 61 C (GPU 0) and 59 C (GPU 1).

Software

Readings were taken while the machine ran from bench-test drives, so OS-level details may differ with the final drives.

ItemValue
OSUbuntu 26.04.1 LTS, kernel 7.0.0-42
NVIDIA driver580.178.04 (proprietary, from the Ubuntu repos), CUDA 13.0
Docker29.9.2, Compose v5.6.1, NVIDIA Container Toolkit 1.20.1
Services (Docker Compose)Ollama, Open WebUI, Meshroom, nvidia_gpu_exporter, node_exporter

Benchmarks

These are LLM inference runs through Ollama, not a synthetic burn-in, so treat them...

Read more »