Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Official BOLT Repository

License

NotificationsYou must be signed in to change notification settings

pmodels/bolt

 
 

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.

  1. Getting Started
  2. Testing BOLT
  3. BOLT-Specific Environmental Variables
  4. Reporting Problems
  5. Alternate Build Options

  1. 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.


  1. 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.


  1. 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.

  1. 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.


  1. 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.

Packages

No packages published

Languages

  • C++66.5%
  • C22.3%
  • CMake3.2%
  • Perl3.2%
  • Cuda2.3%
  • Assembly1.4%
  • Other1.1%

[8]ページ先頭

©2009-2025 Movatter.jp