Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Intel OpenMP implementations

redwraith
Beginner
394 Views
Hi all forums users!
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.
Thanks beforehand and bestregards!
GrayIC
0 Kudos
4 Replies
Lingfeng_C_Intel
Employee
394 Views
Thanks Gray,

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;

Then you can use OpenMP in your project.

For OpenMP more details, please visit www.openmp.org

Thanks,
Wise
0 Kudos
Michael_K_Intel2
Employee
394 Views
Hi Gray,

Let me point you to two blog articles that I have written. They explain how OpenMP compilers work and what they do with the code you're writing. The links are http://software.intel.com/en-us/blogs/2010/03/04/the-thing-from-another-world-or-how-do-openmp-compilers-work-part-1/ and http://software.intel.com/en-us/blogs/2010/07/23/thunk-you-very-much-or-how-do-openmp-compilers-work-part-2/.

I'm still working on the series, so some articles will follow in the future. So, check back to the Parallel Programming blog on ISN.

I hope that helps.

Cheers,
-michael
0 Kudos
redwraith
Beginner
394 Views
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.
Thank you and Best regards
/RedWraith
0 Kudos
Michael_K_Intel2
Employee
394 Views
Hi,

My blog series only describes the code transformation in general, without looking into ICC at all. I do not have any information available on the inner workings of ICC's OpenMP implementation.

Cheers,
-michael
0 Kudos
Reply