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 | |
Ubuntu 18.04.5 LTS aarch64 | |
Windows | |
MacOS |
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++
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
- Cd to the source file directory of each benchmark.
#For Example
cd ./tests/benchmarks/2mm/src
- Source the corresponding execInfo. Each benchmark needs a "sourceable" file to determine the inputs for profiling and the actual run.
#For Example
source ../execInfo
- 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.
- Cd to the source file directory of each sample.
#For Example
cd ./tests/samples/1
- One step compilation
export PROFILEARGS1=`pwd`/input.txt
fcc code.cpp -p <output_file>
#For Example
fcc code.cpp -p test
- Run the binary
time NUM_WORKERS=<thread_number> <output_file> < <input_file>
#For Example
time NUM_WORKERS=4 ./test < input.txt
The user needs to specify the number of threads to run.
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.