BNL Home

SOLLVE: Scaling OpenMP with LLVm for Exascale performance and portability

SOLLVE software

This is the SOLLVE compiler release for SC 2017. It is based on the IBM Clang/LLVM compiler which supports OpenMP offloading for NVIDIA GPUs, and includes preliminary optimizations implemented by the SOLLVE compiler team.

OpenMP GPU Offloading Benchmarks with Unified Memory Support

Brief instructions for configuring and installing SOLLVE are as below:

  1. Checkout LLVM:
  2. Checkout Clang:
    • cd where-you-want-sollve-to-live
    • cd llvm/tools
    • git clone
  3. Checkout Compiler-RT [Optional]:
    • cd where-you-want-sollve-to-live
    • cd llvm/projects
    • git clone
  4. Checkout Libomp:
    • cd where-you-want-sollve-to-live
    • cd llvm/projects
    • git clone
  5. Configure and build LLVM and Clang:

    Warning: Make sure you’ve checked out all of the source code before trying to configure with cmake. cmake does not pickup newly added source directories in incremental builds.

    • cd where you want to build llvm
    • mkdir build
    • cd build
    • cmake -G <generator> [options] <path to llvm sources>

    Some common generators are:

    • Unix Makefiles — for generating make-compatible parallel makefiles.
    • Ninja — for generating Ninja build files. Most llvm developers use Ninja.
    • Visual Studio — for generating Visual Studio projects and solutions.
    • Xcode — for generating Xcode projects.
  6. Some Common options:

    • -DCMAKE_INSTALL_PREFIX=directory — Specify for directory the full pathname of where you want the LLVM tools and libraries to be installed (default /usr/local).
    • -DCMAKE_BUILD_TYPE=type — Valid options for type are Debug, Release, RelWithDebInfo, and MinSizeRel. Default is Debug.
    • -DLLVM_ENABLE_ASSERTIONS=On — Compile with assertion checks enabled (default is Yes for Debug builds, No for all other build types).
    • Run your build tool of choice!
    • The default target (i.e. make) will build all of LLVM
    • The check-all target (i.e. make check-all) will run the regression tests to ensure everything is in working order.
    • CMake will generate build targets for each tool and library, and most LLVM sub- projects generate their own check-project target.
    • Running a serial build will be slow. Make sure you run a parallel build; for make, use make -j.
    • For more information see CMake
    • If you get an “internal compiler error (ICE)” or test failures, see here.

    Consult the Getting Started with LLVM section for detailed information on configuring and compiling LLVM. Go to Directory Layout to learn about the layout of the source code tree.

    More information about LLVM compiler framework can be found on the official LLVM website.