Ive been using Intel's C++ compiler and been doing some parallel work using OpenMP. Im trying to increase my knowledge with OpenMP implementations but Im unable to find any detailed information about Intel's implementation of OpenMP.
Apsects that Im interested are amongst other: Task work-sharing/work-stealing (anything like TBB??), scheduling policies, what are the scheduling points in this implementation, tied-vs-untied (how they are handled), embedded task-depth cutoff (does such exist or are we having a dynamic task-pool stack a la TBB?).
If anyone know any document or person that could enlighten me in these areas I would be grateful.
If you want to use OpenMP, you should select OpenMP language support in your project. The way is Click project property, and pop up property page; Click language in C/C++ item; Click yes, in OpenMPSupportof General item;
Hi Wise and Michael Klemm and thank you both for you answer.
Wise: Thanks for the information. I already know how to both use OpenMP code in my programs. What interests me is how the inner workings of specifically Intel's OpenMP implementation.
Michael Klemm: Those are some awesome blog series you've got there. Looking forward to reading them. Will they deal with how Intel's compiler transforms code or OpenMP code in general (which I know to some good extent how other implementation do)? My biggest interest is how Intel's implementation of OpenMP task management are done in comparison to other parallel models. Do you have an information on this? Do Intel's OpenMP implementation use the same alghoritm as the TBB (ie Work/Depth first on threads and Breadth-first on stealing) or does it share work differently? I haven't found the source code for ICC so I can't study it in-depth like I could with TBB. So if you have information on these kinds of details (queue structure, stealing mechanism, locks/queue etc) and you are allow to share them that would be awesome.