Analysis of the parts I chose, and how I built it.
It’s been ~4 years since I’ve built a computer, and the new generation of CPUs and GPUs had me missing out on the fun. So, I decided to build a new computer, and document the process. I ended up going with the following parts (check out the full list, too):
- AMD Ryzen 9 7950x
- MSI RTX 4090 Gaming X Trio
- Gigabyte B650 Aorus Elite AX
- HYTE Y40
I wanted a machine that I could use for machine learning, as well as normal programming, and gaming for recreation. Also, I had some money still burning a hole in my pocket from my NVIDIA internship, so I decided to splurge a bit. The 4090 is a beast for both ML and gaming, and the 7950x is a beast for production.
Building this PC was extraordinarily easy, I was a big fan of the Y40 case — it looks beautiful and fits the 4090 perfectly with the included vertical GPU mount. This is almost essential for newer generation cards, as motherboards can’t really support the weight of the card. And, the fan on the bottom of the case helps cool the GPUs heat sink fins, which are oriented vertically when the card is rotated.
“Why not the 7950x3D?”
Some may be wondering why I didn’t go “all out” and buy the new 7950x3D that just came out. The 7950x3D is interesting because it uses 3D V-Cache, a feature that accelerates some games that are heavily dependent on cache. While I was excited for it, there were a number of reasons it doesn’t make sense for me, or for most people:
- It only helps some specific workloads that could use an extra 64mb of cache
- It slows down core frequency, and increases thermal load
- Only one CCD (chiplet) has the V-Cache, so process scheduling is more error-prone
- It’s more expensive than the 7950x
- In some cases, it has worse performance than the 7800x3D that’s about to come out
So, for all these reasons, I decided to stick with the 7950x, which maintains extremely fast core frequency and still has a sizable cache. If I was only using this machine to play games, I’d wait for the 7800x3D, which has 8c/16t and the same amount of 3D V-Cache, but since it isn’t split between 2 CCDs, all cores will have access to the extra V-Cache. This is important, for example, when scheduling processes to physical threads; if a process is migrated to the other chiplet it will suddenly have drastically different performance characteristics. Some workloads will prefer higher core frequency, while others will prefer more cache, and miscalculating will give inconsistent performance. Supposedly, there are thread scheduling drivers, but I’m not sure how well they work.f
If you’re interested, you can read more about it: