Welcome to the home of GOMP

The GOMP project has developed an implementation of OpenMP for the C, C++, and Fortran compilers in the GNU Compiler Collection and is further improving it. As part of the GNU Project, GOMP simplifies parallel programming for all GNU system variants. This effort operates in an open environment to attract developers and ensure applicability across multiple architectures and applications.

Traditionally, programmers have used architecture-specific methods to effectively program tightly-parallelized computers — high band-width clusters, SMP machines, or multi-core processors. Parallel programming has thus been a time-consuming and arcane task.

OpenMP offers a simple way of exploiting parallelism without interfering with algorithm design; an OpenMP program compiles and operates correctly in both parallel and serial execution environments. Using OpenMP's directive-based parallelism also simplifies the act of converting existing serial code to efficient parallel code.

OpenMP additionally permits to offload computations on accelerators such as GPUs, making use of their highly parallel computation support; if no accelarator is available, as fallback, the computation is then done on the host.

Project goal

To remain relevant, free software development tools must support emerging technologies. By implementing OpenMP, GOMP provides a simplified syntax tools for creating software targeted at parallel architectures. OpenMP's platform-neutral syntax meshes well with the portability goals of GCC and other GNU projects.

The GOMP release includes a support library, libgomp, and extensions to target language parsers. A long-term goal is the generation of efficient and small code for OpenMP applications.

Contributing

We encourage everyone to contribute changes and help test GOMP. GOMP has been merged into mainline GCC.

Reporting Bugs

Please add "openmp" to the keywords field when filing a bug report.

Documentation

libgomp, the GOMP support library, has online documentation available.

Status

November 13, 2020

OpenMP Version 5.1 has been released.

August 20, 2020

OpenMP Technical Report 9: Version 5.1 Public Comment Draft has been released.

May 7, 2020

GCC 10 has been released; it adds a number of newly implemented OpenMP 5.0 features on top of the GCC 9 release such as conditional lastprivate clause, scan and loop directives, order(concurrent) and use_device_addr clauses support, if clause on simd construct or partial support for the declare variant directive, getting closer to full support of the OpenMP 5.0 standard.

May 3, 2019

GCC 9 has been released and version 5.0 of the OpenMP specification is now partially supported in the C and C++ compilers. For details which features of OpenMP 5.0 are and which are not supported in the GCC 9 release see this mail.

November 8, 2018

The OpenMP v5.0 specification has been released.

May 2, 2017

GCC 7 has been released and version 4.5 of the OpenMP specification is now partially supported in the Fortran compiler; the largest missing item is structure element mapping.

April 27, 2016

GCC 6 has been released and version 4.5 of the OpenMP specification is now supported in the C and C++ compilers

November 14, 2015

The final OpenMP v4.5 specification has been released.

October 13, 2015

The gomp-4_1-branch has been merged into mainline, so GCC 6 and later will feature OpenMP v4.5 support for C and C++.

June 30, 2014

Fortran OpenMP v4.0 support has been backported to gcc-4_9-branch and will be available in the upcoming GCC 4.9.1 release.

June 18, 2014

The last major part of Fortran OpenMP v4.0 support has been committed into mainline.

October 11, 2013

The gomp-4_0-branch has been merged into mainline, so GCC 4.9 and later will feature OpenMP v4.0 support for C and C++.

July 23, 2013

The final OpenMP v4.0 specification has been released.

August 2, 2011

The gomp-3_1-branch has been merged into mainline, so GCC 4.7 and later will feature OpenMP v3.1 support.

July 9, 2011

The final OpenMP v3.1 specification has been released.

February 6, 2011

A draft of the OpenMP v3.1 specification has been released for public review. The gomp-3_1-branch branch has been created and work began on implementing v3.1 support.

June 6, 2008

The gomp-3_0-branch has been merged into mainline, so GCC 4.4 and later will feature OpenMP v3.0 support.

May 12, 2008

The final OpenMP v3.0 specification has been released.

October 22, 2007

Draft of the OpenMP v3.0 specification has been released for public review, the gomp-3_0-branch branch has been created and work began on implementing v3.0 support.

March 9, 2006

The branch has been merged into mainline, so starting with GCC 4.2 the compiler supports the OpenMP v2.5 specification.

November 18, 2005

The branch is ready to be merged into mainline. All three front ends are functional and there should not be many corners of the standard left to implement. There are 5 main modules to merge into mainline: (1) runtime library, (2) code generation, (3) C front end, (4) C++ front end, and, (5) Fortran front end.

October 20, 2005

The runtime library is functionally complete. The syntax parsers for C, C++ and Fortran are complete, though there are still dusty corners with respect to semantic translation to be resolved. Adventurous users who don't mind the compiler crashing on every other source file are encouraged to begin filing bugs.