Building a PC

I got my first PC sometime in 2004. It had a CRT Monitor, 256MB DDR1 RAM, Pentium IV Processor. I don’t remember how much storage the machine had, but it sure was a mechanical hard-drive. I didn’t even know what a computer was back then, my dad must’ve been a visionary who got me one in my remote corner of the world. This machine was the beginning of the path that led me into programming and computer science.

I’ve been wanting to build my own machine a while, but been procrastinating it for long. Come to think of it, what held me back was the lack of stability over the past few years. I was graduating, moving countries, being on visa. If I had to uproot my life again quickly, the overhead of moving PC components would be an added woe.

2 decades and 3 computers later, I have managed to end up with some time to myself, and some stability back home. Some things were already in place. Last May when I came to India, I purchased and assembled a nice table that could support the build. A basic featherlite chair was also purchased and kept, and I have an extra from my Bangalore setup.

The first-laptop I got for college is still lying around in my room, waiting for some restoration. The ThinkPad X1C7 I upgraded to is what I’m writing this post from. The laptop is a super-portable machine, but it just wasn’t cutting it for certain heavy compile and some light ML training workloads I want to take on.

Build

The machine I want is something that supports a lot of heavy-compilations and some prototyping on the GPU. As of now, I do not want to do training workloads. For a usable model, this should require heavier GPUs and more power-draw. My short term interests are only to learn GPU/CUDA Programming using the new toy. My experience with compile jobs are make -j likes more workers (CPU cores) and more memory (RAM).

My good-friend Amaljith has been tolerating my chatterbox on a vision to build a PC maxing out every component for years now. Having built a gaming PC for himself already, I consider him an expert in the field, even more so than me. In theory I should know better because of my computer science background and sysadmin work, but I’ve been busy with other stuff. The original build had multiple 4090s planned, but for all the cheap talk I did and how I scaled it down so much, I think he reserves every right to shame for life. Our good-friend Aurobindo also offered help and some inputs.

Once the decision to buy was in-place and use-cases were covered where thought about, components got decided fast. The final list of components are below:

Component Model Specs
Processor AMD Ryzen 9 7950X 4.5GHz, 16 cores x 2 threads
Motherboard MSI Pro X670-P Wifi X670
RAM Crucial CT32G48C40U5 64GB (32GBx2) DDR5 4800MHz
SSD Kingston NVME INTERNAL SSD (SNV2S/1000G) 1TB NV2 M.2 2280 PCIE 4.0
GPU INNO3D GeForce RTX 3060 12GB VRAM
CPU Cabinet Corsair 4000D Black Mid-Tower
CPU Cooler Noctua NH-D15S Chromax Black Air Cooler, Silent
PSU EVGA SuperNOVA 1000 GT 1000W 80+ Gold Fully Modular
Monitor Samsung LU32J590UQW 80.1cm (31.5“) UHD 4k QLED
Keyboard Anne Pro 2 Bluetooth 60%
Mouse Logitech M185 Wireless

I do not think the build is particulary fancy, I cheaped out on plenty of components. The power-supply is an overkill (1000W), but let’s hope I can sneak in a few more GPUs and other enhancements in the future. This is perhaps far-fetched, but if a mistake, this is not too costly.

I did not purchase a UPS. My home has a UPS Inverter + Battery already installed that powers a whole lot of devices. Back when it was being setup, I made sure the sockets in the intended office room had power delivered via the inverter. After some correspondence with the local technician who maintains the setup and expected power-draw from my machine, we concluded the inverter is enough, no need for an additional UPS.

Procurement

Edinburgh spoiled me with 4K screens, so I had already got one when I joined a new job in Bengaluru (sometime in August 2022). The Anne Pro 2 was purchased while in Edinburgh (circa October 2020). Mouse was a random purchase while in Edinburgh, don’t exactly remember when.

I had to buy the rest, and also ensure these got delivered to the middle-of-nowhere. I used pcpricetracker.in to scout cheapest vendors to procure my required components from. Most of the argmin on price on my requirements came from Vedant Computers. There were a few that were cheaper on other websites, but in some cases a delivery/credit-card surcharge offset it. In the end I purchased the RAM from ITDepot, PSU from PCStudio.

I ordered the cabinet first to test delivery. Turns out it was sent via Delhivery and I had troubles getting it in time. I didn’t wait, and went ahead and ordered all remaining components on June 01, 2023 - expecting to assemble as soon as possible. Delhivery held my cabinet package for nearly a week more than the expected time, at which point all components had arrived at the final-delivery hub. I somehow troubled customer care to the point they told me the (wrong) address to the final delivery center, which turned out to be a drive away. After clicking buttons on the delhiver portal I found the hub and picked up 3 packages that had arrived via Delhivery. RAM was shipped via Amazon Shipping, it took another day to arrive.

Around June 08, I had all required components, and was ready to assemble. I made unboxing videos. These were required in case I wanted to return and get a replacement within the stipulated time.

Assembly

In the past I have opened up more expensive server-equipment and maintained them - swapped out a few components. I have never before assembled a PC on my own. Given there were fragile components of high value, this endeavour had me worried.

I only watched a few component specific videos. In general, I consume text faster than videos and drawn out assembly videos are painful. I was aware I could mess-up the CPU were I not delicate from browsing forums like r/buildapc and reading the wiki. I found the text-guides in Beginners Guide particularly useful.

I had a sense of direction inside my head - put CPU in, plant CPU cooler on top. Insert RAM - I had done this before and is easy. Insert NVME SSD on M.2. This was new, I had to watch a few videos. If I connect this to the Front Panel controls and the power-supply I could boot into BIOS if all worked out. This meant I kept the GPU and a spare RAM aside, in case I fried the components by wrong connections. I also didn’t connect the body fans in the beginning, just the CPU Cooler Fan was connected.

The power-supply had asymmetric tabs on both ends. When they were symmetric - it meant both sides were compatible. This helped my fear of blowing up any parts connecting the wires wrong. It was mentioned somewhere in the forums such a component frying possibility existed.

I found connecting the CPU power-supply socket on the motherboard to the power-supply cables more difficult than expected. Once the motherboard was screwed in to the case, the connector was in a corner I could not reach easily. To get around this, I had to remove the motherboard and insert cable, then put it back in. Given a heavy cooler, this risked bending motherboard, I realized quickly.

Another hiccup along the route was that the power-supply, since it was rated 1000W came with a power-socket male plug (16A). However, all sockets in the room where the machine is intended to be kept is 6A normal plug. Since this is India and jugaad runs in the blood, I went to the local electrical shop and got a 6A to 16A adapter. I think this would be unavailable due to safety rules in western countries I have stayed before.

To kill a few more birds with one stone of a town-visit, I bought small stuff that could improve quality-of-life. These included small zip-lock bags to keep the leftover screws and that sort, one transparent box to keep all of these in, price tag stickers which I will repurpose as labels for screws.

Software

Software is what I’m good at.

There was a plan of doing some mild-gaming on this machine - it’s capable of gaming after all. However, I got fronted with an install driver window when attempting to install Windows 11. After reading a few forums and getting reminders of what kind of a debugging/fixing hell windows was, I decided to chuck Windows ideas and go only Linux.

I proceeded to install my favourite distro - ArchLinux. I have to do some deep-learning work. Ubuntu could’ve been a sensible choice considering support. But I felt confident enough to make do the same stuff with ArchLinux.


               +                OS: Arch Linux x86_64
               #                Hostname: vty
              ###               Kernel Release: 6.3.6-arch1-1
             #####              Uptime: 1 day, 19:53
             ######             WM: None
            ; #####;            DE: GNOME
           +##.#####            Packages: 1108
          +##########           RAM: 8326 MB / 63450 MB
         #############;         Processor Type: AMD Ryzen 9 7950X 16-Core Processor
        ###############+        $EDITOR: vim
       #######   #######        Root: 217G / 916G (23%) (ext4)
     .######;     ;###;`".      
    .#######;     ;#####.       
    #########.   .########`     
   ######'           '######    
  ;####                 ####;   
  ##'                     '##   
 #'                         `#  

A four-years ago me would’ve went ahead and configured every detail, but I got no time for that much these days. Just installed GNOME on the base system, defaults are nice. I’ll switch to a tiling WM if the workflow necessitates it at some point in the future.

I expected GNOME would come with network-manager, but turned out it did not. So I had to boot into the live-disk again, setup internet, arch-chroot and then install networkmanager. I have made this mistake before, but some things you keep doing again and again.

I encountered a few more issues at configuring the graphics card with the proprietary driver. Turns out wayland, sway etc does not play nice with the proprietary driver. But I need the driver for CUDA programming.

Afterthoughts

I see value in adding more RAM. I tried to do make -j on some LLVM source code and the compile OOM-ed out at some point (or so I think). Motherboard supports a maximum of 128GB. I definitely made a bad bet on storage. I am better off with a 2TB SSD, and more SATA HDDs to store lazy stuff like movies, music and that sort. I downloaded a few machine-learning models and datasets and I’m already at some 200GB (see archey3 output somewhere above). Good thing about a PC Build is I can add more parts to upgrade. So when I have funds, and if the stay at home sticks I’ll incrementally upgrade the machine.

The old 2004 PC once had a lizard crawl into the power-supply and create a short-circuit. Scared the hell out of me, all the explosions back then. I thought I destroyed the entire computer gaming. The Corsair 4000D’s orifices to allow ventilation allows certain insects, so I slightly worry about possible pest attacks. One of the tradeoff of living in the middle of beautiful lush green.

There’s a looming concern of how much longer I’d be able to play with this new toy. At some point, I’ll have to look out for a job. From the direction the sentiment towards work from home is moving, chances are I will need to move.

(Comments disabled. Email me instead.)