lanl/scout

Name: scout

Owner: Los Alamos National Laboratory

Description: Scout -- Domain Specific Language & Toolchain

Created: 2015-02-11 00:52:01.0

Updated: 2017-08-27 10:54:29.0

Pushed: 2016-02-18 23:05:26.0

Homepage: null

Size: 176102

Language: C++

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Scout: A Domain-Specific Language & Toolchain

Welcome to the Scout Project!

Description

Scout is a proof-of-concept domain-specific language for exploring the combination of mesh-based scientific computation and in situ data analysis and visualization. The toolchain is based on the LLVM compiler infrastructure, including the Clang front end, and the LLDB debugger. More specifically, the language extends the C programming language to introduce mesh constructs and various supporting constructs. n

The Scout Programming Language

The Scout toolchain is still very much a work-in-progress and the documentation and source are both under active development. We use 64-bit Mac OS X 10.9.X and Linux systems (primarily the LTS releases of Ubuntu / Linux Mint) as our primary development platforms.

Scout is open-source software (released under LA-CC-15-063). Los Alamos National Security, LLC (LANS) owns the copyright to Scout. The license is BSD-like with a “modifications must be indicated” clause. See the LICENSE file for the full details.

NOTE: Scout is still very much a work-in-progress and the documentation and source are both under active development. We use Linux-based systems and Mac OS X 10.9.X as our primary software development platforms with a range of supported GPU architectures. For CPU architectures we primarily support x86 systems but have recently added support for ARM-based platforms. More details on specific hardware support is included below.

Requirements

This section highlights the required software packages for a successful build and installation of Scout. At this point in time we only develop under Linux and Mac OS X and therefore can not provide support for building on Windows-based systems.

The capabilities of the Scout Language rely heavily on the LLVM compiler infrastructure; including Clang, LLDB and the compiler-rt low-level runtime. As we modify each of these components they are included within our release. Please make sure to read the individual license agreements for each of these packages.

Operating System Support

Linux Systems: As mentioned above, our primary development environments are Mac OS X 10.9.X and several varieties of Linux-based distributions. A list of Linux releases that we monitor as part of our continuous integration development process are listed below:

Each of these platforms requires the installation of additional software development packages and libraries. This can be achieved used either the various software package management systems on these platforms or by downloading and building them directly from source. Further details on each required (and optional) package are provided below.

Mac OS X Systems: For Mac OS X systems we primarily test using 10.9.X and 10.10.X and the latest version of Apple's Xcode (currently 6.1). While there are several package distribution management systems for Mac OS X (e.g. macports) we typically avoid them and instead favor building and installing from source. If you use of these systems you may experience differences and/or conflicts with the details that follow.

Required Software Packages

The following software packages are required to produce a minimal version of Scout that targets CPU (x86) architectures (both single and multi-core):

Optional Software Packages

These additional packages expand Scout's target architectures and can be used to generate code for a mixed set of platforms from a single source file. For details on the various architectures supported by Scout see the Hardware section below.

Our build configuration process will attempt to discover if you have any of these GPU development environments installed and will add support for them automatically. If you are using a non-standard install location for these packages you can set the following environment variables prior to invoking the build (more details below):

Building From Source

In the top-level directory of the source code there is a Makefile that will automate the process of creating an out-of-source build directory and running CMake. After the configuration step is completed, this approach will begin the compilation of the full distribution.

This process is as simple as invoking

$ make

from the root of the distribution.

To allow finer control of the build configuration the following environment variables may be set prior to invoking make.

Acknowledgements

The Scout language and its supporting research activties are funded by the United States Departement of Energy, Office of Science, Office of Advanced Scientific Computing Research and overseen by Dr. Lucy Nowell.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.