I was blown away by how even a modest desktop [1] is so much faster than even a high end laptop [2]. I believe it's because any laptop will end up throttling because of thermals, unless you get one of those very heavy gaming or workstation laptops with huge cooling systems.
Oh and I had to throw away my laptop because the motherboard failed, all I could salvage was the SSD. Not going to happen with a desktop.
[1] (I have a non-overclockable i5-6500, 16GB DDR4, SSD with SATA3 interface, a GTX 1060 with 6GB VRAM)
[2] My laptop was an i7 quad-core, 16GB DDR4, SSD SATA3, GT840 GPU. Everything except the GPU was better than or equal to my desktop.
Apple REALLY needs to come out with a mini-tower Mac supporting desktop graphics cards. And no, I don't mean the new Mac Pro.
The prohibitive nature of battery powered devices has pushed Intel's processors to efficient low-powered solutions, but that's a big reason you'll see desktops simply overpowering laptops at the same price range.
Not to say you can never get strong processing in laptops though, they do offer the high-end HQ line which are high TDP mobile processors. Just that the default for Intel mobile processors is "gimped" by design to allow for efficient low-power processing.
Sometimes Ultrabook-style laptops will have a higher boost, but they're often thermally limited anyway so running more power just makes them throttle harder.
If you have battery power left, it might run faster and drain the battery until it's low and then throttle down. Or just shut down like an older Samsung I saw once.
Discovered this recently while working on a GPU-powered ray tracer, plugging my laptop in more than doubled the performance.
I have a 4core/8thread i7 laptop (4630QM) and I cannot get it to throttle after stress testing it for multiple minutes.
The GPU throttles if my thermal paste is getting old and the laptop sits flat on a desk and a game stresses it to 100% all the time. But the CPU I just cannot get to throttle, even with the above conditions being true, unless I remove the paste.
And this is a 13-inch, single fan laptop.
Consider repasting actually, there is no reason your CPU should be throttling.
Hell, especially the (r)macbook pro 15 that I got from my company which had the same 4770HQ - Apple for some reason believes that customers should have their legs burnt and CPU throttled before the fan even spins up.
Must have it confused with my last laptop's 4/8 i7 product code (which was an i7-3630QM).
The i7-4770HQ is listed as a 2,4 to 3,4 Ghz chip, so there's no reason it should ever throttle in a 15 inch laptop unless the laptop manufacturer messed up real hard (since the same silicon running at a higher frequency, with the same TDP, is adequately cooled by a single tiny fan on a 13 inch laptop).
It's rather unfair to say that laptops generally can't have consumer desktop-level performance on the CPU side, based on a few experiences with specific OEMs.
Now, this changes entirely when 6 and 8 cores are affordable. Desktops make sense again.
I still drool over getting a sweet $2k+ ultraportable laptop though. I'll let my office buy those things for that work and stick to the cheaper personal life. Portable devices just can't seem to live with the chaos of life, and I'd rather break a $400-500 machine than a $2k machine.
[1] $350 DIY PC + a $250 second hand thinkpad
[2] $2200 laptop with the latest i7 and discerete GPU.
I mostly just tote it to the office and home, so it's quite nice.
It is much worse. Remember that the laptop i7 is a much lower power part.
It's neither recent or pristine, but having a slim 4C/64GB thing at that price is worth considering.. no more rpi clusters :p
These are really old, Socket F, DDR2 blades. Given that the corresponding blade center will be needed as well, probably not that good a deal.
- The centers are large and heavy, needs a fair amount of space, can't really be handled alone. Also means they're shipped on a pallet, which is somewhat expensive.
- Blades are less common overall compared to servers
- Blades have more peculiar I/O than normal servers, you can't just stick an IB card or GPU in there
- The backend I/O modules are fairly rare 2nd hand, so either you find a center which has the modules you want or you're SOL
I'd start with a used Dell Precision T7xxx series off of Ebay for a <$300 including RAM and a Xeon or two
Thanks for the tip though, could be of use for a friend.
While most programs are not embarassingly parallel in nature, I suspect the latter plays a bigger role than most of us tend to admit.
Right now we are two steps removed. There aren't even many good data structure implementations out there. There is moodycamel::concurrent_queue and different memory allocators like jemalloc and the new rpmalloc, but the vast majority of programmers likely don't even realize that malloc locks and kills concurrency. Maybe they grab something from boost that just surrounds a data structure with a mutex, which is lazy bullshit.
I actually think the majority of software that runs slow can be made to be sped up nearly linearly using dozens of threads, but the few niche libraries that help are overly complicated to compile and use, bloated with enormous dependencies and end up being a minefield of usage. At the moment many people's idea of multi-threaded is mostly fork-join techniques like openMP and that will never scale to using all cores throughout the whole program, since is one very narrow technique.
Otherwise I think the rest of Erlang's performance is because it's optimized for reliability and distribution rather than raw performance.
One is promises (async/await). This takes the burden off the programmer for explicitly managing concurrency, and potentially allows lazy evaluation in many cases (if non-side-effecting). I've never worked in Lisps but it seems like a viable model in many ways.
The one I wanted to bring up was probabilistic programming. Imagine a tree where there's not just one place to put something, there's many, possibly distributed. As such you greatly reduce the chances of contention from multiple threads. They would also probably (almost necessarily) reduce the amount of rebalancing work.
GPUs seem like the perfect model here in multiple ways, not only do you have the massive degree of threading that surfaces any problems in such things but you also have the degree of threading to deterministically search these kind of structures. GPUs also highly discourage things like CAS or mutexing that we need to move away from.
(PS nice username)
GPUs are useful for the kinds of parallelism that has always been known to be easy - fork join with all threads writing to new memory. There is no mystery to how to do this.
> CAS or mutexing that we need to move away from
compare and swap is the backbone of lock free programming. Mutexes to me seem to rarely be ideal, but there is no getting away from compare and swap as far as I know.
If you think about the heart of the problem, it is really synchronization, and that only needs to happen in certain places in programs. Anything you can break up into pieces that can be transformed independently can be leveraged for concurrency, which also implies that independent stages in a pipeline can be concurrent as well.
The nice thing is, I can throw a new GTX and a PCIe SSD in and that'll have quite a bit of benefit. Custom PCs are awesome!
The single thread performance on the 6950X is pretty low, and in fact pretty much on par with that 4771. If you want higher single-thread performance you have to opt for fewer cores at a higher clock rate, something like the i7 7700K, which would definitely perform significantly better than the 4771. The 6950X really only makes sense if you have a workload that needs those 10 cores.
See https://www.cpubenchmark.net/singleThread.html for the comparison.
Broadwell is kind of an exception here since it clocks so poorly both in the small-chip and HEDT form. But for example, 4.7 GHz is a good OC for Small Haswell and the Haswell-E HEDT chips will usually go to at least 4.5 GHz.
(of course the major caveat here is power - a highly OC'd 8-10 core chip can easily pull 200-250 watts package TDP on a normal workload, 300+ watts as measured at the wall. For an AVX-heavy workload like Prime95, add another 100 watts package TDP.)
So overall the penalty for using HEDT chips is nowhere near as big as you are implying here. It's something on the order of 4% loss of single-thread performance to go from 4-core to 8-10 cores. It just doesn't come that way out of the box - largely because anyone who buys a 10-core gaming chip for $1700 knows exactly how to do all this.
The bigger problem is that the HEDT chips are 2 generations behind the smaller chips. Broadwell vs Broadwell-E, the numbers look fine, but Kabylake has some IPC improvements and clocks significantly higher than Broadwell does.
This is one of those things that actually can be blamed on "Intel being lazy because they have no real competition". They could certainly push the HEDT chips out a little faster instead of waiting to work out all the bugs in the smaller chips, it would just be a bit riskier for them.
Think about that: a 4 back your PC started in 10 seconds and 2 years back it's starting in 5 seconds, that's 5 second difference that you feel.
Currently the PC's start at 2.5 seconds and the speed difference is much less, so it feels like the power is not progressing that fast.
I have recently "upgraded" my desktop with an SSD (but have an old CPU i7 4780k or something) and it loads in a few seconds. But I don't want to upgrade my CPU just yet as it will only make everything only 1 second faster, not worth 300 USD I think.
But if you do a lot of data processing, software builds, ... You can increase the speed much more, and then it should matter.
Then you have improved architectures, memory/cache access, inter-core communications... there are more ways to improve a chip.
I agree with your snetiment, for general workloads. I have a 4 year old Haswell and it's working like I imagine the i5s today would perform on a basket of workloads.
Thanks!
Equating the single core speed of Intel's latest CPUs and moore's law is just another case of simple, easy and wrong.
> For a while they were able to use higher transistor counts to get more instructions per clock, but even that strategy is running out of steam
On a single core, not over a whole processor, as can be seen by the fact that there are 22 and even 72 core processors available now.
> The big news about Ryzen is that it was finally able to catch up to Intel in that regard.
This has nothing to do with Moore's law, it is a result of processor architecture.
> On a single core, not over a whole processor, as can be seen by the fact that there are 22 and even 72 core processors available now.
A worthwhile development, but not a panacea. I'd suggest you become familiar with Amdahl's law: https://en.wikipedia.org/wiki/Amdahl%27s_law. There's also some give-and-take between core count and individual core performance.
> This has nothing to do with Moore's law, it is a result of processor architecture.
But Moore's law is an enabler of more sophisticated processor architecture.
Once again, there are still transistor density improvements.
> A worthwhile development, but not a panacea. I'd suggest you become familiar with Amdahl's law
I'm not sure what you are trying to say here. Are you going back to saying computers aren't getting faster and then trying to say that moore's law is therefore dead when we've already established that it was never about speed?
Also what is your point about Amdahl's law? I work with lock free concurrency all day every day and if you are trying to say that more cores doesn't mean more speed because of Amdahl's law, that is pretty shaky ground to say the least. For some reason people seem to assume that if the software they use isn't using multiple threads effectively that it must be impossible. This is FAR from the case. Most programmers don't know how to work with concurrency and most software is trapped in legacy architectures that make parallel computations become painful changes.
> But Moore's law is an enabler of more sophisticated processor architecture.
Again, this tangential and not even really true. AMD's CPU architectures suffered while their GPUs performance and manufacturing process has remained competitive.
I was surprised by two big things: high-performance devices are extremely affordable nowadays and processors have gotten a lot better despite minimal changes in clock speed.
I went on PC Part Picker and built my 'budget' device and my 'fantasy' device. It turned out they were just about the same. I couldn't really spend more than $1500 for anything better without jumping to server-grade parts.
Yesterday I played Halo Wars 2, listened to Spotify, kept Word, Excel, Edge, Chrome, & WEKA open, and was running an embarrassingly inefficient data mining program in Python via WSL, while running a Jenkins build server in an Ubuntu Server VM, and running TeamCity in a Windows Server VM.
Even on the Intel chip, which is presumably less good at multitasking than Ryzen, I just can't throw enough at it to experience anything resembling slowdown. 8 logical cores still seems to be plenty for most users, but I could see with even more VMs that one might need more. As an aside, it is incredibly nice to be able to run VMs without even thinking about their resource consumption - it's like having my own little cloud.
I wonder if maybe Intel's marketing for their chips could use improvement. On paper, my MacBook Pro with 16Gb RAM and 3GHz i7 shouldn't be that much worse than my desktop with 32Gb RAM (most of which is unused) and 3.6GHz i7. The difference in practice is night and day. I'm losing faith in the concept of a laptop as a developer's primary device (especially with SSH & Remote Desktop being so good these days).