New Intel 9.0 compilers aim at multithreaded apps

Santa Clara (CA) - Citing the need for software developers to take advantage now of the skyrocketing trend toward multicore and hyperthreaded processing, Intel Corp. announced the release of version 9.0 of its C++ and Fortran compilers. By embracing OpenMP 2.5 - the newest edition of a multiprocessing standard - the company hopes developers will create the software tools and applications that will justify its surging investment in multicore technologies.

"For a long time, most processors couldn't run more than one thread at a time," said James Reinders, a senior engineer with Intel's Tools Group, "so a lot of applications were threaded for convenience, or for the occasional opportunity to run on a multiprocessor system." As a result, added Reinders, Intel wanted to avoid a situation where they were just releasing multicore and hyperthreading CPUs to the public, while at the same time urging developers to write the first applications ever to take advantage of parallelism. If consumers couldn't see the advantages of parallelism in applications the moment dual-core and HT CPUs hit the market, there's a chance they wouldn't have sold.

Renewing the call to write parallel applications now - in order to help multicore CPUs sell better tomorrow - is the principal focus of Intel's 9.0 compilers release. As Reinders told us, OpenMP enables software developers to explicitly designate in their code those routines - such as loops - that are best suited for execution in parallel. These flags are presented as comments with a specific syntax that Intel and other supporting compilers (including Microsoft's) will recognize. For example, loops in C++ and Fortran are often used to count elements in a set, such as records in a database, like thumbing through cards in a Rolodex. OpenMP comments, or "pragmas," enable source code to instruct the CPU to allocate processing of multiple entries in a loop, or "iterations," among as many CPU processing cores as are available.

With the OpenMP comments added, explained Reinders, the developer can "throw a switch on the compiler, [which] will enlighten the compiler that these loops or functions are important and should be run in parallel. That helps the compiler a great deal, to keep it from either being too conservative and not running stuff in parallel, or being too liberal and running things in parallel that don't make sense." In other words, the OpenMP comments help the compiler to isolate reiterative functions that would not benefit from parallel execution.

Also new to Intel's 9.0 series is enhanced protection against buffer overrun exploits - one of the most frequent functions of virus payloads. In working with Microsoft, Reinders told Tom's Hardware Guide, Intel learned that as many as 60 percent of buffer overrun errors are aimed at rewriting the stack address - the place where execution returns after the process that spawned the virus payload in the first place concludes. With version 9.0, stated Reinders, "we can protect the return address on the stack in a very low-overhead manner." Earlier editions introduced stack pointer protection for Windows, borrowing one of Microsoft's libraries; with 9.0, equivalent support has been introduced for Linux. "Some of our customers are very excited," reported Reinders, "because they see Linux as maybe a little bit more vulnerable right now, even if it's not quite as much under attack. The fact that you can throw a switch and have [the compiler] protect against perhaps the most common attack in a low-overhead manner, is extremely appealing."

Although direct support has yet to materialize, the 9.0 compilers release marks the first time in Intel's history where a support program has been initiated for Apple software developers, in the wake of that company's announcement of future Intel CPU support. On Intel's Web site, Apple developers are being invited to sign up for a new developer support program, the details of which have yet to be finalized.