Multi-Core Programming: Increasing Performance through Software Multithreading

Writing a threaded application requires the same create, debug, and tuning steps needed to make a working application that is not threaded. While so much is the same, it is most interesting to look at what is different.
This chapter takes a look at Intel's suite of software and focuses on the aspects of these products that Intel has included for threaded applications. Intel's suite of products is arguably the most comprehensive available today for threaded programming for C++ or Fortran developers, including a few tools that are currently unique or leading examples.
Most of the tools are focused on threading. A section in this chapter also describes Message Passing Interface (MPI) programming and the tools to support it. MPI programming is an important programming method to consider when you are trying to make highly scalable code that might even run on a very large supercomputer.
Intel has been working with multiprocessor designs and the tools to support them for well over a decade. In order to assist programmers, Intel has made available a number of tools for creating, debugging, and tuning parallel programs.
Most programming work begins with an existing application. It often begins with a prototype of a framework or critical elements of the application, for those working to program something entirely new. Whether a prototype or a preexisting application, some initial investigation plays a critical role in guiding future work. Tools such as the Intel VTune Performance Analyzer and the...