Home > shine

shine

Shine is a project mainly written in C++ and C, it's free.

Shine - A symbolic regression machine

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
Previous:vitals