Concurrency Improvement Center

Submit New Article



 

Welcome to the Concurrency Improvement Center

For an application to successfully take advantage of multi-core technology, it is important to take advantage of concurrency and parallelism in your code.  The level of concurrency that your application achieves will affect the level of performance your application demonstrates on multi- and manycore processors.

The Concurrency Improvement Center is designed to provide parallel programming tools and resources, starting with the basics, written by our Community experts, to help you improve the concurrency level of your software. Whether you want to get started with parallel programming or you have used the Intel® Concurrency Checker and found your application's concurrency level is below what is expected, you have come to the right place.

The key to the quality of information on this site is user feedback, please use the Concurrency Checker Forum to submit questions, make suggestions and offer your own best known methods.

 

Articles

Tools and Resources

Parallel Programming Video Courses

The Three Stages of Preparation for Optimizing Parallel Software Together, these three stages help software development organizations optimize their software efficiently, evolving it to take advantage of increasing numbers of processor cores.

8 Simple Rules for Designing Threaded Applications 8 Simple Rules that you should keep in mind when you are designing the threading that will transform a serial application into a parallel version.

The Serial On-Ramp to the Multicore Highway: Preparing to Parallelize Code by Andrew Binstock - This article discusses how coding and optimization on-the-fly are opposed and how performance experts approach performance improvement. It explains how they systematically prepare their code for optimization and how the optimization process is done.

Square Pegs and Round Holes- Evolving your serial code to take advantage of task and data parallelism from multiple cores and data parallelism from SIMD capabilities in Intel® processors requires knowing which parallel programming tools to choose for your project. Intel offers many software development tools for parallelism. This article looks at Intel tools and recommends how to choose the right tools for your project and development environment.



Specific information to support Intel Software Partners "Develop and Solve: Multi-Core Solutions."

List of Books on parallel programming and multi-core software development.

Complete list of Multicore Technical Articles.

Working with Java
"Multi-threading in a Java Environment", Article by Allan McNaughton

The Java* Resource Center (on ISN) is a collection of resources to help you optimize your Java applications for Intel Architecture.

Intel® Parallel Advisor 2011 - Simplifies threading your code by identifying those areas in your serial and parallel applications where parallelism would have the greatest impact. View the new Parallel Advisor video to see how it could work for you.

Open source TBB - instead of Open MP or Win32

Intel Guide for Developing Multithreaded Applications (For more advanced parallel programmers)

      Case Studies
Read about successful Parallel Programming

The Wild West Approach to Better Concurrency: Emotional Robots Takes the Parallel Path.

Accelerating Parallel Performance: Pervasive DataRush* Taps Cores Effectively

Geschickten's GenoicsCloud Solution Exploits Multi-Core Potential to the Max: Delivering HPC On Demand to the Biosciences Community

 

Introduction to Parallel Programming video lecture series - Part 01 "Why Parallel? Why Now?" This lecture endeavors to define parallel computing, explain why parallel computing is becoming mainstream, and explain why explicit parallel programming is necessary.

Introduction to Parallel Programming video lecture series - Part 02 "Parallel Decomposition Methods" This part endeavors to give the viewer strategies that can identify opportunities for parallelism in code segments and applications. Three methods for dividing computation into independent work  are illustrated.

A Visual Guide to Key Concepts in Threaded Programming - Common Problems and How to Solve Them (Intel) - Dr. Clay Breashears, senior parallel architect, Intel Academic Community, takes us through common threading problems and suggests how to plan for and solve them. He also discusses a number of useful design patterns, illustrating how they work and suggests when they are most applicable to your applications.

Working with .NET
Threading in .NET - Best Practices, 12 min. video, first in a series of 7 videos (Link takes you to a page with the first video, plus links to the other videos.)
"This series was designed for current .NET developers who have an interest in threading but have not had extensive experience in threading nor how threading enables improved performance on multi-core systems.  

TechEd: How .NET developers benefit from multicore platforms
Excerpts from a talk by Intel's Rami Radi at Microsoft Tech Ed Europe, 5 min. 30 sec. video