Introduction to the Intel® OpenMP* Runtime Library

What is this project?

This project provides the source code of the Intel® OpenMP* runtime. The runtime is the part of the OpenMP* implementation that your code is linked against, and that manages the multiple threads in an OpenMP* program while it is executing.


Who is this project for?

This project is for compiler writers who want to use the Intel® OpenMP* runtime as the target of their compiler and for the authors of profiling tools who want to instrument the Intel® OpenMP* runtime to allow their tools better to support programs compiled with the Intel® Parallel Studio XE products.

 


Who isn't this project for?

This project is not for users of the Intel® Parallel Studio XE who are writing OpenMP* programs. They should continue to use the binary distributions of the runtime that come with those products.


Latest Posts

News
Forums
August 17, 2016: New code release

We are excited to announce the next release of the Intel® OpenMP* Runtime Library at openmprtl.org. This release aligns with Intel® Parallel Studio XE 2017 Composer Edition

New Features:

  • OpenMP* 4.5 nonmonotonic modifier for schedule dynamic and guided support

Bug Fixes:

  • Hang when tasks with nested parallelism are used fixed
  • task depend for single thread improved
  • KMP_PLACE_THREADS environment variable renamed into KMP_HW_SUBSET with similar functionality
  • KMP_HW_SUBSET for disabled hyper-threading fixed
  • KMP_HW_SUBSET for KMP_AFFINITY=none is supported
  • Performance of single construct improved on Intel(R) Xeon Phi.
  • TAS lock backoff code improved for non-x86 architectures

Contributions:

  • Paul Osmialowski (ARM) improved futex lock implementation.
  • Hal Finkel (ANL) fixed the build on non-x86 architectures.
  • Jonas Hahnfeld (RWTH) improved reporting for OMPT events and parallel/task ids.
  • Joachim Protze (RWTH) added OMPT frame information report for taskwait.
  • Harald Servat (BSC) added support for OMPT task dependences events.
  • Tim Cramer (RWTH) added support for OMPT lock events.

 

March 29, 2016: New code release

We are excited to announce the next release of the Intel® OpenMP* Runtime Library at openmprtl.org. This release aligns with Intel® Parallel Studio XE 2016 Composer Edition Update 3.

New Features

  • OpenMP* 4.5 schedule(simd:static) support

Bug Fixes

  • Hwloc topology discovery improved
  • Spin backoff mechanism fixed in lock code
  • Plain barrier performance improved on Intel(R) Xeon Phi

Contributions

  • Samual Antao (IBM) contributed a patch to initialize variables to silence complaints from static analyzers

 

February 25, 2016: New code release

We are excited to announce the next release of the Intel® OpenMP* Runtime Library at openmprtl.org. This release aligns with Intel® Parallel Studio XE 2016 Composer Edition Update 2

New Features:

  • Hwloc* 2.0 support added for affinity interface
  • OMPT support for windows
  • Support for untied tasks
  • OpenMP* 4.5 doacross, taskloop, and new affinity API

Bug Fixes:

  • Indirect lock pool cleanup fix
  • Task dependencies performance improvements
  • OMP_PROC_BIND spread strategy fix for master thread
  • @rpath added to install name to alleviate problem using DYLD_LIBRARY_PATH on Mac OS X* 10.11 (El Capitan).

Contributions:

  • NetBSD* port by Joerg Sonnenberger (NetBSD*)
  • Fork-join barrier performance improvement by Diego Caballero (Barcelona Supercomputing Center)

Dear all,

I am looking for flag option that used to generate intermediate representation of OpenMP* on icc, such as explain in (1.7.1 Work Sharing Example).

Also, is it possible to extend  icc compiler by adding new pragma (directive)?

Thanks in adavnce

Regards

Is there any way I can summon nCores with OpenMP?

I use __kmpc_push_num_threads for support num_threads clause. But it is segmentation fault when call __kmp_push_num_threads.

I debug with gdb and found that __kmp_threads is null. This is __kmpc_push_num_threads bug? or I miss anything?

kmp_runtime.c:7884
7884	    kmp_info_t *thr = __kmp_threads[gtid];
(gdb) p __kmp_threads
$1 = (kmp_info_t **) 0x0

Thank you

 

Documentation

Reference Manual for latest release

Resources

OpenMP* Forums
FAQs
Licensing