Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
C++ C Python
Latest commit 40b1d39
Mar 28, 2011
|Failed to load latest commit information.|
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