Git Product home page Git Product logo

exawind-builder's Introduction

ExaWind Code Builder

Documentation

ExaWind Builder is a collection of bash scripts to configure and compile the codes used within the ExaWind project on various high-performance computing (HPC) systems. The builder provides the following

  • Platform configuration: Provides the minimal set of modules that must be loaded when compiling with different compilers and MPI libraries on different HPC systems.

  • Software configuration: Provides baseline CMake configuration that can be used to configure the various options when building a project, e.g., enable/disable optional modules, automate specification of paths to various libraries, configure release vs. debug builds.

  • Build script generation: Generates an executable end-user script for a combination of system, compiler, and project.

  • Exawind environment generation: Generates a source-able, platform-specific script that allows the user to recreate the exact environment used to build the codes during runtime.

The build scripts are intended for developers who might want to compile the codes with different configuration options, build different branches during their development cycle, or link to a different development version of a library that is currently not available in the standard installation on the system. Please see the documentation for details on how to use this to build ExaWind software.

Installation and usage

Using exawind-builder with pre-installed ExaWind environment

ExaWind Builder is already installed and setup on OLCF Summit, NREL Eagle/Rhodes, and NERSC Cori systems. On these systems, you can proceed directly to using build scripts from the central installation. Please consult user manual to learn how to use the scripts.

Bootstrapping exawind-builder with pre-configured system definitions

ExaWind builder has pre-built configurations for several systems. On these systems you can use the bootstrap script to quickly get up and running. Please consult installation manual. The relevant steps are shown below.

# Download bootstrap script
curl -fsSL -o bootstrap.sh https://raw.githubusercontent.com/exawind/exawind-builder/master/bootstrap.sh

# Make it executable
chmod a+x bootstrap.sh

# Execute bootstrap and provide system/compiler combination
./bootstrap.sh -s [SYSTEM] -c [COMPILER]

# Examples
./bootstrap.sh -s spack -c clang       # On MacOS with homebrew
./bootstrap.sh -s ornl-summit -c gcc   $ Oakridge Summit system
./bootstrap.sh -s eagle -c gcc         # NREL Eagle
./bootstrap.sh -s cori -c intel        # NERSC Cori
./bootstrap.sh -s snl-ascicgpu -c gcc  # SNL GPU development machine

Creating new system configuration

You can add new system definitions to exawind-builder for use on new systems that are not used by ExaWind team. Please see manual installation and adding a new system sections in the user manual.

Links

exawind-builder's People

Contributors

alanw0 avatar aprokop avatar cmkaul avatar jrood-nrel avatar jvo1012 avatar paulmullowney avatar psakievich avatar sayerhs avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

exawind-builder's Issues

Does nalu-wind need to load modules?

Right now, nalu-wind tries to load non-standard modules like trilinos, yaml-cpp, etc. This breaks on cori. I expect that because paths are passed through cmake arguments, that is unnecessary. In addition, loading of hypre, tioga, should really depend on whether Hypre or Tioga are enabled in cmake arguments, which is tricky.

Package name of netcdf has changed in spack

Package netcdf is now netcdf-c in spack. At minimum, this affects the following:

  • spack install netcdf command in bootstrap.sh
  • netcdf descriptions in platform specific packages.yaml files

Clang build issues on Eagle

On eagle, using /projects/hfm/shreyas/exawind/scripts/nalu-wind-clang.sh:

==> Loading options from /projects/hfm/shreyas/exawind-2020-08/exawind-config-eagle.sh
==> Setting TMPDIR=/scratch/mhenryde/.tmp
==> Loading options from /home/mhenryde/exawind/source/nalu-wind/build/exawind-config.sh
==> Using modules: /nopt/nrel/ecom/hpacf/software/2020-07/spack/share/spack/modules/linux-centos7-skylake_avx512/clang-7.0.1
==> gcc/8.4.0 = /nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/gcc-8.4.0-2a3vha6hlw4xc5ja3jyhr7huzaxuw2kt
==> llvm = /nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/llvm-10.0.0-rdkkzyvtbotoq4xjatwsb5eqyindy4sr
Lmod has detected the following error:  The following module(s) are unknown: "mpt/2.22"

Please check the spelling or version number. Also try "module spider ..."
It is also possible your cache file is out-of-date; it may help to try:
  $ module --ignore-cache load "mpt/2.22"

Also make sure that all modulefiles written in TCL start with the string #%Module



==> mpt/2.22: Cannot find standard module; attempting to detect local install
==> mpt/2.22: Set MPT_ROOT_DIR to provide the exact location
==> WARNING! Cannot load dependency: mpt/2.22
==> mpt/2.22 =
==> cmake = /nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/cmake-3.17.3-fonvmr2wiznawln3zn3m5at5pvdgkyxv
==> git = /nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/git-2.27.0-od5tlx3xitqxg37l2rdgd56x6cwgsnnf
==> binutils = /nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/binutils-2.34-2drppsfmkeudqr3ll7zz7pqxlsszuh4b
Lmod has detected the following error:  The following module(s) are unknown: "netlib-lapack/3.8.0"

Please check the spelling or version number. Also try "module spider ..."
It is also possible your cache file is out-of-date; it may help to try:
  $ module --ignore-cache load "netlib-lapack/3.8.0"

Also make sure that all modulefiles written in TCL start with the string #%Module



==> netlib-lapack: Cannot find standard module; attempting to detect local install
==> netlib-lapack: Set NETLIB_LAPACK_ROOT_DIR to provide the exact location
==> WARNING! Cannot load dependency: netlib-lapack
==> netlib-lapack/3.8.0 =
which: no mpifort in (/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/binutils-2.34-2drppsfmkeudqr3ll7zz7pqxlsszuh4b/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/git-2.27.0-od5tlx3xitqxg37l2rdgd56x6cwgsnnf/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/cmake-3.17.3-fonvmr2wiznawln3zn3m5at5pvdgkyxv/bin:/nopt/nrel/ecom/hpac
f/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/llvm-10.0.0-rdkkzyvtbotoq4xjatwsb5eqyindy4sr/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/gcc-8.4.0-2a3vha6hlw4xc5ja3jyhr7huzaxuw2kt/bin:/projects/hfm/shreyas/exawind-2020-08/source/ninja:/home/mhenryde/.zplug/bin:/opt/clmgr/sbin:/opt/clmgr/bin:/opt/sgi/sbin:/opt/sgi/bin:/nopt/nrel/utils/bin:/nopt/slurm/current/bin:/home/mhenryde/builds/fasd:/ho
me/mhenryde/Nek5000/bin:/home/mhenryde/ccls/Release:/home/mhenryde/bin:/home/mhenryde/mypython:/home/mhenryde/.local/bin:/nopt/xalt/xalt/bin:/home/mhenryde/miniconda3/condabin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/c3/bin:/opt/ibutils/bin:/sbin:/bin:/home/mhenryde/.fzf/bin)
which: no mpifort in (/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/binutils-2.34-2drppsfmkeudqr3ll7zz7pqxlsszuh4b/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/git-2.27.0-od5tlx3xitqxg37l2rdgd56x6cwgsnnf/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/cmake-3.17.3-fonvmr2wiznawln3zn3m5at5pvdgkyxv/bin:/nopt/nrel/ecom/hpac
f/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/llvm-10.0.0-rdkkzyvtbotoq4xjatwsb5eqyindy4sr/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/gcc-8.4.0-2a3vha6hlw4xc5ja3jyhr7huzaxuw2kt/bin:/projects/hfm/shreyas/exawind-2020-08/source/ninja:/home/mhenryde/.zplug/bin:/opt/clmgr/sbin:/opt/clmgr/bin:/opt/sgi/sbin:/opt/sgi/bin:/nopt/nrel/utils/bin:/nopt/slurm/current/bin:/home/mhenryde/builds/fasd:/ho
me/mhenryde/Nek5000/bin:/home/mhenryde/ccls/Release:/home/mhenryde/bin:/home/mhenryde/mypython:/home/mhenryde/.local/bin:/nopt/xalt/xalt/bin:/home/mhenryde/miniconda3/condabin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/c3/bin:/opt/ibutils/bin:/sbin:/bin:/home/mhenryde/.fzf/bin)
which: no mpicc in (/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/binutils-2.34-2drppsfmkeudqr3ll7zz7pqxlsszuh4b/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/git-2.27.0-od5tlx3xitqxg37l2rdgd56x6cwgsnnf/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/cmake-3.17.3-fonvmr2wiznawln3zn3m5at5pvdgkyxv/bin:/nopt/nrel/ecom/hpacf/
compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/llvm-10.0.0-rdkkzyvtbotoq4xjatwsb5eqyindy4sr/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/gcc-8.4.0-2a3vha6hlw4xc5ja3jyhr7huzaxuw2kt/bin:/projects/hfm/shreyas/exawind-2020-08/source/ninja:/home/mhenryde/.zplug/bin:/opt/clmgr/sbin:/opt/clmgr/bin:/opt/sgi/sbin:/opt/sgi/bin:/nopt/nrel/utils/bin:/nopt/slurm/current/bin:/home/mhenryde/builds/fasd:/home
/mhenryde/Nek5000/bin:/home/mhenryde/ccls/Release:/home/mhenryde/bin:/home/mhenryde/mypython:/home/mhenryde/.local/bin:/nopt/xalt/xalt/bin:/home/mhenryde/miniconda3/condabin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/c3/bin:/opt/ibutils/bin:/sbin:/bin:/home/mhenryde/.fzf/bin)
which: no mpic++ in (/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/binutils-2.34-2drppsfmkeudqr3ll7zz7pqxlsszuh4b/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/git-2.27.0-od5tlx3xitqxg37l2rdgd56x6cwgsnnf/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/cmake-3.17.3-fonvmr2wiznawln3zn3m5at5pvdgkyxv/bin:/nopt/nrel/ecom/hpacf
/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/llvm-10.0.0-rdkkzyvtbotoq4xjatwsb5eqyindy4sr/bin:/nopt/nrel/ecom/hpacf/compilers/2020-07/spack/opt/spack/linux-centos7-skylake_avx512/gcc-8.4.0/gcc-8.4.0-2a3vha6hlw4xc5ja3jyhr7huzaxuw2kt/bin:/projects/hfm/shreyas/exawind-2020-08/source/ninja:/home/mhenryde/.zplug/bin:/opt/clmgr/sbin:/opt/clmgr/bin:/opt/sgi/sbin:/opt/sgi/bin:/nopt/nrel/utils/bin:/nopt/slurm/current/bin:/home/mhenryde/builds/fasd:/hom
e/mhenryde/Nek5000/bin:/home/mhenryde/ccls/Release:/home/mhenryde/bin:/home/mhenryde/mypython:/home/mhenryde/.local/bin:/nopt/xalt/xalt/bin:/home/mhenryde/miniconda3/condabin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/c3/bin:/opt/ibutils/bin:/sbin:/bin:/home/mhenryde/.fzf/bin)
==> No user environment actions defined
==> Loading dependencies for nalu-wind...
Lmod has detected the following error:  The following module(s) are unknown: "trilinos/develop"

Please check the spelling or version number. Also try "module spider ..."
It is also possible your cache file is out-of-date; it may help to try:
  $ module --ignore-cache load "trilinos/develop"

Also make sure that all modulefiles written in TCL start with the string #%Module

etc...

The text regarding symlinks in advanced dos seems off

ln -s packages.yaml ${HOME}/.spack/$(spack arch -p)/

does not work, as it will just create a symlink there that points to itself. Need to resolve the full path to the directory inside exawind-builder that has the file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.