Intel® Software Development Products Speed Optimization of Multi-Core Designs

Multi-core processors from Intel support scalable performance while optimizing power consumption. To support developers and take advantage of parallelism, Intel provides a robust suite of integrated software development tools and technical information to enable rapid development and optimization of multi-threaded applications. These include:

  • Intel® VTune® Performance Analyzer to evaluate application characteristics and determine performance impacts
  • Intel® Thread Checker and Intel® Thread Profiler for identifying specific opportunities to improve code efficiency and performance
  • Intel® C++ Compiler and code libraries for automatic parallelization of application software
Intel® VTune Performance Analyzer utilizes hardware interrupts to give the developer a true picture of how an application is performing. Available on Microsoft Windows* and Linux*, the Intel VTune Performance Analyzer enables a developer to focus on the performance intensive sections of an application by identifying threading opportunities within the code. Once the most time consuming functions are identified, the developer may drill-down to the source code to determine whether threading can be effectively implemented. Some resource-intensive functions may not lend themselves to parallel execution. When an identified hot spot cannot be threaded, it may be possible to improve performance by threading a higher-level function. In addition to supporting the developer in identifying opportunities for parallelism in the original code, the Intel VTune Performance Analyzer assists in identifying performance issues in threaded code caused by false sharing.

Intel® Thread Checker, available as a plug-in to the Intel VTune Performance Analyzer, detects threading errors while the program is running. Errors are then displayed and isolated to the source code line where the error occurs. Intel Thread Checker identifies potential causes of threading errors and suggests solutions. Threading an application introduces the possibility of a data race when two or more threads are trying to access the same resource at the same time, consequently a program repeatedly may run correctly in test yet fail when run by a customer. Synchronizing access to common resources is essential to avoid data race errors. Intel Thread Checker assists in identifying the need for synchronization by detecting errors which may occur, as well as those that do.

Intel® Thread Profiler helps developers monitor the effects of code optimization and fine tune workload balance and synchronization for applications applications threaded using OpenMP*, Windows API*, or POSIX* threads. It allows visual inspection of the application, enables more efficient use of threads by demonstrating the critical path as it moves along threads, identifies synchronization issues and excessive blocking time that impact performance, highlights workload imbalance, and maximizes time spent in parallel regions to improve application performance.

Compilers which automatically analyze loops and determine opportunities for parallelism are a lower effort alternative for developers with constrained resources. Auto-parallelization is the recommended first step for developers who want to improve performance on multi-core systems, and the Intel C++ Compiler 9.0 is an optimizing compiler for Intel® IA-32 processors. Offered on both Microsoft Windows and Linux operating systems, the Intel Compiler conforms to the C & C++ languages and offers binary compatibility with the GNU Compiler Collection (GCC).

Conclusion
To maximize the performance potential of multi-core processors, developers may choose to modify applications to take advantage of inherent parallelism. Intel® software tools ease the transition from sequential to parallel processing by helping to identify threading opportunities and tune threaded application performance. For further information please visit: www.intel.com/technology/advanced_comm