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.


System v0.6.alpha1
Ubuntu 20.04.4 LTS x86 Build Status
Ubuntu 18.04.5 LTS aarch64 Build Status
Windows Build Status
MacOS Build 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 arm https://github.com/THeWakeSystems/fcc.git
# If you use x86 machine
# git clone -b x86 https://github.com/THeWakeSystems/fcc.git
make
source shrc

Getting Started

Compilation process

  1. Cd to the source file directory of each benchmark.

#For Example
cd ./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 Example
source ../execInfo
  1. One step compilation

fcc <source_file> -p <output_file>
#For Example
fcc 2mm.c -p 2mm

Run the binary

time NUM_WORKERS=<thread_number> <output_file> ${TESTARG}
#For Example
time NUM_WORKERS=4 ./2mm ${TESTARG}

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 [email protected]. 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.

GitHub

View Github