Should All Developers Have Manycore CPUs?

All too often I see users seduced by Intel’s marketing department, blindly assuming that if two CPU cores is faster than one CPU core, then, well… four, eight, or sixteen must be insanely fast!

Jeff, your blog must of hit close to home for Intel.

http://www.extremetech.com/article2/0,1558,2285978,00.asp?kc=ETRSS02129TX1K0000532

:slight_smile:

Jeff,

Most developers aren’t writing desktop applications today. They’re writing web applications.

i have some doubts here. do you have any numbers to back this up?

WM_THX
-thomas

There are many very important applications that will have to use multicore a lot if they want to compete. For example audio and video processing, video games…

In fact I think the applications that can happily stay singlecore are a minority :slight_smile: (Web + office tools)

what is the point of this argument?

lets just check something… a quad core is 120, a dual core is 70.

so we’re arguing a lot about 50, which to a professional developer is … 2 or 3 hours pay? That’ll be even less to the company that’s purchasing the new box for him.

Give it a month or two and the difference in price will be even less, so buy the quad core and have done with it. I’m sure the time some people have spent arguing over which is better would cost more than the difference anyway!

Also, consider what happens to those old dev boxes when you’ve upgraded. Here, we tend to reuse them with other projects - so if you want a quad core test/dev/build server in a few years, you might as well spec the quad core dev box today.

Intel just cut the price on quad core processors in half.
http://www.cnet.com/8301-13924_1-9924121-64.html?part=rsssubj=newstag=2547-1_3-0-5

There’s no reason to buy a dual core anymore. :wink:

I’d like to comment a bit abstractly.

In this article and the subsequent commentary much effort is being put forth to determine the benefit gained (I’ll refrain from using buzzwords) from developers using multi-core systems. To this end I have a few small points:

1 - I’m not sure I agree with an article that has an excuse written about people “buying in” to marketing hype that also assumes all readers of the content are software developers. Perhaps it is my own faux pas to assume that software developers have a basic level of knowledge and understanding about the systems on which they develop and therefore are technical enough to read through the hype presented by processor manufacturers.

2 - A solid technical argument about the realized benefits of multiple cores. This prompted me to think about the reasons we have multi-core, multi-cpu systems in the first place. I came up with the following:

  • Performance
  • High-availability
  • Bragging rights

For the purpose of my opinion here, I’ll limit my discussion to the first two points.

Performance gains. Software is developed with increased threading so that larger, more CPU-intensive applications can RUN FASTER. Does this translate into allowing our operating systems to more effectively handle many applications running at once? Sure. A machine that is sluggish because the user is running multiple, cpu-intensive operations is obviously a fault of … oh wait. To whom do we assign the blame? The OS? The hardware? The user? The developers of the applications? So many points of variance and all in the interest of the commodity that none of us can ever retain or regain: Time.

The key question here then is not “will multiple cores help my development time or aid me in developing more hardware-aware applications” but rather “will a multi-core system help enable me or an end-user of my product save TIME?” If the answer is ever “yes,” then then the value of time becomes the dollar amount of the hardware + the additional time spent to make the software take advantage of the multiple cores. I’m sure there is a beautiful mathematical equation that outlines this but alas, it is still before noon on a Monday morning.

On the High Availability discussion, this argument doesn’t translate quite as well to the multi-core environment as it did the multi-cpu architecture. I’m not versed enough to speak to what happens if a cpu ‘core’ fails in a multi-core system but the educated guess would say that if a single core fails, an entire cpu replacement is not far off.

If I sum up my own arguments into actionable points, it would look like this:
“Only get a multi-core system if you can somehow save someone time"
and
"High availability is not a good reason to invest in a multi-core system.”

Wow. Reading that you’d think I have no definite position. Ironic. All of that philosophical ranting only to arrive at my true opinion. I think multi-core cpu’s are imperative for developers, as they provide overall system performance gains (regardless of development platform, your SYSTEM runs better…in theory any way).

2 cores is still very much the sweet spot.

4 cores is great if you perform those 3 tasks often that were mentioned above.

Why don’t we all just write better software? Let’s optimize our routines and learn to make improvements to our software that are hardware independent first, then worry about how well our code runs on certain hardware. The Good Lord only knows how crappy most of my code is…regardless of the number of processor cores available. Bad code is still bad code. Hehe.

Great article. :slight_smile:

How many cores will an apple support?

“Most developers aren’t writing desktop applications today. They’re writing web applications.” - Do you have any stats for this? What about the people working on embedded software for set-top boxes, mobile phones etc? What about games development? (my target platform is Xbox360)

Howard

I’m torn on this issue. On the one hand, I think developers are one group of people who can profit tremendously from many-core processors due to (among other things) improvements in compilation speed. On the other hand, if you have a cutting-edge computer, your computer will be faster than that of 95% of your audience. Consequently, optimizing for your own computer (which is what most developers do by default) may result in unsatisfactory performance for many of the people who end up using your applications.

I’d say: Get the fastest computer you can with the most cores you can, but make sure that your application is performance-tested on a computer that you can reasonable expect your audience to have.

Actually I fully agree that its very much required that developers do move towards having 4/8/16 ++ (or whatever is out there) and thereby actually writing code that uses them.

I mean, come on, thats the future!!! Why not be a part of tommorrows technology…

Although today, its difficult to see developers coding for more that 2 cores, but if we can move from 1 to 2, then so can we move from 2 - multiple. Its quite expected and required that tommorrows applications will be written for multiple cores (2+). It will be normal for people to shift to such architectures in the near future. So I guess this is a natural technology trend and whether you like it or not, this was going to happen no matter what!!!

So, IMHO we (developers especially…) should put all our doubts aside and be a part of the revolution. So ,guys, lets start thinking quad-core( or probably octa-core, hexa-core :-))))) you name it!!!

Actually I fully agree that its very much required that developers do move towards having 4/8/16 ++ (or whatever is out there) and thereby actually writing code that uses them.

I mean, come on, thats the future!!! Why not be a part of tommorrows technology…

Although today, its difficult to see developers coding for more that 2 cores, but if we can move from 1 to 2, then so can we move from 2 - multiple. Its quite expected and required that tommorrows applications will be written for multiple cores (2+). It will be normal for people to shift to such architectures in the near future. So I guess this is a natural technology trend and whether you like it or not, this was going to happen no matter what!!!

So, IMHO we (developers especially…) should put all our doubts aside and be a part of the revolution. So ,guys, lets start thinking quad-core( or probably octa-core, hexa-core :-))))) you name it!!!

Here’s a horror story I wrote about the perils of ignoring multi-core architectures:

http://coverclock.blogspot.com/2008/04/future-has-way-of-happening.html

I think the programmers behind Microsoft Update all have dual quad cores. That’s the only way to explain how they could dump something that runs at 100% cpu for 5 minutes a day on millions of users.

Add the entire Vista development team to that too. None of them have seen anything they’ve written in the last 4 years run on a single processor.

I have a slighly different comment. First, I totally agree that developers, and lots of other people deserve the fastest and most modern hardware available. (I don’t have one right now and my needs don’t demand it.)

People who draw a salary for sitting in front of a keyboard should never have to wait for a slow machine to respond. A few hundred bucks, even a few thousand, is insignificant compared to their salary, benfeits, and other intangibles like the cost of office space. There may only be a few seconds here and a few minutes there, but it’s all wasted salary.

Yet, I’ve seen it time and again going way back to the days of punch cards: highly paid people waiting for obsolete hardware to finish their work.

p.s: another comment. It’s time for me to toss off my anonymous disguise and reveal my true identity.

Bill Hirst, Fort Lauderdale, Florida. I’m 61 years old and I’ve had a few strange jobs over the years. I’ll change my login ID.

Whee! I just outed myself.

I agree with your statement Jeff - though I’d have to say if price were comparable it’s a better choice to go with what’s current and upcoming.
As a developer who rarely deal with concurrency on a regular basis - there’s really no benefit to me for going multi-core unless the OS, frameworks, and middleware i use take advantage of them.
My reason for going multicore had more been the thinking is that while i develop - the dev tools aren’t the only thing running on my computer. I listen to music on a headset as i’m sure many other developers do too.

My point is most of us developers don’t just run development tools on our computers alone - there are many other things going on on the computer while we develop - music, browsers, news feeds etc. I think you’d find it rare that a developer runs sole dev tool. All developers i’ve ever known run all sorts of apps on their desktop.

I’m currently running an 1-core AMD 4000 on my main desktop and looking forward to going to 4core in the summer when i have sometime to rebuild. Since i’m on a 939 socket i would have loved it more to have been able to grab a 2core opteron 285. But prices on those never dropped till vendors removed them off the market with the final privce at 285 - well i can get a decen 4cor efor that at the same clock rate and less power consumption - it just makes better sense to go with whats current if price is a small difference. It appears that quad cor e prices are dropping all the time.

If you don’t have developers waiting for things to finish, you have end users waiting for things to finish. So divide the per hour cost by three, then multiply by 1000 users.

An open source example is SharpDevelop. On a typical 2.4ghz celeron, their code editor control scrolls at about 2-3fps, almost unusable. But this bug is marked as “wontfix worksforme”, because the developer has one of the fastest desktops money can buy, so it scrolls at like 10-15fps, barely noticeable. I’m pretty sure I’ve seen text scroll smoother when I had a 386, but people don’t write software like that anymore. If he didn’t have such a fast system, the rest of us wouldn’t need such fast systems. And so on down to end users who can’t be expected to upgrade.

I simply cannot believe that I’m the only person out there who uses my PC like this:

  1. Rendering a 2 hour family DVD while
  2. Ripping CD’s onto my MP3 player while
  3. Glancing over peridically at the ballgame on my second monitor while
  4. Compiling code while
  5. Checking my e-mail.

With the exception of the DVD encoder, none of these applications are inherently multi-threaded. Yet thank God for SMP. Every single CPU that I add to the system gets used and has a real and measurable impact on how easy it is to do things simultaneously that do not consume my attention, but most cetainly consume my PC.

Like Michael said, the real question is “Should Everyone Have Manycore CPUs?”

Multithreading and multiple CPUS/multiple cores should be significant at the OS level, not just at the app level. Saying “But people who don’t use multithreaded apps don’t get any benefit!” is missing the forest. The elephant in the room, if I may mix metaphors, is the gain in responsiveness when a GUI is properly parallel (background window updates, windows that update while you scroll or drag them, no click-and-wait on menu bars, no waiting for dialogs to draw completely before you can type in a field, etc.). This is harder to quantify and impossible to benchmark, but definitely there, and not just relevant but critical to everyone, not just developers or power users.

Once again, BeOS set a standard for this that has not been equaled or approached since.

Programming .NET is my daily job, My computer is more than two years old , it has AMD 3000+ single core CPU, two RAID 0 500G hard disk, one 160G hard disk, 2.5g ddr 400 memory, two monitors. I can open two vs.net 2008 IDE instance, two virtual machine, I feel the computer still handle it very well. I believe I am an agile developer, and also an agile user, if you computer is too slow handle your task, look for better one. If it is fast enough, why bother to upgrade it simply you can afford and simply because there are super fast CPU out there. I think Agile approach is all about attitude and behavior. Besides that, delaying upgrade your system means more than just saving your money, it means saving our environment, saving electricity, produce less pollution. “Mean” to yourself is a virtue.