Intel has been directing a lot of resources towards its multi-core efforts. It recently opened the Intel Visual Computing Institute to spur development of its Larrabee many-core GPU, and showed off its Nehalem-EX CPUs which can execute 128 threads simultaneously on an eight socket system. During the Intel Developer Forum in August 2008, the company announced that they were working on the Intel Parallel Studio to make multi-core software development easier.
Intel's software division is now shipping Intel Parallel Studio, a suite of development tools for C/C++ developers who are using Microsoft's Visual Studio. Parallel programming will enable these software programs (such as games) to take full advantage of multi-core processors from Intel and AMD.
Parallel Studio is comprised of three main components. Parallel Composer contains the Intel C++ compiler, performance libraries (Integrated Performance Primitives), Intel Threading Building Blocks and a parallel debugger extension. Parallel Inspector contains memory leak, data-race and deadlock detection capabilities. Parallel Amplifier is a performance profiler that analyzes hotspots, concurrency and locks-and-waits. It helps in finding bottlenecks and serialized programming.
Also available is Intel Parallel Advisor Lite, a new plug-in for Intel Parallel Studio that helps developers determine where parallelism is most beneficial to existing source code. Feedback from the tool helps programmers make better design decisions by showing the consequences of decisions, identifying conflicts, and suggesting ways to resolve conflicts.
Intel and Microsoft are collaborating together on the Microsoft Concurrency Runtime, which will be a part of Visual Studio 2010.
One of the aspects of software development that Intel has been discussing is "forward scaling”. The company says that when writing any program, it is important to consider how easily the program will migrate to utilize future machines. With the advent of multi-core and many-core processors, a critical element of this is scaling. As core counts rise, a program which is written using the proper techniques and using the proper tools is more likely to take strong advantage of the higher core counts.