Git Product home page Git Product logo

sapfor's Introduction

SAPFOR (System FOR Automated Parallelization)

SAPFOR is a software development suite that is focused on cost reduction of manual program parallelization. It was primarily designed to perform a source-to-source transformation of a sequential program for execution on heterogeneous clusters.

SAPFOR repository is intended to collect other repositories of this project that makes it easier to download separate repositories and to organize them in the required directory tree.

The simplest way to get SAPFOR is the use of Docker and Microsoft Visual Studio Code tools. You can build SAPFOR with all components (static and dynamic analyzers, interactive subsystem, testing automation system with a basic set of tests) inside the container and apply it using Microsoft Visual Studio Code.

The following tools must be installed in advance:

  1. Docker Desktop, installation instructions can be found here,
  2. Microsoft Visual Stuido Code with the Dev Containers extension, this extension is a part of the C/C++ Extension Pack.

To create a container you need:

  1. Run the Visual Studio Code command Dev Containers: Clone Repository in Container Volume. To do this, open the Command Palette in Visual Studio Code with the Ctrl + Shift + P keyboard shortcut, enter the command name, and press Enter.
  2. In the window that appears, enter the path to the umbrella SAPFOR repository https://github.com/dvm-system/sapfor and press Enter. As a result, a container based on Ubuntu will be created and the necessary packages will be installed (downloading and installing the components may take some time).
  3. Inside the container, run the CMake: Build command (using the Command Palette available by pressing Ctrl + Shift + P). As a result, SAPFOR will be built inside the container.
  4. Inside the container, run the CMake: Install command. Now you can run the SAPFOR console application in the integrated terminal (to open the terminal use the Ctr+` keyboard shortcut). For example, type tsar -help to see all available options. To launch the SAPFOR interactive subsystem you can use the context menu which is available for C/C++ sources.

Note. If the build process may consume a great amount of RAM, you can reduce the number of simultaneously running tasks. Open the Visual Studio Code settings panel (use the Preferences: Open Settings (UI) command) and explicitly specify the value of the Cmake: Parallel Jobs property for the CMake Tools configuration extension. Note. Usually it is better to leave Kit for SAPFOR unspecified and let CMake guess what compilers and environment to use. To change a Kit, run the CMake: Select a Kit command.

To manually download all parts of SAPFOR at once, use the command:

git clone --recurse-submodules https://github.com/dvm-system/sapfor.git

Visit the SAPFOR Wiki (in Russian) for more information.

References

Static analysis

Kataev, N.: Application of the LLVM Compiler Infrastructure to the Program Analysis in SAPFOR. In: Voevodin V., Sobolev S. (eds) Supercomputing. RuSCDays 2018. Communications in Computer and Information Science, vol. 965, pp. 487--499. Springer, Cham (2018) DOI: 10.1007/978-3-030-05807-4_41

Automated parallelization

Kataev, N.: LLVM Based Parallelization of C Programs for GPU. In: Voevodin V., Sobolev S. (eds) Supercomputing. RuSCDays 2020. Communications in Computer and Information Science, vol 1331. Springer, Cham. pp. 436--448 (2020) DOI: 10.1007/978-3-030-64616-5_38

Dynamic analysis

Kataev, N., Smirnov, A., Zhukov A.: Dynamic data-dependence analysis in SAPFOR. In: CEUR Workshop Proceedings, vol. 2543, pp 199--208 (2020)

Interactive subsystem

Kataev, N.: Interactive Parallelization of C Programs in SAPFOR. In: Scientific Services & Internet 2020. CEUR Workshop Proceedings, vol. 2784, pp. 139--148 (2020)

sapfor's People

Contributors

kaniandr avatar zoocide avatar echoix 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.