6 ms·
> because I sure would love to have more cores available (currently rocking a 32 core Threadripper) wtf do you need more cores for??? Wat are you doing? > not
by zasdffaa 4y ago
> because I sure would love to have more cores available (currently rocking a 32 core Threadripper)
wtf do you need more cores for??? Wat are you doing?
> not interested in actually pushing HEDT forward since
consider buying a server.
- szastamasta 4y agoI see nothing particularly hard in utilising 32 cores. When I launch all the services in the project I’m working on my os has plenty work to schedule. Right now I have 3732 threads running on my machine. It’s totally separate question if OS can schedule so many threads effectively on so many cores, and how much coordination overhead there will be. But that’s just something we have to figure out and fix.
- zasdffaa 4y agoI'm interested, what are you doing that can eat all those cores>
- deeringc 4y agoAnyone working on even a medium sized C++ project needs a very high end machine in order to compile. For large projects, 32 core work stations aren't crazy at all. Try building something like Firefox or Chromium on a quad core and you will see what I mean. The cost of the workstation is tiny compared to the cost of the engineer and you really don't want them to be waiting around for half their day (quite literally) because of a miserly equipment budget.
- zasdffaa 4y agoI talked about linux recompiles because sometimes you do need the cores; not arguing. But that's the long tail and many devs don't. I'm not against blowing cash if needed, but really it's about asking if there are more efficient ways. I guess we agree.
- astrange 4y agoCompilation is largely memory bandwidth limited - some of the acceleration from cores might be that they have different memory channels rather than more CPUs. M1 builds a lot faster than Intel CPUs even with fewer cores because of the memory bandwidth.
- zasdffaa 4y agoReally?? I am very surprised, do you have any pointers on this? Kind of important thing to me, thanks.
- pengaru 4y agoIt's pretty easy to eat up cores when you're developing graphics rendering algorithms, which can be far more convenient and ergonomic to do on the CPU in a general purpose compiled language, and scaling out via plain old threads. A CPU with so many general purpose high-perf cores that it manages to look like a GPU in terms of execution units count is a beautiful thing.
- Matthias247 4y agoThe pure thread count is not that interesting. Running windows with pretty much just firefox open shows me about 5000 active threads, and and recent hardware shouldn't have a lot of problems with a 5digit number. Heavily loaded threads that actually require CPU power to execute are however definitely a different story.
- aunty_helen 4y agoSome of us write software for a living. You give me two more cores, I'll use them.
- zasdffaa 4y agoI'm a dev too, my machine is a dual core haswell. It depends very much what you're doing of course (compiling linux kernel repeatedly perhaps) but if you have a little you can get a heck of a lot out of it with experience, although you surely will hit a wall sometime. But 32 cores not enough is just unimaginable for me.
- devmor 4y agoCan't speak for the guy you're replying to, but I regularly saturate my 16-core CPU as a web developer. I often work on environments that need 20+ services locally virtualized to properly simulate the environment they'll be used in.
- zasdffaa 4y agoWorked in a place where the local architecture astronaut had taken over and we were subject to his insane designs that were virtualisation and microservices everywhere. A monolithic lump on a server would have been better, cheaper, faster in every way and needed many fewer cores. But your case, ok, understood. BTW The biggest slowdown IME is not from lack of cores but lack of RAM. Odd that no-one's mentioned that. Or using a server with larger numbers of memory channels to keep their cores fed. I/O > cycles more often than not.
- jiggawatts 4y agoSo in $dayjob I have used an 8-core (16-thread) CPU to 100% regularly, as well as fully utilising 64-GB of RAM. I would be able to use 16 cores, 32, or more. Random examples: Trawling through 70 GB of web server log files going back years with ad-hoc analytics. I tried ingesting this into a cloud service but it was taking forever, and cost a non-trivial amount of money. It was also dog slow compared to just doing it locally with SQL Server Clustered Columnstore. Compiling Chromium. I'm not even a browser developer or anything, but there was a "global" change that I had to preview ahead of time, so I made a custom Chrome build that had the change embedded in it. I also made a matching build without the change to enable A/B comparison testing. Server base image task sequence development. You would think a server is ideal for this, but no! It's very I/O heavy, and doing it locally in Hyper-V using an NVMe drive can make this 4-5x as productive as any shared platform with throttled disks. There are zero cloud services that can even approach a Samsung Pro 980 SSD for reasonable costs. Multi-server lab tests. Compared to cloud services, it's faster and easier to build a local pool of machines for testing how they interact. With 64 GB of memory, I can (and have) easily run 20+ machines. Compared to cloud platforms, I can do things like thin-cloning to build (and then delete and rebuild) these nearly instantly -- about 5 seconds or less in some cases. Even the relatively heavyweight Windows Server 2022 VMs boots in just 1.4 seconds! Some build jobs require nearly 100 GB of content to be deployed, and the upload to the cloud is a problem in some customer environments. E.g.: due to security restrictions. Doing it locally is easier and faster. Photography and video editing. I do both as a hobby. Lightroom will cheerfully use whatever number of CPUs (and GPUs!) you have to process images. My recent hardware upgrade made a very noticeable difference to the workflow. Similarly, photogrammetry and other advanced 3D modelling workflows can use up virtually any amount of compute. Password cracking. I occasionally need to reverse a password hash for work, typically to fix lost access to some ancient piece of network gear. Sometimes it's for verifying password strength where the plain-text password is not known. I could distribute this across a pool of cloud VMs, but my lab subscriptions have hard limits and this is sensitive data. Automated searches through code for a breaking change. E.g.: scripting the checkout, build, test, etc... in a loop. (Git bisect doesn't solve every problem) VS Code now has ripgrep integrated, so "find in files" will use every CPU. I have about 100 GB of files on my laptop from various old projects, so this is a very helpful feature for digging up some code snippet that I only vaguely remember writing. It can find a match for a regular expression at 700 MB/s using 16 threads at 100%. Defragmenting moderately large (50-500 GB) databases. I have some customers that have built up horrendously fragmented databases over decades, but can't afford the IOPS and/or downtime to fully rebuild all of the tables and indexes. I recently utilised the aforementioned Samsung SSD to defragment an 80 GB database in just minutes, that would have taken days or weeks on the production server. Again, transferring this out to a cloud is a no-go, and the problem was that typical server storage is much slower than a typical laptop. Locally I could get 200K IOPS sustained. SQL Server Developer Edition is the same as Enterprise, and will utilise all cores to rebuild indexes in parallel. Etc, etc... If you know what you are doing, you can make the CPUs go "brr...".
- kouteiheika 4y ago> wtf do you need more cores for??? Wat are you doing? I have a bunch of embarrassingly parallel workloads which I have to run regularly (text analysis, machine learning which is not easily accelerated on a GPU, etc.). > consider buying a server. I looked into it; not really an option. Those are vastly more expensive, really loud (I need a quiet workstation), have significantly lower boost clocks (I also need single-thread performance), and are either really hard or even impossible to actually buy in my country through normal retail channels.
- zasdffaa 4y agoOK, you win! Just a thought, if embarrassingly parallel, buy a 2nd desktop and farm it out?
- kouteiheika 4y agoAlas you can't do that for every workload, and even for those where you can that brings extra complexity. On a single machine I can just replace an `.iter()` into a `.par_iter()` in my Rust programs and boom, I parallelized my workload across every core with only a single line change. It's not that simple with multiple machines. (I might do that one day, but I'm not there yet.)
- zasdffaa 4y agoGotcha. But FYI I wrote a work farmer years ago and it wasn't difficult. You just manually started a program over there and started the farmer over here and that was all. It could use every machine in the office. These days there may be better solutions than hand-rolling it, never used it but <https://en.wikipedia.org/wiki/GNU_parallel https://en.wikipedia.org/wiki/GNU_parallel> might work. Also see if beowulf software has anything to make it easier. Good luck!
- paulmd 4y agoLook for Slurm Workload Manager, that is the off-the-shelf product for that.
- School-Cotton 4y agoRust or C++ compilation can easily make use of more than 32 cores.
- fortran77 4y agoAnd Erlang programs running can use them all, too.