An open API service indexing awesome lists of open source software.

https://github.com/perone/shine

Shine - A symbolic regression machine
https://github.com/perone/shine

Last synced: 9 months ago
JSON representation

Shine - A symbolic regression machine

Awesome Lists containing this project

README

          

Shine - Symbolic Regression Machine
-----------------------------------

This is a library under development, the first Release Candidate is about to be
released soon.

1) What is Shine ?

Shine is a library that automatically makes the code generation of the LLVM IR
(Intermediate Representation) from Genetic Programming trees. It also provides
an easy API for optimizing and JITing Genetic Programming ASTs into native code.
Shine follow this flow:

a. Load LLVM bitcode
This LLVM bitcode can be from any language supported by the LLVM compiler
infrastructure.
b. Load Genetic Programming trees
In this phase, each node representing a non-terminal (a function) is resolved
and matched again the previous loaded LLVM bitcode file.
c. Codegen the AST
Shine converts this AST into LLVM IR.
d. Optimization
Shine run LLVM optimization passes in the merged LLVM IR module representing
each tree.
e. JIT
Shine uses LLVM to convert this LLVM IR into native code and then returns
a function pointer to that native function.

2) What license uses Shine ?

Shine is licensed under LPGL.

3) Language bindings ?

Python language bindings are under development, actually, Shine is a component of
a bigger project to use state-of-art compiler technology such as optimizations and
JIT compiling for a Genetic Programming system. In future, Pyevolve will use
Shine to JIT its Genetic Programming trees into native code.

4) How to install or compile ?

Requirements:
LLVM 2.9 rc1+
glib-2.0 for tests
g++ and cmake (for compiling)

Get the trunk in a directory, let's call it "shine_lib".

a. Creating a developer build with tests:

# cd shine_lib
# mkdir build
# cd build
# cmake -DCMAKE_BUILD_TYPE=Developer -DBUILD_TESTING=true ..

-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- You have selected the building of the tests.
-- checking for module 'glib-2.0'
-- found glib-2.0, version 2.26.1
-- Found Doxygen: /usr/bin/doxygen
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tarantula/shine_lib/dev

# make

(wait for the compilation)

# sudo make install

b. Creating the docs

Inside the created "build" directory.

# make doxygen

A new directory called "doc" will be created with the API documentation.

5) Creating a distribution package

Inside the created "build" directory.

# cpack -G DEB

- Christian S. Perone