Nuts and Bolts of Multithreaded Programming
Parallelism is coming to everything from laptops to high-end servers. It will exist at multiple levels with multiple cores per chip, multiple sockets per box, and multiple boxes per system (cluster). While only some programmers will need to worry about clusters, all programmers will need to worry about shared memory multiprocessors. And the way you program these systems is with multi-threading.

By Tim Mattson

Get the basics about parallel algorithms, parallel programming APIs, and the tools required to start writing your own parallel programs.

Today’s leading hardware designs depend on parallelism; that is, multiple activities running at the same time. Performance inside a CPU depends on instruction level parallelism. All the major CPU vendors are putting multiple cores on each die. Typical servers have multiple sockets per box. Clusters of servers and grids of systems spanning the globe are becoming commonplace. Parallelism has gone main stream and if software developers want to stay relevant, they had better learn to deal with it.

A good place to start is by taking a closer look at parallel hardware. Supercomputing designers have been building high performance computers by connecting smaller computers into larger systems since the early 80’s. Most of these designs fall into one of two camps: distributed memory multiple instruction multiple data (MIMD) or shared memory MIMD architectures. In MIMD, each processing element has its own stream of instructions and its own stream of data. We call the system a "shared memory" system when there is a single address space that all the processing elements share. If the memories are distinct and the processing elements can only interact through the networks connecting them, we call the system a "distributed memory" system.


If you're interested in this topic, these articles may be helpful:

Multithreaded Programming Quickstart*
This netseminar explains the benefits of adding parallelism to your ap...
For-loop threading methods
by Jeff Andrews, application engineer, Intel Corp. Explore differen...
Developing Multithreaded Applications: A Platform Consistent Approach
Multithreading Consistency Guide The objective of the Multithreading ...
Multithreaded technology and multi-core processors
by Craig Szydlowski, Infrastructure Processor Division, Intel Corp. ...
Threading and Tuning
Richard Wirt Intel Senior Fellow Corporate Vice President Genetal M...

Related Jobs:

SW Engineer III #7582 - JAVA ONE 2005 - CA - Redwood City - Electronic Arts Inc.
Post Description Online Platform Development will have a broad range...
Software Development Engineer in Test #146157 - WA - Redmond - Microsoft Corporation
The Windows Communication Foundation Stress Test team has been given t...
Software Development Engineer #137858 - WA - Redmond - Microsoft Corporation
We are seeking creative, highly motivated software engineers for indiv...
Sr. Software Engineer, Services Team #1425 - CA - San Diego - Sony Corporation of America
Sr. Software Engineer, Services Team Req# 1425 Job Title Location Da...
Lead Software Development Engineer #145693 - WA - Redmond - Microsoft Corporation
How would you like to own the OLAP engine that went from nowhere to th...
Sr. Software Engineer / Developer #CA2986 - CA - Camarillo - Vitesse Semiconductor Corporation
BSCS; 7 to 10 years experience with embedded software development. Mus...
SW Engineer II #8421 - CA - Redwood City - Electronic Arts Inc.
Post Description Key responsibilities: The Software Engineer II - O...
Software Development Engineer #137909 - WA - Redmond - Microsoft Corporation
We are seeking creative, highly motivated software engineers, both for...
Software Development Engineer #137860 - CA - Irvine - Microsoft Corporation
We are seeking creative, highly motivated software engineers for indiv...
SW Engineer II #6000 - CA - Redwood City - Electronic Arts Inc.
Post Description Get in the Game with EA! Electronic Arts (EA) is...