Getting Positioned in Parallel
As multicore issues arise in your personal programming practice, what you want to know is how to position yourself in the new arena. I have a few practical observations to share on this score.
First of all, the new arena is called "How to use all this power." Things you could not do before you can do now. Things can genuinely happen asynchronously and simultaneously now, which is the making of certain algorithmic confections and the breaking of certain legacy applications.
Let's refine that: "How to use all this power safely." Multiproc operating systems can stymie older apps which had implicit, hidden dependencies on the serial implementation of classic multitasking's emulation of parallelism.
Let's refine that further: "How to use all this power safely in the context of the marketplace." All the parallel algorithms were known decades ago. What is most accessible and broadly useful in the mass marketplace is a loose task parallelism supported by the higher-level toolkits, the synchronization of work units that themselves are conceptually unitary but at the code level are complex and heterogenous. Classic biz/consumer applications exhibiting multitasking were already modelling this in the multitasking era, albeit their code bodies, compiled objects and some conceptions were broken or flawed when transferred to genuinely parallel platforms.
And further: "How to use all this power safely in the context of multiple marketplaces." There are layers of increasingly technically demanding parallel application market spaces. Image resolution is deeper (though arguably more straightforward) than speeding up a word processing package.
The first thing to do is decide what you want out of which parallel platforms. Are you writing consumer apps or mapping distant galaxies, and are you doing it on Windows, or portably also to Mac and Open Source, or on a custom platform like IBM SP?
It all resolves itself as soon as you ask the right questions. If you're in supercomputer world, including supercomputers woven from packs of biz/consumer boxes, your algorithms will come from textbooks and experience and your tools will be dictated by implementation availability.
If you're doing computationally intense stuff or designing programming frameworks or authoring C/C++ backends to transactional web applications, you should explore feverishly TBB and OpenMP and become briefly expert in all nuances, including the nerdly compiler support/non-support issues for every platform you support. Join the community, read the forums, the whole nine yards.
If you're working on classic biz/consumer apps, you're probably best off doing workflow systems based on messaging models, possibly employing messaging middleware. You'll never write a lock or a semaphore and you won't miss it very much.
Distributing Work Across Cores Using .NET
A roll-your-own ThreadPool implementation
Looking For The Lost Packets: Part 2
Techniques for debugging multicore packet-processing systemsLooking For The Lost Packets: Part 1
DSP Meets Wireless Communications
- Intel Parallel Studio; Download the free eval today!
- Parallelism Breakthrough Video Series; Watch and learn more about Intel® Parallel Studio
- 2009 Intel Software Webinar Series; View On-Demand webinars
- Coding for Multi-core Processes; Intel® Compiler Pro eBook
- Performance Through Parallelism; Intel® Tuning for Vista eBook
- Intel® Software Network; Connect with developers and Intel engineers
-
February 18, 2010
Lock Contention, Using Intel Parallel Studio to Improve Performance
Speaker: Vasanth Tovinkere, Software Engineer, Intel Corporation (Bio)Vasanth Tovinkere is a software engineer in the Developer Products Division (DPD) at Intel. His current role involves defining novel approaches to understanding and visualizing parallel performance and consulting with strategic customers to help them prepare and deliver code for the multicore world. Vasanth has been involved in the development of automatic semantic event detectors for digital sports technologies in Intel Labs. He also has been awarded three patents and has two patents pending.
Abstract:
Discover how easy it is to use the power of Microsoft Visual Studio and Intel Parallel Studio to find performance issues due to lock contention in threaded applications. This ensures that shipped applications can take better advantage of multicore processors. In this webcast, we provide live demonstrations that show how to identify lock contentions issues with Visual Studio and Intel Parallel Studio, an add-in to Visual Studio that helps developers create fast, reliable code on multicore processors.t.



