All Projects → OpsGroup → open-ops

OpsGroup / open-ops

Licence: BSD-3-Clause license
Open Optimizing Parallelizing System

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to open-ops

Gllvm
Whole Program LLVM: wllvm ported to go
Stars: ✭ 126 (+500%)
Mutual labels:  llvm, clang, compilers
Meta Clang
Clang C/C++ cross compiler and runtime for OpenEmbedded/Yocto Project
Stars: ✭ 76 (+261.9%)
Mutual labels:  llvm, clang, compilers
Optviewer Demo
Demonstration of LLVM's opt-viewer tool
Stars: ✭ 63 (+200%)
Mutual labels:  llvm, clang, compilers
parallelizer
Simplifies the parallelization of function calls.
Stars: ✭ 62 (+195.24%)
Mutual labels:  parallel, parallelization, parallelism
YACLib
Yet Another Concurrency Library
Stars: ✭ 193 (+819.05%)
Mutual labels:  parallel, parallelism
systemc-compiler
This tool translates synthesizable SystemC code to synthesizable SystemVerilog.
Stars: ✭ 128 (+509.52%)
Mutual labels:  llvm, clang
OS-CFI
Origin-sensitive Control Flow Integrity (OS-CFI) - USENIX Security 2019
Stars: ✭ 27 (+28.57%)
Mutual labels:  llvm, clang
CMLFS
Clang-Built Musl Linux From Scratch
Stars: ✭ 51 (+142.86%)
Mutual labels:  llvm, clang
linux
Linux kernel source tree
Stars: ✭ 234 (+1014.29%)
Mutual labels:  llvm, clang
dumb-obfuscator
Tutorial on how to write the dumbest obfuscator I could think of.
Stars: ✭ 147 (+600%)
Mutual labels:  llvm, clang
java-multithread
Códigos feitos para o curso de Multithreading com Java, no canal RinaldoDev do YouTube.
Stars: ✭ 24 (+14.29%)
Mutual labels:  parallel, parallelism
EmbedSanitizer
EmbedSantizer is a runtime race detection tool which extends ThreadSanitizer to detect data races in 32-bit ARM applications.
Stars: ✭ 16 (-23.81%)
Mutual labels:  llvm, clang
vuo
A realtime visual programming language for interactive media.
Stars: ✭ 103 (+390.48%)
Mutual labels:  llvm, clang
MetaCG
MetaCG offers an annotated whole program call-graph tool for Clang/LLVM.
Stars: ✭ 21 (+0%)
Mutual labels:  llvm, clang
clangbuilder
Building Clang ♡ Utility and Environment
Stars: ✭ 101 (+380.95%)
Mutual labels:  llvm, clang
flextool
C++ compile-time programming (serialization, reflection, code modification, enum to string, better enum, enum to json, extend or parse language, etc.)
Stars: ✭ 32 (+52.38%)
Mutual labels:  llvm, clang
adorad
Fast, Expressive, & High-Performance Programming Language for those who dare
Stars: ✭ 54 (+157.14%)
Mutual labels:  llvm, clang
FPChecker
A dynamic analysis tool to detect floating-point errors in HPC applications.
Stars: ✭ 26 (+23.81%)
Mutual labels:  llvm, clang
los
Los是一个c/c++语言编译型的虚拟机。它使用llvm/clang作为其前端,losld做后端对源代码进行编译,生成los指令文件。Los is a c/c++-compiled virtual machine. It uses llvm/clang as its front end, losld does the backend to compile the source code, and generates the los directive file.
Stars: ✭ 46 (+119.05%)
Mutual labels:  llvm, clang
suicide
LLVM pass that detects one undefined behavior, and emits code to delete your hard drive
Stars: ✭ 33 (+57.14%)
Mutual labels:  llvm, compilers

Open optimizing parallelizing system (OpenOPS)

Introduction

Open optimizing parallelizing system (OpenOPS) is based on optimizing parallelizing system OPS (www.ops.rsu.ru). Step-by-step OpenOPS system is creating by opening of OPS code with all modification varieties.

Optimizing parallelizing system (OPS) can be helpful for optimizing parallelizing compilers creation for new parallelizing computing architectures. For example, experimental web-auto-parallelizer for computing cluster and graphics card http://ops.opsgroup.ru/ was developed on OPS base. Currently, work is being carried out for displaying the C programming language into PLD accelerator.

The difference between OPS and GCC or LLVM compilers family lies in higher level of internal representation (IR). On the one hand, this aspect reduces the class of internal languages, but, on the other hand, it extends class of target architectures. Moreover, high-level IR is more convenient to creating interactive mode of program optimization into the compiler. At the moment OPS input is C99 language with the Clang parser and Fortran. In the first version OpenOPS is just C with Clang parser.

Beside the fact that in IR OPS programs maps by Clang parser, there is an opposite mapping – converter from IR OPS into Clang. This allows using OPS in Clang compiler infrastructure.

The first OpenOPS version will contains only IR OPS and some functions allows to except in IR OPS the C programming language by parser Clang. That’s enough for code generator development from IR OPS to any computing architecture.

In later OpenOPS versions it supposed to be opened the Dependencies Graph code of information connection which is essential to information dependencies analysis capable to prevents the parallelizing.

It is further proposed to open the program transformations code into IR OPS. Those transformations will be able to transform programme cycles, which don’t allow direct parallelizing (vectorization, pipelining) to process that allows optimization.

How to build OpenOPS for Linux

You may need

This steps will be necessary before the beginning of building (there are in brackets are names of packets for Ubuntu/Debian):

1.Install standard programs for building apps: g ++, make etc. If you work in Ubuntu/Debian there is enough to set build-essential.

2.Install 7z archiver (packets for Ubuntu/Debian: p7zip-full).

3.Install Qt library not less than 5.0.0. version. For Ubuntu>= 13.04 packets qt5-default, libqt5svg5-dev are enough. For other systems Qt may be used official installer: http://qt-project.org/downloads

4.Install wget utility.

Independences Building

OPS project depends on several outside libraries. Beforehand they must be collected from the original texts. Then there are instructions for building and setting of projects. In example, we consider that original texts are located in directory ~/Src and setting of finished libraries is made on directory ~/Lib/. However, there can be used any other directories. They can be deleted after every library setting.

LLVM и Clang 3.3 building.

The building is carries out by using following commands:

cd ~/Src
wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz      # download LLVM 3.3
wget http://llvm.org/releases/3.3/cfe-3.3.src.tar.gz       # download Clang 3.3
tar -xvf llvm-3.3.src.tar.gz                               # unpack LLVM
tar -xvf cfe-3.3.src.tar.gz                                # unpack Clang
mv -T cfe-3.3.src llvm-3.3.src/tools/clang                 # move clang into LLVM
mkdir llvm-3.3.build                                       # make catalog of building 
cd llvm-3.3.build
cmake \
  -D CMAKE_BUILD_TYPE=Debug                               `: debug configuration, have to be used Release or RelWithDebInfo` \
  -D LLVM_REQUIRES_RTTI=1                                 `:  to switch on type’s information` \
  -D LLVM_TARGETS_TO_BUILD="X86;Sparc;ARM"                `: target platforms are at random` \
  -D BUILD_SHARED_LIBS=1                                  `: dynamic libraries building` \
  -D LLVM_INCLUDE_EXAMPLES=0 \
  -D LLVM_INCLUDE_TESTS=0 \
  -D CMAKE_INSTALL_PREFIX=~/Lib/llvm-3.3.install \        `: the path to directory to be installed ` \
  ../llvm-3.3.src
make                                                       # start of building
make install                                               # library installation

OpenOPS building

The building of OpenOPS is carries out by using cmake system. The building is managed by the following variable (the major are bold):

  • OPS_LLVM_DIR - directory, where LLVM is set;
  • OPS_PARALLEL_BUILD – parallelizing building flag. It is on by default.
  • BUILD_SHARED_LIBS – flag is managed by dynamic libraries building. It is off by default. It allows to reduce the time of building and the size of resulted executed files.
  • Flag is managed by dynamic libraries building. It is off by default.

The building of OpenOPS is carries out by using following commands:

make catalog of building

mkdir ops-build && cd ops-build

To run cmake for Makefile generation

cmake \
  -D CMAKE_BUILD_TYPE=Debug              `: debug configuration`\
  -D OPS_LLVM_DIR=~/Lib/llvm-3.3.install `: the path to LLVM`\
  -D BUILD_SHARED_LIBS=1                 `: use dynamic libraries`\
  ../ops

To run building

make
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].