What me worry?

Look. There are a couple cores on my chip. The way things seem to be going, there may be a whole bunch of them someday. Who knows, one day the stupid thing might be so lousy with them it looks like a fly's eyeball. Do I care?

Should I?

What sort of software application even needs to be multi-threaded? What if I spend all that time and effort threading my app for multiple cores, it doesn't run any faster and chicks still don't dig me?

How do I even know I'm ready for threading? Maybe I'm not. Maybe my software isn't ready for it. How the heck will I know?

Maybe the whole multi-core thing is just hype. Maybe Penn and Teller should have a look at it for their next cable series...or...are the benefits real and I REALLY need to do something...

Where do I go? I'm full of anxiety just thinking about it...can someone out there help me?
For more complete information about compiler optimizations, see our Optimization Notice.


's picture

Folks, go into your Task Manager, select view, then select columns, and choose thread count. Right now I have SAV RT virus scan with a thread count of 41 and that isn't the largest count. I have one at 77. Even lowly MS Word starts out with 5, and quickly grows from there once you try and print, spell check, etc. Those wonderful, smart things Word does in the backround are all based on threads that run while the foreground is idle. Virtually every process running has multiple threads. Why wouldn't you want to run them on multi-core?

's picture

You want each multi-core, (each core not socket), to be able to speak to memory, (shared okay/discreiet better); but most importantly you want the ability for each core (not socket) to have read & write I/O functionality. And then you need the ultimate scheduler, and it isn't 'task manager', to handle workload balance. And that my friends gets you started on your way to parallel processing.

Programming in parallel using single thread is not parallel processing. And having multiple threads isn't a bad start on your way to look at it, but it gets messy. Take your 47 thread app. With Hyper-threading each core can handle 4 threads, you have 47, and I believe 2 cores. When the process begins the threads are allocated, and now enter CACHE. And now the spaghetti scramble begins. Prefetching from memory to cache, misses on the thread, drops on the core level etc. etc. etc. Your better off running a single core, maybe a dual core if it can slide under the threshold, but randomly adding more cores brings trouble.

And if it (your software) isn't prepared to run in parallel, you get no-gain anyway.

Might be the reason that Hyper-threading isn't being built into the current & future chip-sets, 'spaghetti scramble', (that sounds like a keeper).

This is how it works and no-one is arguing that it's a final go with multi-cores yet. But until the software advances are made (not hardware) multi-cores have their limitations. AMADAHL was right, so far. And adding cores that bring little gain is both a joke & dishonest. Even with a dual core, your better off staying with single threaded & single core computing until software advances forward.

Parallel Processing is the future, but it's a complex leap. And software is as big as hardware for this leap to be successful.

's picture

Hey Mr. Pitz and all Bloggers here. I'm glad to see that folks are checking out your site. We have posted a demo app from the folks at Aeshen, the first of many, to the Wiki. The app is a desktop search tool, that also contains both single threaded and parallel code for comparison and LEARNING. Actually, it is mostly there for fun and a bit of propaganda as well.

The app is simple but not trivial and is meant to be extended and played with as well as to generate thoughts about how threading can improve functionality and responsiveness. Source code, system requirements and suggestions for further dev are all there. Go to town and let us know if you morph this into something cool. We plan on creating more apps so let me know what you think.

Oh. I tried to post a short video file that talks about some of the main points of the app, but I cannot upload it successfully -what's up with that?

's picture

Hmm. I guess a URL would help folks find the sample app -- http://software.intel.com/en-us/articles/multi-core/all/1/


's picture


You seem to be involved & to know what your talking about. I went to the link, and still questions.

Does each core, (not socket, 2 cores in a socket), have it's own ability to i/O read & write. We have the Woodcrest & others and we have no clue until we spark it up next week.

Here is the big disconnect, we are ready to go, but INTEL Hyper-threading isn't the answer. That should be called programming in Parallel, which isn't Parallel Processing.

We are very far ahead of the curve, in the business side, with solution that will apply to the other side, (science, research, academia etc,).

You can't rely on Algorithms, it won't work. It took 12 year men hours time to create our solution. For the sake of Intel, I ask again, does each core have it's own I/O functionality? Not shared between the socket.

And I silently ask to all that know how to do it right, why all the hype with Virtualization? If you do it right & manage it right, especially with Multi-cores, who is going to need virtualization. We will out perform them 1000/1, shhhh because we don't want to ruffle feathers.

It would be great to hear INTEL tell ALL OF US. "here's what is going on." MORE OPENNESS as they say!

's picture

PITZ...where are you guy?

Follow up question. Is INTEL pushing Virtualization on us? Are we not going to be allowed to do Mainstream computing any longer?

INTEL may have made NEW CHIPS, but the message they are sending out is so unclear. It seems GHZ leakage and the marketing switch to Multi-cores in such a haste to keep up with AMD, is turning out chaos.

Multi-cores buzz. Parallelism buzz. And now Virtualization buzz. To sell product of course, I guess by visiting INTEL home page. But multi-cores & virtualization don't run hand & hand. Multi-cores used with parallel processing will bring extreme raw performance & output, that will blow virtualization out of the water.

In fact wasting Multiple Cores in the Virtualization environment is a crime & shame. Is all this about INTEL'S bottom line or the gains to developers & consumers? Is this blog a promotional site or informative site for developers?

PITZ, why so quiet on a blog you created internally on you employers site? Someone put out the hush order?

's picture

Have a look at applications like Blender* (http://blender.org). As a recovering animator, you probably have seen apps like it before. This is only one obvious angle where having threads to throw at a problem makes you a winner in the end.

This modeller has been used to make real movies from scratch. Developing 3-d models using a raytracing engine used to be for propellerheads. Soon you'll be using it to develop Powerpoint* slides. Right now it supports two threads, and I don't doubt it will soon support more.

Rendering is heavy duty work that lends itself well to distribution over multiple threads. Given never-ending feature growth that competition brings, it seems likely that preconfigured graph ray-traced rendering and animation in 1080p is in our future, embedded in our office applications.

Should you care? Only if you want your slides to look better than the other presenters'. Given your background you should have the edge there for now, but those kids keep up-and-coming and all of us experienced technologists know we have to keep moving or fall behind.

Graphs and charts for presentations may seem like trivial fare, but the purpose for a presentation is to convey significant information in a meaningful way. Adding animation or prerendered video to the presentation can be helpful in delivering challenging concepts. After all, as a presenter what matters is not as much what you're pitching, but how much of it they're catching, and visuals are key.

's picture

I wanted to add an example from real life.

My wife is quite active with the family. She exchanges DVD's of family events with other family members so we can keep up with each other. This is not uncommon, as recent news events have shown personal video has become quite the rage.

A few days ago she was editing DV from a recent family gathering. She laid it up in the editor for a few hours during the day. We bought a fancy editor with sweet transition and morphing effects recently, and she was trying it out for the first time. Her computer is only a couple years old and I built it well, but it's a single threaded single core machine. It has decent memory and it's not slow. The editing software did quite well with laying out the clips and mixing in the tracks.

Then she hit the publish to DVD button. Rendering video can take a while, and this looked to take hours. Immediately her internet radio started to stutter and she had to turn it off. She wanted to browse the internet for recipes for that night's dinner, but we might has well have been on dial-up the pages loaded so slow. It was not wothwhile. If she had been burning a CD, it would have been a coaster.

Admittedly, many people won't find this as annoying as she did. Some people have real problems. But many will, and she did. She dragged me over to the computer to diagnose the problem. I looked at what she was doing and that stern look on her face and I did what many people are going to do this fall. "Yes, dear. It's time."

With multiple cores to share the load this doesn't have to happen. Even if you have big jobs for your computer to do you can still have enough computer left to do the little things like browse, listen to content, watch a DVD. Yes, modern operating systems are supposed to multitask well but that's just not as smooth as it should be. You should know yourself from using a multicore machine that having to step back to a single core even for minor tasks can try your patience. As more people get to enjoy the experience of multiple-core goodness, they will realize it's just not fun to go back to the way things used to be. But then isn't that often the way of IT?

Steve Pitzel (Intel)'s picture

Hi folks - sorry for the delays in answering - I've been in conference He...aven this month - and - actually took a vacation to recuperate!!! Great comments all in all. Mikel hits on some great reasons why we need multi-core. Video editing and rendering with all the filters, effects, transitions fighting for attention is a natural usage. Now - try scoring that video using software synths with reverb! Pattycakesmallen makes a lot of great points as well. The key to really make all of this work well really is in the software - and, obviously, there are quite a few methodologies out there to consider. Thanks to all for responding to Pattycakesmallen and the others - especially on all the stuff my Fine Arts degree doesn't cover :) As far as virtualization goes - I know several production studios who employ several different operating systems across their pipelines depending on the programs being run. Most often it's a 2D application vs 3D application battle. Might be nice to run all those apps on a single, multi-core, virtualized platform - and to have the render wranglers and IT folks keeping your workstation in tip top order on a completely separate process.

's picture

"But multi-cores & virtualization don't run hand & hand. Multi-cores used with parallel processing will bring extreme raw performance & output, that will blow virtualization out of the water."

Could you explain what you're talking about? I think you misunderstand what Intel means by "virtualization", but it's hard to tell because your complaint is so vague.