- Notifications
You must be signed in to change notification settings - Fork13
pmodels/bolt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
BOLT targets a high-performing OpenMP implementation, especially specializedfor fine-grain parallelism. BOLT utilizes a lightweight threading model forits underlying threading mechanism. It currently adopts Argobots, a newholistic, low-level threading and tasking runtime, in order to overcomeshortcomings of conventional OS-level threads. The current BOLT implementationis based on the OpenMP runtime in LLVM, and thus it can be used withLLVM/Clang, Intel OpenMP compiler, and GCC. More information about BOLT can befound athttp://www.bolt-omp.org.
- Getting Started
- Testing BOLT
- BOLT-Specific Environmental Variables
- Reporting Problems
- Alternate Build Options
- Getting Started==================
The following instructions take you through a sequence of steps to get thedefault configuration of BOLT up and running.
Henceforth, VERSION indicates the version number of the release tarball.
(a) You will need the following prerequisites.
- REQUIRED: This tar file bolt-VERSION.tar.gz- REQUIRED: C and C++ compilers (gcc and g++ are sufficient)- REQUIRED: CMake (http://www.cmake.org/download)- OPTIONAL: Argobots (http://www.argobots.org) The BOLT release tarball includes the Argobots source code, and thus you can build BOLT together with the built-in Argobots. Of course, you can use your own Argobots build instead of the accompanied one. In the latter case, we assume Argobots has been installed in /home/USERNAME/argobots-install.
Also, you need to know what shell you are using since different shell hasdifferent command syntax. Command "echo $SHELL" prints out the current shellused by your terminal program.
Note: if you obtained BOLT via github, the following commands download thebuilt-in Argobots from the Argobots repository.
git submodule initgit submodule update
(b) Unpack the tar file and create a build directory:
tar xzf bolt-VERSION.tar.gzmkdir bolt-buildcd bolt-build
If your tar doesn't accept the z option, use
gunzip bolt-VERSION.tar.gztar xf bolt-VERSION.tarmkdir bolt-buildcd bolt-build
(c) Choose an installation directory, say /home/USERNAME/bolt-install, which isassumed to be non-existent or empty.
(d) Configure BOLT specifying the installation directory:
If you want to use the built-in Argobots,
for csh and tcsh: cmake ../bolt-VERSION -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX=/home/USERNAME/bolt-install \ -DCMAKE_C_COMPILER=<C compiler> \ -DCMAKE_CXX_COMPILER=<C++ compiler> \ -DOPENMP_TEST_C_COMPILER=<C compiler for testing> \ -DOPENMP_TEST_CXX_COMPILER=<C++ compiler for testing> \ -DCMAKE_BUILD_TYPE=Release \ -DLIBOMP_USE_ARGOBOTS=on \ |& tee c.txtfor bash and sh: cmake ../bolt-VERSION -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX=/home/USERNAME/bolt-install \ -DCMAKE_C_COMPILER=<C compiler> \ -DCMAKE_CXX_COMPILER=<C++ compiler> \ -DOPENMP_TEST_C_COMPILER=<C compiler for testing> \ -DOPENMP_TEST_CXX_COMPILER=<C++ compiler for testing> \ -DCMAKE_BUILD_TYPE=Release \ -DLIBOMP_USE_ARGOBOTS=on \ 2>&1 | tee c.txt
If you want to use your own Argobots build,
for csh and tcsh: cmake ../bolt-VERSION -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX=/home/USERNAME/bolt-install \ -DCMAKE_C_COMPILER=<C compiler> \ -DCMAKE_CXX_COMPILER=<C++ compiler> \ -DOPENMP_TEST_C_COMPILER=<C compiler for testing> \ -DOPENMP_TEST_CXX_COMPILER=<C++ compiler for testing> \ -DCMAKE_BUILD_TYPE=Release \ -DLIBOMP_USE_ARGOBOTS=on \ -DLIBOMP_ARGOBOTS_INSTALL_DIR=/home/USERNAME/argobots-install \ |& tee c.txtfor bash and sh: cmake ../bolt-VERSION -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX=/home/USERNAME/bolt-install \ -DCMAKE_C_COMPILER=<C compiler> \ -DCMAKE_CXX_COMPILER=<C++ compiler> \ -DOPENMP_TEST_C_COMPILER=<C compiler for testing> \ -DOPENMP_TEST_CXX_COMPILER=<C++ compiler for testing> \ -DCMAKE_BUILD_TYPE=Release \ -DLIBOMP_USE_ARGOBOTS=on \ -DLIBOMP_ARGOBOTS_INSTALL_DIR=/home/USERNAME/argobots-install \ 2>&1 | tee c.txt
Bourne-like shells, sh and bash, accept "2>&1 |". Csh-like shell, csh andtcsh, accept "|&". If a failure occurs, the cmake command will display theerror. Most errors are straight-forward to follow.
(e) Build BOLT:
for csh and tcsh: make |& tee m.txtfor bash and sh: make 2>&1 | tee m.txt
This step should succeed if there were no problems with the preceding step.Check file m.txt. If there were problems, do a "make clean" and then runmake again with V=1 and VERBOSE=1.
make V=1 VERBOSE=1 |& tee m.txt (for csh and tcsh)ORmake V=1 VERBOSE=1 2>&1 | tee m.txt (for bash and sh)
Then go to step 3 below, for reporting the issue to the BOLT developers andother users.
(f) Install BOLT:
for csh and tcsh: make install |& tee mi.txtfor bash and sh: make install 2>&1 | tee mi.txt
This step collects all required header and library files in the directoryspecified by the prefix argument to cmake.
- Testing BOLT===============
To test BOLT, you can run the test suite. Compilers for testing must bespecified when you run cmake.
For example, if llvm-lit is installed:
cd bolt-buildNUM_PARALLEL_TESTS=16llvm-lit runtime/test -v -j $NUM_PARALLEL_TESTS --timeout 600
If you run into any problems on running the test suite, please follow step 3below for reporting them to the BOLT developers and other users.
- BOLT-Specific Environmental Variables===============
BOLT reveals several environmental variables specific to BOLT.
KMP_ABT_NUM_ESS=<int>: Set the number of execution streams which are running on OS-level threads (e.g., Pthreads).KMP_ABT_SCHED_SLEEP=<1|0>: If it is set to 1, sleep a scheduler when the associate pools are empty.KMP_ABT_VERBOSE=<1|0>: If it is set to 1, print all the BOLT-specific parameters on runtime initialization.KMP_ABT_FORK_CUTOFF=<int>: Set the cut-off threshold used for a divide-and-conquer thread creation.KMP_ABT_FORK_NUM_WAYS=<int>: Set the number of ways for a divide-and-conquer thread creation.KMP_ABT_SCHED_MIN_SLEEP_NSEC=<int>: Set the minimum scheduler sleep time (nanoseconds).KMP_ABT_SCHED_MAX_SLEEP_NSEC=<int>: Set the maximum scheduler sleep time (nanoseconds).KMP_ABT_SCHED_EVENT_FREQ=<int>: Set the event-checking frequency of schedulers.KMP_ABT_WORK_STEAL_FREQ=<int>: Set the random work stealing frequency of schedulers.
- Reporting Problems=====================
If you have problems with the installation or usage of BOLT, please followthese steps:
(a) First visit the Frequently Asked Questions (FAQ) page athttps://github.com/pmodels/bolt/wiki/FAQto see if the problem you are facing has a simple solution.
(b) If you cannot find an answer on the FAQ page, look through previousemail threads on thediscuss@bolt-omp.org mailing list archive(https://lists.bolt-omp.org/mailman/listinfo/discuss). It is likelysomeone else had a similar problem, which has already been resolvedbefore.
(c) If neither of the above steps work, please send an email todiscuss@bolt-omp.org. You need to subscribe to this list(https://lists.bolt-omp.org/mailman/listinfo/discuss) before sendingan email.
Your email should contain the following files. ONCE AGAIN, PLEASECOMPRESS BEFORE SENDING, AS THE FILES CAN BE LARGE. Note that,depending on which step the build failed, some of the files might notexist.
bolt-build/c.txt (generated in step 1(d) above)bolt-build/m.txt (generated in step 1(e) above)bolt-build/mi.txt (generated in step 1(f) above)DID WE MENTION? DO NOT FORGET TO COMPRESS THESE FILES!
Finally, please include the actual error you are seeing when runningthe application. If possible, please try to reproduce the error witha smaller application or benchmark and send that along in your bugreport.
(d) If you have found a bug in BOLT, we request that you report itat our github issues page (https://github.com/pmodels/bolt/issues).Even if you believe you have found a bug, we recommend you sending anemail todiscuss@bolt-omp.org first.
- Alternate Build Options==============================
BOLT is based on the OpenMP subproject of LLVM for runtime, and thus it usesthe same build options provided in LLVM.
Please visithttp://openmp.llvm.org/ for more build options.
About
Official BOLT Repository
Topics
Resources
License
Stars
Watchers
Forks
Packages0
Languages
- C++66.5%
- C22.3%
- CMake3.2%
- Perl3.2%
- Cuda2.3%
- Assembly1.4%
- Other1.1%