Our new tech analyst, Victor Loh, spent some time in the weeds of Intel Developer Conference sessions last week. These sessions are the real meat of IDF, so check out his reports on the various topics that will enable new features and affect performance in the upcoming year.
Development Tools: Multicore and Mac OS X
Intel’s much-hyped multicore technology doesn’t translate to better performance unless we can get our hands on software that takes advantage of its additional processing power potential. To make sure coders start cranking out software for the new architecture, Intel is providing the tools to help developers optimize their code for the multicore applications: Intel Compilers and Intel Performance Libraries.
There are three primary forms of multicore utilization—independent programs, parallel programs, and memory latency reduction.
One way to utilize multicore capabilities is with independent programs. The basic concept is multi-tasking with multiple different programs running at once.
Parallel programs consist of a single application divided up into multiple application threads. An example would be rendering two parts of a screen graphic at the same time on separate cores. But the possibility of thread switching and thread interaction adds another level of complexity that must be addressed in the software development process. The code may require locks that only allow a single process to access a chunk of data at a time.
A third method of ramping up to multicore performance is by reducing memory latency. In order to diminish the lag caused by disparities between the speed at which data can be processed at in the CPU and the time it takes to write to and read from the memory cache, programmers can plan ahead by “warming up” caches and pre-fetching memory data to keep the core data-feed constant. This method incorporates a “helper” thread in addition to the main application thread to perform the memory loading tasks.
|Click to Enlarge|
While implementing these strategies into multicore-friendly code may sound daunting, Intel has provided some helpful tools. Working with Intel’s own compiler allows developers to perform advanced optimization. With Autoparallelization, the compiler can help generate much of the threaded code by threading loops where possible. Tools like Autoparallel and OpenMP can extract the benefits of multicore performance through optimized software development.
For all phases of single and multicore software development, from coding and correctness checking to performance analysis and algorithm tuning, Intel has provided a full set of tools for Windows and Linux OS environments. Continued…
|Click to Enlarge|