Skip to content

Bolt 9bb68d #272

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 18 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9b3ef19
[BOLT] add BOLT repository
shintaro-iwasaki Oct 27, 2020
bbbd39b
[BOLT] support BOLT
shintaro-iwasaki Oct 27, 2020
3f39329
[BOLT] Merge commit 'a6f6c94b6ac996a3ca356d3ad2d4febb6be786ef' into b…
shintaro-iwasaki Oct 27, 2020
2cafe2c
Merge commit 'f2400f024d323bc9000a4c126f2008a8b58fb4a0' into bolt-a6f6c9
shintaro-iwasaki Oct 27, 2020
6e6fe40
Merge pull request #1 from shintaro-iwasaki/bolt-a6f6c9
shintaro-iwasaki Oct 28, 2020
258e0f7
[BOLT] Merge commit 'c3d5df7a7e33ed45011489f1c6aaf47fe9216274' into b…
shintaro-iwasaki Oct 28, 2020
76d428f
[BOLT/test] mark some "untied" tests as unsupported with clang
shintaro-iwasaki Oct 28, 2020
bfb5528
Merge commit '6aa7228a629d81af78d4f701b7defb701f4b9283' into bolt-c3d5df
shintaro-iwasaki Oct 28, 2020
1173d08
Merge pull request #2 from shintaro-iwasaki/bolt-c3d5df
shintaro-iwasaki Oct 28, 2020
29437d3
[BOLT] Merge commit '1eaffd515aa517071625d9d8eecd45e91515444e' into b…
shintaro-iwasaki Oct 28, 2020
a1ffa53
[BOLT/test] mark OpenMP 5.0 tests as unsupported
shintaro-iwasaki Oct 28, 2020
54ca9d1
Merge commit '23419bfd1c8f26617bda47e6d4732dcbfe0c09a3' into bolt-1eaffd
shintaro-iwasaki Oct 28, 2020
9334d9b
Merge pull request #3 from shintaro-iwasaki/bolt-1eaffd
shintaro-iwasaki Oct 28, 2020
e517158
[BOLT] Merge commit 'ddec6316d319181792db8593d1a081013933e501' into b…
shintaro-iwasaki Oct 28, 2020
c0aa918
Merge commit '90a9f97cbda3bef63d9866d300b73b8ccf65c7f5' into bolt-ddec63
shintaro-iwasaki Oct 28, 2020
c2121e4
Merge pull request #4 from shintaro-iwasaki/bolt-ddec63
shintaro-iwasaki Oct 28, 2020
554b44f
Merge commit '24d0ef0f503f8230f115df049ee0ccd067f0881b' into bolt-9bb68d
shintaro-iwasaki Nov 13, 2020
3f9626b
[BOLT] Merge commit 'ddec6316d319181792db8593d1a081013933e501' into b…
shintaro-iwasaki Nov 13, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions bolt/.github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build-bolt:

runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest ]
abt: [ yes, no ]
steps:
- uses: actions/checkout@v2
with:
submodules: 'true'
- name: cmake
run: |
mkdir build
cd build
cmake ../ -DLIBOMP_USE_ARGOBOTS=${{ matrix.abt }} -DOPENMP_ENABLE_WERROR=TRUE
- name: make
run: |
cd build
make -j 2
42 changes: 42 additions & 0 deletions bolt/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#==============================================================================#
# This file specifies intentionally untracked files that git should ignore.
# See: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
#
# This file is intentionally different from the output of `git svn show-ignore`,
# as most of those are useless.
#==============================================================================#

#==============================================================================#
# File extensions to be ignored anywhere in the tree.
#==============================================================================#
# Temp files created by most text editors.
*~
# Merge files created by git.
*.orig
# Byte compiled python modules.
*.pyc
# vim swap files
.*.sw?
.sw?
#OS X specific files.
.DS_store

#==============================================================================#
# Explicit files to ignore (only matches one).
#==============================================================================#
# Various tag programs
tags
/TAGS
/GPATH
/GRTAGS
/GSYMS
/GTAGS
.gitusers

#==============================================================================#
# Directories to ignore (do not add trailing '/'s, they skip symlinks).
#==============================================================================#
runtime/exports

# Nested build directory
/build
3 changes: 3 additions & 0 deletions bolt/.gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "external/argobots"]
path = external/argobots
url = https://github.com/pmodels/argobots
50 changes: 50 additions & 0 deletions bolt/CHANGES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
===============================================================================
Changes in 1.0
===============================================================================

- Upgraded to LLVM OpenMP 10.0
- Upgraded Argobots to 1.0
- Fixed support for untied tasks
- Added tests for OpenMP task and thread scheduling
- Support several platforms including OSX and POWER9.

===============================================================================
Changes in 1.0rc3
===============================================================================

- Upgraded Argobots to 1.0rc2 to solve the TLS-related issue
- Fixed support for scheduler sleep

===============================================================================
Changes in 1.0rc2
===============================================================================

- Upgraded to LLVM OpenMP 9.0
- Improved the performance of nested parallel regions
- Support the thread affinity

===============================================================================
Changes in 1.0rc1
===============================================================================

- Upgraded to LLVM OpenMP 7.0
- Support task depend and taskloop
- Support OpenMP 4.5 except untied task and cancellation
- Argobots updated to the latest version and integrated as a git submodule

===============================================================================
Changes in 1.0b1
===============================================================================

- Fixed missing some global state initialization
- Fixed bugs related to newer Perl versions
- Updated the embedded Argobots version

===============================================================================
Changes in 1.0a1
===============================================================================

# The first release of BOLT, which uses Argobots as a threading layer.

# Support OpenMP 3.1

120 changes: 120 additions & 0 deletions bolt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
cmake_minimum_required(VERSION 3.13.4)

# Add cmake directory to search for custom cmake functions.
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

# llvm/runtimes/ will set OPENMP_STANDALONE_BUILD.
if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
set(OPENMP_STANDALONE_BUILD TRUE)
project(bolt C CXX)

# CMAKE_BUILD_TYPE was not set, default to Release.
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()

# Group common settings.
set(OPENMP_ENABLE_WERROR FALSE CACHE BOOL
"Enable -Werror flags to turn warnings into errors for supporting compilers.")
set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING
"Suffix of lib installation directory, e.g. 64 => lib64")
# Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.
set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")

# Group test settings.
set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING
"C compiler to use for testing OpenMP runtime libraries.")
set(OPENMP_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING
"C++ compiler to use for testing OpenMP runtime libraries.")
set(OPENMP_LLVM_TOOLS_DIR "" CACHE PATH "Path to LLVM tools for testing.")
else()
set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})
set(LIBOMP_USE_BOLT_DEFAULT FALSE CACHE BOOL "Use BOLT as a default LLVM OpenMP?")
if (${LIBOMP_USE_BOLT_DEFAULT})
# If building in tree, we honor the same install suffix LLVM uses.
set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")
else()
# If building in tree, we put BOLT libraries in a special directory
set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}/bolt")
endif()
# Place libraries in "lib/bolt"
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/bolt)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/bolt)

if (NOT MSVC)
set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++)
else()
set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
set(OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++.exe)
endif()
endif()

# Check and set up common compiler flags.
include(config-ix)
include(HandleOpenMPOptions)

# Set up testing infrastructure.
include(OpenMPTesting)

set(OPENMP_TEST_FLAGS "" CACHE STRING
"Extra compiler flags to send to the test compiler.")
set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING
"OpenMP compiler flag to use for testing OpenMP runtime libraries.")

# Build external libraries.
add_subdirectory(external)

# Build host runtime library.
add_subdirectory(runtime)


set(ENABLE_LIBOMPTARGET ON)
# Currently libomptarget cannot be compiled on Windows or MacOS X.
# Since the device plugins are only supported on Linux anyway,
# there is no point in trying to compile libomptarget on other OSes.
if (APPLE OR WIN32 OR NOT OPENMP_HAVE_STD_CPP14_FLAG)
set(ENABLE_LIBOMPTARGET OFF)
endif()

# Attempt to locate LLVM source, required by libomptarget
if (NOT LIBOMPTARGET_LLVM_MAIN_INCLUDE_DIR)
if (LLVM_MAIN_INCLUDE_DIR)
set(LIBOMPTARGET_LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_INCLUDE_DIR})
elseif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../llvm/include)
set(LIBOMPTARGET_LLVM_MAIN_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../llvm/include)
endif()
endif()

if (NOT LIBOMPTARGET_LLVM_MAIN_INCLUDE_DIR)
message(STATUS "Missing definition for LIBOMPTARGET_LLVM_MAIN_INCLUDE_DIR, disabling libomptarget")
set(ENABLE_LIBOMPTARGET OFF)
endif()

option(OPENMP_ENABLE_LIBOMPTARGET "Enable building libomptarget for offloading."
${ENABLE_LIBOMPTARGET})
if (OPENMP_ENABLE_LIBOMPTARGET)
# Check that the library can actually be built.
if (APPLE OR WIN32)
message(FATAL_ERROR "libomptarget cannot be built on Windows and MacOS X!")
elseif (NOT OPENMP_HAVE_STD_CPP14_FLAG)
message(FATAL_ERROR "Host compiler must support C++14 to build libomptarget!")
endif()

add_subdirectory(libomptarget)
endif()

set(ENABLE_OMPT_TOOLS ON)
# Currently tools are not tested well on Windows or MacOS X.
if (APPLE OR WIN32)
set(ENABLE_OMPT_TOOLS OFF)
endif()

option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP."
${ENABLE_OMPT_TOOLS})
if (OPENMP_ENABLE_OMPT_TOOLS)
add_subdirectory(tools)
endif()

# Now that we have seen all testsuites, create the check-openmp target.
construct_check_openmp_target()
65 changes: 65 additions & 0 deletions bolt/CREDITS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
This file is a partial list of people who have contributed to the LLVM/openmp
project. If you have contributed a patch or made some other contribution to
LLVM/openmp, please submit a patch to this file to add yourself, and it will be
done!

The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts. The fields are: name (N), email (E), web-address
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
(S).

N: Adam Azarchs
W: 10xgenomics.com
D: Bug fix for lock code

N: Carlo Bertolli
W: http://ibm.com
D: IBM contributor to PowerPC support in CMake files and elsewhere.

N: Diego Caballero
E: [email protected]
D: Fork performance improvements

N: Sunita Chandrasekaran
D: Contributor to testsuite from OpenUH

N: Barbara Chapman
D: Contributor to testsuite from OpenUH

N: University of Houston
W: http://web.cs.uh.edu/~openuh/download/
D: OpenUH test suite

N: Intel Corporation OpenMP runtime team
W: http://openmprtl.org
D: Created the runtime.

N: John Mellor-Crummey and other members of the OpenMP Tools Working Group
E: [email protected]
D: OpenMP Tools Interface (OMPT)

N: Matthias Muller
D: Contributor to testsuite from OpenUH

N: Tal Nevo
E: [email protected]
D: ScaleMP contributor to improve runtime performance there.
W: http://scalemp.com

N: Pavel Neytchev
D: Contributor to testsuite from OpenUH

N: Steven Noonan
E: [email protected]
D: Patches for the ARM architecture and removal of several inconsistencies.

N: Joachim Protze
E: [email protected]
D: OpenMP Tools Interface, Archer tool

N: Alp Toker
E: [email protected]
D: Making build work for FreeBSD.

N: Cheng Wang
D: Contributor to testsuite from OpenUH
Loading