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:

Artificial neural nets and Hyper-Threading technology
by Chuck Desylva, Intel Corp. There are many artificial-intellige...
Multithreaded technology and multi-core processors
by Craig Szydlowski, Infrastructure Processor Division, Intel Corp. ...
Developing Multithreaded Applications: A Platform Consistent Approach
Multithreading Consistency Guide The objective of the Multithreading ...
Threading and Tuning
Richard Wirt Intel Senior Fellow Corporate Vice President Genetal M...
For-loop threading methods
by Jeff Andrews, application engineer, Intel Corp. Explore differen...

Related Jobs:

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...
Application Developer #2392348 - OH - Columbus - Ajilon Consulting
Title : Application Developer Posted : 10-11-2005 Contact ...
API/Platform Development and Integration Engineer - CA - Brisbane - Stentor, Inc.
Stentor? Inc. is a leader in the distribution, management, and storage...
Software Development Engineer #137909 - WA - Redmond - Microsoft Corporation
We are seeking creative, highly motivated software engineers, both for...
Software Development Engineer #149750 - CA - Mountain View - Microsoft Corporation
We are seeking creative, highly motivated software engineers, both for...
Software Development Engineer #132004 - WA - Redmond - Microsoft Corporation
The Windows Team is looking for an experienced developer like you to w...
Visual C# (.NET) developer - NY - New York - Antepo
ROLE Antepo is looking for a dynamic, committed Windows GUI/Clie...
Software Development Engineer #137858 - WA - Redmond - Microsoft Corporation
We are seeking creative, highly motivated software engineers for indiv...
Sr. Software Engineer / Developer #CA2986 - CA - Camarillo - Vitesse Semiconductor Corporation
BSCS; 7 to 10 years experience with embedded software development. Mus...