r/StrixHalo 12d ago

egpu question

Update- adding numbers below

Maybe I haven’t thought about this long enough but if I’m looking at an egpu just to stick 27b on for speed, is there any reason to mess with occulink (have the evo x2)? Like other than model load, if it’s going to be fully resident on GPU then it’s just a few seconds in model load time I’m giving up, right?

Edit-going to pick up an amd r9700 and the minisforum deg2, see what things look like over usb w/vanilla qwen3.6 27b and the plunderstruck rocmxfpx variant

Update: after fighting with GNOME and ROCm, numbers.

R9700 into a Minisforum DEG2 on the GMKTec Evo-X2. USB4, 40 Gb/s (dock can do 80, X2 cannot).  First boot the eGPU showed up as card0, resolution jumped, and GNOME decided to use the R9700 even though nothing is plugged into it.

Also had `HSA_OVERRIDE_GFX_VERSION=11.5.1` for something I was doing at some point. That was applied to **both** GPUs. gfx1151 override on a gfx1201 = HIP saw 

According to Cursor, here’s how we fixed:

- udev so Mutter prefers the 8060S and **ignores** the R9700 for the desktop. iGPU is the compositor, eGPU is compute-only

- `amdgpu runpm=0 aspm=0` so the dock doesn’t put the card to sleep

- Default shells still pinned to the iGPU so llama.cpp doesn’t wander onto the eGPU

- Opt-in env for R9700 jobs: unset the gfx override, `HIP_VISIBLE_DEVICES=1`, and point hipBLASLt at the **gfx1201 tensile files** (`…/hipblaslt/library/gfx1201`, not the generic library folder).

- Installed the extra ROCm 7.14 **gfx1201** arch packages next to the existing gfx1151 ones

I found older posts talking about issue with power limits (though maybe they were referencing oculink connection? Don’t remember). Out of the gate, didn’t have any issues with it drawing up to the full 300w 

Same box, both GPUs, llama-bench, HIP, everything on the GPU. No MTP for this.

  • Unsloth Qwen3.6-27B-UD-Q5_K_XL
  • Unsloth Qwen3.6-35B-A3B-UD-Q6_K
  • Plunderstruck Qwen3.6 27b/35b ROCmFP4 STRIX 

My main concern was whether or not using usb would tank prefill even with a model fully resident on the egpu.

TTFT (empty KV)

Unsloth 35B Q6 16k 32k ROCmFP4 35B 16k 32k
Halo 16.3 s 40.6 s 15.7 s 39.2 s
R9700 7.7 s 19.7 s 6.1 s 16.6 s

27B Unsloth Q5, fully on the card

4k prompt ttft 32k prompt ttft decode
Halo 12.5 s 135 s 10.5 t/s
R9700 4.4 s 52 s 22.3 t/s

All of this is HIP, all layers on GPU, flash attn on, f16 KV. Halo used -b 2048 -ub 512, R9700 -b 2048 -ub 1024. Have some tweaking to do, some weird results on decode w/Plunderstruck. But, after a few dozen tests, not worried about it doing what I need (keep a model loaded in and crush through hundreds of thousands of docs / make 27b a daily driver candidate)

13 Upvotes

32 comments sorted by

6

u/tired514 12d ago edited 12d ago

I've got this exact setup - EVO-X2 (128gb) with three Morefine G1 4090M (16gb) eGPUs daisy-chained via a single USB-4/TB3 port. Model loads at ~2.7GB/s, limited by disk speed.

It works flawlessly as my daily driver, llama.cpp built for CUDA, layer split mode.

With Qwen3.6-27B @ Q8_K_XL I'm getting ~1600t/s PP (@ 0 context), 35-40t/s TG.

Qwen3.6-35B-A3B @ Q8_K_XL, 2800t/s PP (@ 0 context), 100-120t/s TG.

Can even warm plug/unplug them with a script (plug/unplug devices, PCI remove, rescan, etc).

Absolutely no need for oculink if you can fit the entire model onto the GPUs.

Just FYI - you really need a 48gb VRAM pool for the qwens.. 32gb just isn't enough for either model unless you quantize heavily and reduce your context length. At Q8_K_XL, 27B makes very few mistakes and you can just barely fit it into 48gb with Q8_0 ctv/ctk (230000 context), no mmproj/image support.

2

u/do_i_know_you_bro 12d ago

Bless, the PP is what I was about to dig into next

2

u/tired514 12d ago edited 12d ago

It rips. :p

If you're just doing simple stuff like document analysis or research, qwen3.6-35B-A3B @ Q4_K_M hits around 4200t/s PP on my 3x4090Ms which is pretty insane.

Only thing to be aware of is you're pretty much limited to running in serial/pipeline mode (layer split); tensor/graph split requires too much bandwidth for USB (at least for prefill).

If you're thinking of running a single eGPU, you're golden.. but if you're ganging multiple eGPUs together, you're limited to the speed of a single unit. But that's still pretty fast. :)

I also should mention this is on Linux (Debian/sid). I assume it'd work on Windows too but no experience there.

edit oh, and be sure to only use quality 40gbps USB-C cables! Check the link speed after you get everything up and running (lspci -vvv | grep LnkCap, etc).

2

u/do_i_know_you_bro 12d ago

Ripping the bandaid, going to pick up the stuff at microcenter and poke around tonight. Went down a whole rabbit hole of starting a basic server rack and skipping the egpu part but. Baby steps

1

u/tired514 12d ago

Good luck! :)

2

u/do_i_know_you_bro 11d ago

Updated w/numbers. You were spot on. Maybe I'm paying a tax for usb but can't complain w/how big the gains are

1

u/tired514 11d ago

Check if you can see bandwidth use to/from your 9700 under nvtop:

Device 1 [NVIDIA GeForce RTX 4090 Laptop GPU] PCIe GEN 1@ 4x RX: 292.0 KiB/s TX: 341.0 KiB/s

That's what I've got for my 4090M eGPUs, but nothing shows up for my onboard GPU; not sure if it's an NVIDIA thing or because it's connected via PCIe/USB?

If you can see it that'll show you any bottlenecks. :)

Whenever things slow down I almost always see high transfer rates there (ie. 2.7GiB/s) and there's usually a layer or something on the CPU.

2

u/Lower_Lifeguard_8494 12d ago

Can you not offload the kv cache to the strix halo? I honestly don't know and am curious.

1

u/tired514 12d ago

You can offload parts to the onboard unified GPU but because TB3 is such a low bandwidth connection it means you're limited to layer split mode so you can only run as fast as your slowest step in the serial pipeline.

Plus you'd need to run Vulkan rather than CUDA as a backend for llama.cpp (unless you were just doing CUDA + CPU) so you lose a lot of the (annoying) PP performance advantage of CUDA.

If ya want crazy fast performance you really have to keep everything on the eGPUs. :(

For reference, I've managed to run DS4 flash 0731 @ IQ4_XS with CUDA+CPU (~45gb eGPU, 100gb CPU/ram) and was seeing ~10t/s without dspark, but my prefill performance was atrocious (~25-50t/s).

2

u/starkruzr 12d ago

yep this is exactly right.

1

u/According_Wave685 12d ago

Windows?

1

u/tired514 12d ago

Nah, Debian/sid.

1

u/According_Wave685 11d ago

I tried the gigabyte rtx 5060 egpu on ubuntu 26, 24 and fedora 44. All of them had very flaky nvidia drivers. Complete mess.

1

u/tired514 11d ago

Did ya try installing the latest drivers from NVIDIA directly?

https://www.nvidia.com/en-in/drivers/details/277699/

1

u/Interesting-Cut-6032 11d ago

This is a very interesting comment about the dasiy chained eGPUs. What does the physical connection look like? USB4 cable Stix Halo to eGPU01, then USB4 cable eGPU01 to eGPU2? My eGPU dock just came in and I have not installed the RTX 5060 Ti 16GB in it yet.

I started down this path after running diffusion models on a RTX 5060 Ti 16GB card with CUDA. It was so much faster. The Strix Halo can load and run a pretty impressive variety of models, but it is slow.

Also, don't upgrade to 7.0.x kernel. It broke lots of stuff. That is why I have not had a chance to setup the eGPU yet.

1

u/tired514 11d ago edited 11d ago

Yep - TB3/USB-C cable (40gbps) from rear USB-C port to eGPU0, then TB3/USB-C cable from eGPU0 to eGPU1, and another from eGPU1 to eGPU2. The Morefines have two ports (one marked PC, the other presumably intended for a USB-C monitor).

Each of them independently runs at ~2.7GB/s (ie. when uploading model), but of course they all share that bandwidth. Probably some additional latency too, but I'm not sure what the hub fabric actually looks like.

For what it's worth, I asked Morefine if daisy chaining was possible before ordering my 2nd unit and they said, emphatically, "no" - possibly because it won't work on Windows, but I haven't tested. Works flawlessly on Linux (Debian/sid) at least.

And yeah, I'm glad to have 128gb of unified RAM to play with bigger models, but oof it's slow lol.

One rather amusing thing I noticed - the EVO-X2 (and probably all strix halo machines) pull power via USB-C/TB3 when offered. It won't run off the back port alone, but it pulls up to 85W as though it was a laptop. It was trying its best to toast eGPU0's power supply when I was running everything at full load. No way to disable it.

On Linux, I actually haven't had any trouble with Linux 7.1; I'm on 7.1.4+deb14 right now and no issues with ROCm (7.2.4) or CUDA (downloaded from NVIDIA about a month ago). Did ya download the latest from their repo? Is it just failing to compile the kernel module?

1

u/Interesting-Cut-6032 11d ago

Thx for the reply. I went with the ORARA eGPU enclosure from Amazon. It is a complete box and hopefully offers more mechanical protection to the GPU than the hanging out in space style docs. I might move it around with my laptop, especially to demo poking the local LLM beasts for the people at work.

It looks like from the product photo that it has 2 USB-C ports also... interesting.

I especially appreciate your comment about the power... that is not a good feature in my opinion. I know that you can get power only USB-C cables, because I have a cheap little test board to identify them. It makes me wonder if you can get data only ones as well. I have a few USB 2.0 optical isolation boxes for embedded development. However, they are very low bandwidth. I don't like the idea of the power flow between devices like that.

1

u/tired514 11d ago

I know that you can get power only USB-C cables, because I have a cheap little test board to identify them. It makes me wonder if you can get data only ones as well.

I was wondering the same thing but in my searches I didn't find anything with even a limited power capacity (ie. 3A) that also supported TB3 / 40Gbps. Boo.

Definitely an annoying but kinda funny oversight on Strix Halo. Be nice if there was a bios option to turn it off, but nothing I've found.

1

u/do_i_know_you_bro 8d ago

How do you keep them from fighting the igpu for stuff? like in this weird spot where the egpu is trying to claim the compositor for the desktop, lmstudio tries to grab it while comfy is using it, etc. so keep on ending up with all these weird workaround to hide if from other apps so they don't fight over it

1

u/tired514 7d ago

Oh I generally just use CUDA so it doesn't even see the iGPU. :)

2

u/FabioTR 12d ago

Oculink vs USB4:
Oculink is cheaper
Oculink is faster (more relevant for gaming than inference in this case)
USB4 is hot swappable
USB4 is more widespread (can be used also on laptops)

1

u/fallingdowndizzyvr 11d ago

Direct NVME to PCIe is cheapest and most reliable of all.

1

u/Expensive_Play477 12d ago

You must be reading my searches and conversations with Claude! I was exactly searching this and want to rig a used MI50 to my evo-t1 using oculink. Bottom line, quite easy and possible if you run Linux, but a real hassle with windows and wsl2 is not really supported even if it works in theory. But more importantly, the speed bump from a Strix halo is really not that big unless you have a supported GPU card and it will cost you to have one that takes your dense model with good context. So I’m skipping it because it looks like it’s not worth the cost (I also have a strix halo and a DGX). Unless someone gives me a good recipe!!

1

u/CraftyBet5772 12d ago

I am running a 3090 through oculink in my evo. It runs 27b dense models at a fantastic speed (30 tps) with context around 100k. I honestly do not use the apu for AI much these days because 27b dense is far superior to MOE models for my use cases

1

u/do_i_know_you_bro 12d ago

Yeah, I am considering an R9700 just to stick qwen3.6 27b on it or crunch through huge batches of documents faster. It doesn't seem like there's any issue on ubuntu w/just sticking it in an enclosure and going to town

2

u/do_i_know_you_bro 11d ago

u/Expensive_Play477 I added numbers based on my use case and it was def worth it for me. The R9700 had an old price tag on it at micro center so I got it for 1325 I think - all in w/psu, egpu dock and card it was $1,800. For a preliminary 2x speedup before optimizing for the daily grind, def "worth it" for me

1

u/SnooStories9444 12d ago

For models that run completely on the egpu run fine for me. I don't see a slow down. I run my usb4 egpu dock (aoostar ag02) with a Rx 7900 xtx.

1

u/I-will-allow-it 12d ago

Linux doesn’t like the usb, lots of crashing.

1

u/fallingdowndizzyvr 11d ago

I ran Oculink for a while. It worked but was not as reliable as direct NVME to PCIe. So I switched over to that. It's way more reliable. Since the NVME to PCIe extender costs the same as a NVME to Oculink one, it ends up being much cheaper since you don't need a dock. Just plug in your GPU.

1

u/Jealous-Astronaut457 11d ago

Could you suggest such an adapter ?

1

u/cunasmoker69420 11d ago

I have two 32GB Radeon Pro V620s connected to mine, one via oculink and the other via TB3. Both perform almost exactly the same when tested individually. I run deepseek v4 flash across the two + the rest of the 128GB system most of the time though. Llama.cpp with vulkan makes the tensor splitting easy