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:
- Docker Desktop, installation instructions can be found here,
- 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:
- Run the Visual Studio Code command
Dev Containers: Clone Repository in Container Volume
. To do this, open theCommand Palette
in Visual Studio Code with theCtrl + Shift + P
keyboard shortcut, enter the command name, and pressEnter
. - 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). - Inside the container, run the
CMake: Build
command (using theCommand Palette
available by pressingCtrl + Shift + P
). As a result, SAPFOR will be built inside the container. - 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, typetsar -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 theCmake: Parallel Jobs
property for theCMake 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 theCMake: 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.
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
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
Kataev, N., Smirnov, A., Zhukov A.: Dynamic data-dependence analysis in SAPFOR. In: CEUR Workshop Proceedings, vol. 2543, pp 199--208 (2020)
Kataev, N.: Interactive Parallelization of C Programs in SAPFOR. In: Scientific Services & Internet 2020. CEUR Workshop Proceedings, vol. 2784, pp. 139--148 (2020)