GithubHelp home page GithubHelp logo

adcastel / exo_codegen Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 23.8 MB

An automatic generator tool

License: Apache License 2.0

Makefile 2.13% C 72.16% Shell 0.70% C++ 19.41% Gnuplot 0.01% Python 0.15% Emacs Lisp 0.01% Fortran 4.28% Assembly 0.17% MATLAB 0.98%

exo_codegen's Introduction

# Welcome to the Exo Microkernel Generator Artifact

Please, read the REQUIREMENTS.txt file for the compilers that are used.
If you have a higher version, please change the makefiles for matching your compilers. Right now, the compilers used in the scripts are gcc-10 and python3.9.


# How to use this generator

# Executing step by step

1) Execute the build.sh file like:
   source build.sh  -> It is important to use source instead of ./ because it sets a environment variable
   This script checks the compilers and it they are installed it will build and install the Exo compiler and the BLIS library.
   The BLIS library will be installed inside the artifact folder and set automatically to the PATHS environment variables.

2) Run the microkernel_generator.sh script:
   ./microkernel_generator.sh
   This script will execute the generator presented in the paper and will generate the 8x12 microkernel as is described in the paper.
   For generating more microkernels, please modify the EXO_ukr_generator/generator.py file. There are some examples of different micro-kernel sizes.
   Once the microkernel is generated, it will execute a test of correctness.

3) (Optional) Execute the execute_ukernel_solo.sh script: 
   ./execute_ukernel_solo.sh
   This script performs the evaluation of the stand-alone microkernels (Figure 13).
   It will execute a driver with the different microkernel sizes.
   The code for the micro-kernels is already in the folder so there is not need to move files from one folder to another.

4) (Optional) Execute the execute_algorithm.sh file:
   ./execute_algorithm.sh
   This script will generate the results for figures 14, 15, and 17 of the paper.
   It will execute the combination of different gemms (squarish and rectangular).
   The code for the micro-kernels is already in the folder so there is not need to move files from one folder to another.

# Executing all in one

Just run the build_and_execute_all.sh
   ./build_and_execute_all.sh
   This file will go through the aforementioned steps :)

## Directory Structure

blis -> Directory containing the blis library.
build_and_execute_all.sh -> Script for building the software and execute the overall experimentation.
build.sh -> scrip that builds the software and sets the environment variables.
clean_all.sh -> script that cleans all the structure.
driver_microkernel -> Directory with the test for the microkernel solo experiment.
execute_algorithm.sh -> script for executing the combination of algorithm and microkernels.
execute_ukernel_solo.sh -> script for executing the microkernel experiment.
exo -> directory of exo software
EXO_ukr_generator -> Directory of the main part of the software, the microkernel generator
gemm_blis_family -> Directory of the GEMM algorithm
microkernel_generator.sh -> Script that generates the microkernel as it is explained in the paper
opt -> directory for the software installation
README.txt -> This file
REQUIREMENTS.txt -> Hardware and software requirements for the experimentation. 

exo_codegen's People

Contributors

adcastel avatar

Watchers

 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.