Daint Clang
John Biddiscombe edited this page Oct 3, 2017
·
30 revisions
Please note that this page is intentionally written in such a way that chunks can be copied verbatim (including comments and section titles) and pasted directly into a bash shell. The idea is to make it as easy as possible to select the block you need use it directly. Usually following each of the blocks/section sequentially and skipping the ones you don't want/need.
module unload PrgEnv-cray
module unload PrgEnv-gnu
module load cudatoolkit
# assuming clang is compiled and installed in /users/biddisco/apps/daint/llvm
export CLANG_ROOT=/users/biddisco/apps/daint/llvm
export CC=$CLANG_ROOT/bin/clang
export CXX=$CLANG_ROOT/bin/clang++
export CPP=$CLANG_ROOT/bin/clang-cpp
#
export PATH=$CLANG_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$CLANG_ROOT/lib:$LD_LIBRARY_PATH
#
export CFLAGS=-fPIC
export CXXFLAGS="-fPIC -march=native -mtune=native -ffast-math -std=c++17 -stdlib=libc++ -I$CLANG_ROOT/include/c++/v1"
export LDFLAGS="-L$CLANG_ROOT/lib -rpath $CLANG_ROOT/lib"
export LDCXXFLAGS="$LDFLAGS -std=c++17 -stdlib=libc++"
#
# for cuda, (not yet tested 03/09/2017)
export CUDAFLAGS="--cuda-path=$CUDATOOLKIT_HOME \
-L$CUDATOOLKIT_HOME/lib64 \
-L$CUDATOOLKIT_HOME/extras/CUPTI/lib64 \
-Wl,--as-needed -Wl,-lcupti -Wl,-lcudart -Wl,--no-as-needed \
-L/opt/cray/nvidia/default/lib64 \
-L/opt/cray/nvidia/default/lib64 \
-lcuda"
# our build directory root for all clang compiled projects in one place
export BUILD_ROOT=$SCRATCH/build/clang
# shortcut to go there
alias cdb='cd $BUILD_ROOT'
# Optional shortcuts for Apex output in HPX
alias APEX_OFF='export APEX_SCREEN_OUTPUT=0;export APEX_PROFILE=0;export APEX_OTF2=0'
alias APEX_ON='export APEX_SCREEN_OUTPUT=1;export APEX_PROFILE=1;export APEX_OTF2=1'
# Versions we will install
INSTALL_ROOT=$HOME/apps/daint/clang
HWLOC_VER=1.11.7
JEMALLOC_VER=5.0.1
OTF2_VER=2.0
BOOST_VER=1.65.0
BOOST_SUFFIX=1_65_0
BOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER
PAPI_VER=5.5.1
# Skip this step if clang is already built
# Note that you will need module load PrgEnv-gnu when building clang
cdb
git clone --depth 1 https://github.com/llvm-project/llvm-project-20170507 llvm-project
cd llvm-project
git config branch.master.rebase true
mkdir llvm-build && cd llvm-build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$CLANG_ROOT -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" -DLLVM_TARGETS_TO_BUILD="X86;NVPTX" ../llvm
make -j install
cdb
wget http://vorboss.dl.sourceforge.net/project/boost/boost/$BOOST_VER/boost_$BOOST_SUFFIX.tar.gz
tar -xzf boost_$BOOST_SUFFIX.tar.gz
cd boost_$BOOST_SUFFIX
./bootstrap.sh
./b2 toolset=clang cxxflags="$CXXFLAGS -D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR" linkflags="$LDCXXFLAGS" --prefix=$BOOST_ROOT --layout=versioned threading=multi link=shared variant=release address-model=64 --without-mpi --without-python --without-graph --without-graph_parallel -j8 install
# if this produces working binaries, then 99% of problems are solved
cdb
git clone https://github.com/biddisco/cpptest.git
cd cpptest
mkdir build && cd build
cmake \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS" \
-DBOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER \
-DMPI_C_LIBRARIES=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/lib/libmpich.so \
-DMPI_INCLUDE_PATH=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/include \
-DBoost_COMPILER=-clang60 \
..
make -j
cdb
wget --no-check-certificate https://www.open-mpi.org/software/hwloc/v1.11/downloads/hwloc-$HWLOC_VER.tar.gz
tar -xzf hwloc-$HWLOC_VER.tar.gz
cd hwloc-$HWLOC_VER
./configure --prefix=$INSTALL_ROOT/hwloc/$HWLOC_VER
make -j8 install
cdb
wget https://github.com/jemalloc/jemalloc/releases/download/$JEMALLOC_VER/jemalloc-$JEMALLOC_VER.tar.bz2
tar -xjf jemalloc-$JEMALLOC_VER.tar.bz2
cd jemalloc-$JEMALLOC_VER
./autogen.sh
./configure --prefix=$INSTALL_ROOT/jemalloc/$JEMALLOC_VER
make -j8 -k install
cdb
wget http://www.vi-hps.org/upload/packages/otf2/otf2-2.0.tar.gz
tar -xzf otf2-2.0.tar.gz
cd otf2-2.0/
./configure --prefix=$INSTALL_ROOT/otf2/$OTF2_VER CC=$CC CXX=$CXX --enable-shared
make -j8 -k install
cdb
wget http://icl.utk.edu/projects/papi/downloads/papi-${PAPI_VER}.tar.gz
tar -xzf papi-${PAPI_VER}.tar.gz
cd papi-${PAPI_VER}
./configure --prefix=$INSTALL_ROOT/papi/$PAPI_VER --enable-shared
cdb
mkdir vc
cd vc
cmake \
-DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT/vc-relwithdebinfo \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTING=OFF \
-DENABLE_MIC=OFF \
/project/csvis/biddisco/src/Vc
cdb
mkdir hpx-relwithdebinfo && cd hpx-relwithdebinfo
cmake \
-DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT/rdhpx \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="$LDCXXFLAGS" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDCXXFLAGS" \
-DHPX_WITH_CUDA=ON \
-DHPX_WITH_CUDA_CLANG=ON \
-DHPX_WITH_HWLOC:BOOL=ON \
-DHWLOC_ROOT=$INSTALL_ROOT/hwloc/$HWLOC_VER \
-DHPX_WITH_MALLOC=JEMALLOC \
-DJEMALLOC_ROOT=$INSTALL_ROOT/jemalloc/$JEMALLOC_VER \
-DBOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER \
-DBoost_COMPILER=-clang60 \
-DOTF2_ROOT=$INSTALL_ROOT/otf2/$OTF2_VER \
-DHPX_WITH_DATAPAR_VC=ON \
-DHPX_WITH_DATAPAR_VC_NO_LIBRARY=ON \
-DVc_DIR=$INSTALL_ROOT/vc-relwithdebinfo/lib/cmake/Vc \
-DHPX_WITH_TESTS:BOOL=ON \
-DHPX_WITH_TESTS_BENCHMARKS:BOOL=ON \
-DHPX_WITH_TESTS_EXTERNAL_BUILD:BOOL=OFF \
-DHPX_WITH_TESTS_HEADERS:BOOL=OFF \
-DHPX_WITH_TESTS_REGRESSIONS:BOOL=ON \
-DHPX_WITH_TESTS_UNIT:BOOL=ON \
-DHPX_WITH_EXAMPLES:BOOL=ON \
-DHPX_WITH_PARCELPORT_MPI:BOOL=ON \
-DHPX_WITH_PAPI:BOOL=ON \
-DHPX_WITH_APEX:BOOL=ON \
-DAPEX_WITH_OTF2:BOOL=ON \
-DHPX_WITH_THREAD_IDLE_RATES:BOOL=ON \
-DHPX_WITH_MAX_CPU_COUNT=256 \
-DHPX_WITH_MORE_THAN_64_THREADS=ON \
-DHPX_WITH_TIMER_POOL:BOOL=OFF \
-DMPI_C_LIBRARIES=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/lib/libmpich.so \
-DMPI_CXX_LIBRARIES=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/lib/libmpich.so \
-DMPI_INCLUDE_PATH=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/include \
-DMPI_CXX_INCLUDE_PATH=/opt/cray/pe/mpt/default/gni/mpich-cray/8.6/include \
/project/csvis/biddisco/src/hpx
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="$LDCXXFLAGS -L/opt/nvidia/cudatoolkit8.0/8.0.54_2.2.8_ga620558-2.1/lib64" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDCXXFLAGS" \
-DBoost_ADDITIONAL_VERSIONS=1.65 \
-DBOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER \
-DBoost_COMPILER=-clang60 \
-DHPX_DIR=$INSTALL_ROOT/hpx-relwithdebinfo/lib/cmake/HPX \
-DMPI_C_LIBRARIES=/opt/cray/pe/mpt/7.5.2/gni/mpich-cray/8.4/lib/libmpich.so \
-DMPI_INCLUDE_PATH=/opt/cray/pe/mpt/7.5.2/gni/mpich-cray/8.4/include \
-DOCTOTIGER_WITH_SILO=OFF \
/project/csvis/biddisco/src/octotiger
JB projects only
# note HPX_WITH_NETWORKING disabled here for JB projects
cdb
mkdir hpx && cd hpx
cmake \
-DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT/hpx \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="$LDCXXFLAGS" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDCXXFLAGS" \
-DHPX_WITH_CUDA=On \
-DHPX_WITH_CUDA_CLANG=On \
-DHPX_WITH_HWLOC:BOOL=ON \
-DHWLOC_ROOT=$INSTALL_ROOT/hwloc/$HWLOC_VER \
-DHPX_WITH_MALLOC=JEMALLOC \
-DJEMALLOC_ROOT=$INSTALL_ROOT/jemalloc/$JEMALLOC_VER \
-DBOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER \
-DBoost_COMPILER=-clang60 \
-DOTF2_ROOT=$INSTALL_ROOT/otf2/$OTF2_VER \
-DHPX_WITH_TESTS:BOOL=ON \
-DHPX_WITH_TESTS_BENCHMARKS:BOOL=ON \
-DHPX_WITH_TESTS_EXTERNAL_BUILD:BOOL=OFF \
-DHPX_WITH_TESTS_HEADERS:BOOL=OFF \
-DHPX_WITH_TESTS_REGRESSIONS:BOOL=ON \
-DHPX_WITH_TESTS_UNIT:BOOL=ON \
-DHPX_WITH_EXAMPLES:BOOL=ON \
-DHPX_WITH_NETWORKING:BOOL=OFF \
-DHPX_WITH_PARCELPORT_MPI:BOOL=OFF \
-DHPX_WITH_PAPI:BOOL=OFF \
-DHPX_WITH_APEX:BOOL=OFF \
-DAPEX_WITH_OTF2:BOOL=OFF \
-DHPX_WITH_THREAD_IDLE_RATES:BOOL=OFF \
-DHPX_WITH_MAX_CPU_COUNT=256 \
-DHPX_WITH_MORE_THAN_64_THREADS=ON \
-DHPX_WITH_TIMER_POOL:BOOL=OFF \
-DHPX_WITH_IO_POOL:BOOL=OFF \
/project/csvis/biddisco/src/hpx
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=$CXX \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="$LDCXXFLAGS -L/opt/nvidia/cudatoolkit8.0/8.0.54_2.2.8_ga620558-2.1/lib64" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDCXXFLAGS" \
-DBoost_ADDITIONAL_VERSIONS=1.65 \
-DBOOST_ROOT=$INSTALL_ROOT/boost/$BOOST_VER \
-DBoost_COMPILER=-clang60 \
-DHPX_DIR=$BUILD_ROOT/hpx/lib/cmake/HPX \
-DMPI_C_LIBRARIES=/opt/cray/pe/mpt/7.5.2/gni/mpich-cray/8.4/lib/libmpich.so \
-DMPI_INCLUDE_PATH=/opt/cray/pe/mpt/7.5.2/gni/mpich-cray/8.4/include \
/scratch/snx1600/biddisco/src/hvtkm/linear_algebra