Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

FCC

Welcome to the FCC project!

Fiuggi Compiler Collection (FCC) is a high-performance compiler based on LLVM.
Our first release, FCC v0.6.alpha1, provides profiling aided automatic parallelization with more optimization features comming soon.

This test suite contains the FCC binaries for x86 / arm and all other libraries required to compile a benchmark. The purpose of this test suite is mainly for people who are interested in the FCC compilation process to reproduce the results we have presented earlier. For people who would like to include FCC into their development toolchain, please kindly refer to the Cooperation section at the end of this readme file.


Systemv0.6.alpha1
Ubuntu 20.04.4 LTS x86Build Status
Ubuntu 18.04.5 LTS aarch64Build Status
WindowsBuild Status
MacOSBuild Status

Installation

Install Dependencies

gcc==8.4.0
g++==8.4.0
expect==latest
sudo apt-get install expect
sudo apt-get install gcc-8
sudo apt-get install g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100
sudo update-alternatives --config g++

Build

git clone -b x86 https://github.com/THeWakeSystems/fcc.git
# If you use arm machine# git clone -b arm https://github.com/THeWakeSystems/fcc.git
make
source shrc

Getting Started

Build Benchmarks

  1. Cd to the source file directory of each benchmark.
#For Examplecd ./tests/benchmarks/2mm/src
  1. Source the corresponding execInfo. Each benchmark needs a "sourceable" file to determine the inputs for profiling and the actual run.
#For Examplesource ../execInfo
  1. One step compilation
fcc <source_file> -p <output_file>#For Example
fcc 2mm.c -p 2mm
  1. Run the binary
time NUM_WORKERS=<thread_number><output_file>${TESTARG}#For Exampletime NUM_WORKERS=4 ./2mm ${TESTARG}

The user needs to specify the number of threads to run.

Build Samples

  1. Cd to the source file directory of each sample.
#For Examplecd ./tests/samples/1
  1. One step compilation
export PROFILEARGS1=`pwd`/input.txt
fcc code.cpp -p <output_file>#For Example
fcc code.cpp -p test
  1. Run the binary
time NUM_WORKERS=<thread_number><output_file><<input_file>#For Exampletime NUM_WORKERS=4 ./test < input.txt

The user needs to specify the number of threads to run.

Cooperation

Please be noted that our current FCC 0.6.alpha1 is still in the early stage. For anyone who is interested in FCC and would like to reproduce the results, please feel free to follow the instructions presented in the README file.

However, if your team would like to include FCC into your own development toolchain, may we courteously ask you to contact our product team at zuoquan.he@thewakesystems.com. We will get back to you with more detailed information as soon as we receive your requst. We are happy to work with your team to fulfil your requests and, in the meanwhile, make our future versions successful releases.

About

Fiuggi Compiler Collection (FCC) is a high-performance compiler based on LLVM.

Resources

Stars

136 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages