GithubHelp home page GithubHelp logo

bblwg2020 / fcc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thewakesystems/fcc

0.0 0.0 0.0 306.12 MB

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

Shell 7.75% C++ 77.00% C 13.78% Makefile 0.50% CMake 0.97%

fcc's Introduction

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 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 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
  1. 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.

Build Samples

  1. Cd to the source file directory of each sample.
#For Example
cd ./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 Example
time 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 [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.

fcc's People

Contributors

thewake-fcc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.