OpenMP runtime porting and housekeeping status update


This the summary and status update I promised for work done on the LLVM OpenMP runtime since December’s code drop.

We’re now building on FreeBSD and OS X with clang ToT, and KMP_AFFINITY_SUPPORTED has been introduced to selectively enable/disable the feature which simplifies the addition of new ports. Apart from typo fixes to some strings there have been no functional changes to existing platforms.

(The commits list isn’t working so I’m posting a log of recent changes at the end of this mail.)

These topics have come up during the work where feedback would be appreciated:

  • Open questions:

  • “GCC compatibility (versioned symbols)” - which platforms do we want this enabled on? It’s currently only for KMP_OS_LINUX but I’ve noticed some third-party forks disable it completely.

  • C++ code in C sources: __kmp_join_call() in kmp.h has a C++ default argument so the C sources currently have to be compiled as C++. The options are either to (a) make the header C-compatible or (b) switch the remainder of the sources to C++ – any preferences?- FreeBSD tasks:

  • GUIDED_ANALYTICAL_WORKAROUND: We need disclosure of this problem report to complete support for FreeBSD. Jim, could you provide a summary of Intel C75803?

  • KMP_TDATA_GTID implementation with TLS for FreeBSD

  • __kmp_is_address_mapped() implementation for FreeBSD- Roadmap:

  • CMake build system: For integration with the LLVM project a CMake build system has been proposed. There’s an early version in the works now.

  • Release plan: Are we aiming for inclusion in +1 (3.5)? soname, versioning?

And the commit log:

commit 2c3c8184e8811ee920ba25e2d5d049bb9e69a6e9
Author: Alp Toker Date: Sun Mar 2 04:12:06 2014 +0000 Make affinity support conditional on KMP_AFFINITY_SUPPORTED The feature was previously guarded with KMP_OS_LINUX || KMP_OS_WINDOWS but can now be enabled/disabled independently to simplify porting. Completes the work started in r202478. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit 97a872b516f412617939b11740f4e552f5c01513 Author: Alp Toker Date: Fri Feb 28 09:42:41 2014 +0000 Add support for FreeBSD Port the OpenMP runtime to FreeBSD along with associated build system changes. Also begin to generalize affinity capabilities so they aren’t tied explicitly to Windows and Linux. The port builds with stock clang and gmake and has no additional runtime dependencies. All but a handful of the validation suite tests are now passing on FreeBSD 10 x86_64. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit 816f7882c3c7f262a82b272818dae416c5bd8e8a Author: Alp Toker Date: Tue Feb 25 22:04:37 2014 +0000 Restore string match behavior following changes in r202018 git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit e49a05da06734f67e5937ae8bb641f6ff1ce04c5 Author: Alp Toker Date: Tue Feb 25 00:38:58 2014 +0000 Silence -Wdeprecated-register warnings with clang git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit 936e0d0480372239d90b1e2a46a0706364da6e66 Author: Alp Toker Date: Mon Feb 24 12:29:14 2014 +0000 Fix linking and get the build working on OS X No version of clang installed by XCode, ToT or otherwise recognizes the flag ‘-no-intel-extensions’ and more recent versions error out on it. Prospectively conditionalize the flag behind “icc” to fix the mainline build with clang. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit 724ef6a592261750079e17c369c6039211ec646b Author: Alp Toker Date: Mon Feb 24 12:29:09 2014 +0000 Fix clang compiler detection on OS X was hard-wired to expect the Apple compiler version string which doesn’t make much sense, especially for a LLVM project. The correctness and value of these compiler version checks still isn’t clear following this build fix but they are retained for now. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit c3b8311f916acba81315bbdf1d741cdf0438128f Author: Alp Toker Date: Mon Feb 24 11:47:00 2014 +0000 clang build fix: don’t check for gnu tools by default gcc/g++ don’t exist on modern OS X development environments so the failed checks for gcc were causing the build to break even with ‘make compiler=clang’. (The rationale for the check refers to a file ‘touch-test.c’ which no longer exists in the codebase.) git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 commit 4bf04f627e8005bc19be5ced4eb6ca8fe1812559 Author: Alp Toker Date: Mon Feb 24 10:40:15 2014 +0000 Fix typos git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8 Alp.