Skip to content

Commit

Permalink
Merge pull request #177 from PRUNERS/release-v2.0-beta.1
Browse files Browse the repository at this point in the history
Release v2.0 beta.1
  • Loading branch information
mikebentley15 authored Jul 18, 2018
2 parents 85479d4 + 615d2eb commit 1ef87f7
Show file tree
Hide file tree
Showing 164 changed files with 9,869 additions and 9,136 deletions.
22 changes: 19 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -94,23 +94,25 @@ distclean: clean
install: $(TARGET)
mkdir -m 0755 -p $(PREFIX)/bin
mkdir -m 0755 -p $(PREFIX)/lib
mkdir -m 0755 -p $(PREFIX)/include
mkdir -m 0755 -p $(PREFIX)/include/flit
mkdir -m 0755 -p $(PREFIX)/share/flit/scripts
mkdir -m 0755 -p $(PREFIX)/share/flit/doc
mkdir -m 0755 -p $(PREFIX)/share/flit/data/tests
mkdir -m 0755 -p $(PREFIX)/share/flit/data/db
mkdir -m 0755 -p $(PREFIX)/share/flit/config
mkdir -m 0755 -p $(PREFIX)/share/flit/litmus-tests
mkdir -m 0755 -p $(PREFIX)/share/flit/benchmarks
mkdir -m 0755 -p $(PREFIX)/share/licenses/flit
ln -sf ../share/flit/scripts/flit.py $(PREFIX)/bin/flit
install -m 0755 $(TARGET) $(PREFIX)/lib/$(notdir $(TARGET))
install -m 0644 $(HEADERS) $(PREFIX)/include/
install -m 0644 $(HEADERS) $(PREFIX)/include/flit/
install -m 0755 $(SCRIPT_DIR)/flit.py $(PREFIX)/share/flit/scripts/
install -m 0755 $(SCRIPT_DIR)/flit_*.py $(PREFIX)/share/flit/scripts/
install -m 0644 $(SCRIPT_DIR)/flitutil.py $(PREFIX)/share/flit/scripts/
install -m 0644 $(SCRIPT_DIR)/README.md $(PREFIX)/share/flit/scripts/
install -m 0644 $(DOC_DIR)/*.md $(PREFIX)/share/flit/doc/
install -m 0644 $(DATA_DIR)/Makefile.in $(PREFIX)/share/flit/data/
install -m 0644 $(DATA_DIR)/Makefile_bisect_binary.in $(PREFIX)/share/flit/data/
install -m 0644 $(DATA_DIR)/custom.mk $(PREFIX)/share/flit/data/
install -m 0644 $(DATA_DIR)/main.cpp $(PREFIX)/share/flit/data/
install -m 0644 $(DATA_DIR)/tests/Empty.cpp $(PREFIX)/share/flit/data/tests/
Expand All @@ -119,6 +121,7 @@ install: $(TARGET)
install -m 0644 $(CONFIG_DIR)/flit-default.toml.in $(PREFIX)/share/flit/config/
install -m 0644 $(LITMUS_TESTS) $(PREFIX)/share/flit/litmus-tests/
install -m 0644 LICENSE $(PREFIX)/share/licenses/flit/
cp -r benchmarks/* $(PREFIX)/share/flit/benchmarks/
@echo "Generating $(INSTALL_FLIT_CONFIG)"
@# Make the flitconfig.py script specifying this installation information
@echo "'''" > $(INSTALL_FLIT_CONFIG)
Expand Down Expand Up @@ -150,7 +153,7 @@ install: $(TARGET)
@echo "lib_dir = '$(abspath $(PREFIX))/lib'" >> $(INSTALL_FLIT_CONFIG)
@echo >> $(INSTALL_FLIT_CONFIG)
@echo "# flit C++ include files, primarily flit.h" >> $(INSTALL_FLIT_CONFIG)
@echo "include_dir = '$(abspath $(PREFIX))/include'" >> $(INSTALL_FLIT_CONFIG)
@echo "include_dir = '$(abspath $(PREFIX))/include/flit'" >> $(INSTALL_FLIT_CONFIG)
@echo >> $(INSTALL_FLIT_CONFIG)
@echo "# default configuration for flit init" >> $(INSTALL_FLIT_CONFIG)
@echo "config_dir = '$(abspath $(PREFIX))/share/flit/config'" >> $(INSTALL_FLIT_CONFIG)
Expand All @@ -165,3 +168,16 @@ install: $(TARGET)
@echo "# directory containing litmus tests" >> $(INSTALL_FLIT_CONFIG)
@echo "litmus_test_dir = '$(abspath $(PREFIX))/share/flit/litmus-tests'" >> $(INSTALL_FLIT_CONFIG)

.PHONY: uninstall
uninstall:
rm -rf $(PREFIX)/include/flit
rm -rf $(PREFIX)/share/flit
rm -rf $(PREFIX)/share/licenses/flit
rm -f $(PREFIX)/bin/flit
rm -f $(PREFIX)/lib/$(notdir $(TARGET))
-rmdir --ignore-fail-on-non-empty $(PREFIX)/include
-rmdir --ignore-fail-on-non-empty $(PREFIX)/share/licenses
-rmdir --ignore-fail-on-non-empty $(PREFIX)/share
-rmdir --ignore-fail-on-non-empty $(PREFIX)/bin
-rmdir --ignore-fail-on-non-empty $(PREFIX)/lib
-rmdir --ignore-fail-on-non-empty $(PREFIX)
170 changes: 0 additions & 170 deletions R/analyzeOpcodes.R

This file was deleted.

37 changes: 24 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ Floating-point Litmus Tests (FLiT) is a C++ test infrastructure for detecting
variability in floating-point code caused by variations in compiler code
generation, hardware and execution environments.

Originally, FLiT stood for "Floating-point Litmus Tests", but has grown into a
tool with much more flexability than to study simple litmus tests. However, it
has always been the focus of FLiT to study the variability caused by compilers.
That brings us to the other reason for the name, "flit" is defined by the
Merriam Webster dictionary as "to pass quickly or abruptly from one place or
condition to another". This fits in well with testing for various sources of
variability.

Compilers are primarily focused on optimizing the speed of your code. However,
when it comes to floating-point, compilers go a little further than some might
want, to the point that you may not get the same result from your
Expand All @@ -29,32 +37,35 @@ More than simply comparing against a "ground truth" test result, the FLiT
framework also measures runtime of your tests. Using this information, you can
not only determine which compilations of your code are safe for your specific
application, but you can also determine the fastest safe compilation. This
ability really helps the developer navigate the tradeoff between
reproducibility and performance.
ability helps the developer navigate the tradeoff between reproducibility and
performance.

It consists of the following components:

* a c++ reproducibility test infrastructure
* a C++ reproducibility test infrastructure
* a dynamic make system to generate diverse compilations
* _(currently broken)_ an execution disbursement system
* an SQL database for collecting results
* _(currently broken)_ a collection of queries to help the user understand
results
* _(currently broken)_ some data analysis tools, providing visualization of
results
* an SQLite database containing results
* tools to help analyze test results
* a bisection tool that can isolate the file(s) and function(s) where
variability was introduced by the compiler.

Contents:

* [Installation](documentation/installation.md)
* [Litmus Tests](documentation/litmus-tests.md)
* [FLiT Command-Line](documentation/flit-command-line.md)
* [FLiT Configuration File](documentation/flit-configuration-file.md)
* [Available Compiler Flags](documentation/available-compiler-flags.md)
* [Available Compiler Flags](documentation/available-compiler-flags.md)
* [Writing Test Cases](documentation/writing-test-cases.md)
* [MPI Support](documentation/mpi-support.md)
* [CUDA Support](documentation/cuda-support.md)
* [Run Wrapper and HPC Support](run-wrapper-and-hpc-support.md)
* [Compiling Your Tests](documentation/compiling-your-tests.md)
* [Test Executable](documentation/test-executable.md)
* [Benchmarks](documentation/benchmarks.md)
* [Database Structure](documentation/database-structure.md)
* [Analyze Results](documentation/analyze-results.md)
* **Extra Tools**
* [Autogenerated Tests](documentation/autogenerated-tests.md)
* [Test Input Generator](documentation/test-input-generator.md)
* Extra Tools
* [Autogenerated Tests](documentation/autogenerated-tests.md)
* [Test Input Generator](documentation/test-input-generator.md)

14 changes: 14 additions & 0 deletions benchmarks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Benchmarks

[Top-Level Documentation](../README.md)

These benchmarks give insights into the usefulness of FLiT. Each benchmark has
its own goals, either to demonstrate how FLiT can be useful, or to give
insights into specific tools and functionalities.

These benchmarks are also part of the installation, and can be copied from
there to exercise FLiT's capabilities. They are installed in

`$(PREFIX)/share/flit/benchmarks`

[Top-Level Documentation](../README.md)
27 changes: 27 additions & 0 deletions benchmarks/polybench/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
This is a test suite that was translated from the Polybench benchmark suite.
The original can be found [here](http://web.cse.ohio-state.edu/~pouchet.2/software/polybench/).

Each source file has a main class extending the FLiT test class while also
parameterizing the size of input arrays for the given polyhedral kernel.
The number of parameters varies from benchmark to benchmark.

For convenience these classes can be specialized and entered into the FLiT tests
by using the REGISTER_*N* macros where *N* is the number of parameterized arguments
not including the float type used by FLiT. This macro takes the name of the base
class as the first argument and numbers for all other arguments.

To run the suite as is, with flit in your path:
```
flit update
flit make
```

Manifest:
-custom.mk: A FLiT generated makefile used to add additional flags to
the compilations.
-flit-config.toml: A FLiT generated configuration for integration into
FLiT with a default setup for ibriggs on the machine
fractus.
-README.md: This file.
-tests/*.cpp: Kernels from the Polybench suite.
-tests/polybench_utils.hpp: Convenience functions and macros.
39 changes: 39 additions & 0 deletions benchmarks/polybench/custom.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# This file is included at the end of the copied Makefile. If you have some
# things you want to change about the Makefile, it is best to do it here.

# additional source files to compile other than what is in '.' and 'tests/'
# since those directories are added by a wildcard.
SOURCE +=

# for when cuda is compiled, you can specify different source files
CUSOURCE +=

# required compiler flags
# for example, include directories
# CC_REQUIRED += -I<path>
# or defines
# CC_REQUIRED += -DDEBUG_ENABLED=1
CC_REQUIRED +=

# required linker flags
# for example, link libraries
# LD_REQUIRED += -L<library-path> -l<library-name>
# or rpath
# LD_REQUIRED += -Wl,-rpath=<abs-path-to-library-dir>
LD_REQUIRED +=

# compiler and linker flags respectively - specifically for a dev build
# - DEV_CFLAGS: non-recorded compiler flags (such as includes)
# - DEV_LDFLAGS: linker flags (also not under test)
DEV_CFLAGS +=
DEV_LDFLAGS +=

# required compiler flags for CUDA
NVCC_CFLAGS +=

# required link flags for CUDA
NVCC_LINK +=

# compiler and linker flags respectively - specifically for a dev cuda build
DEV_NVCC_CC +=
DEV_NVCC_LD +=
Loading

0 comments on commit 1ef87f7

Please sign in to comment.