Automatic Parallelization of Sequential Codes with Parallware
Interested? Contact us!
Modern society makes widespread use Computational Science and Engineering (CSE) to build computer programs that simulate complex processes related to the research, design and manufacturing of products. In some business sectors, CSE is the only way to study and understand real-world complex processes. One pillar is the HPC hardware industry, which has succeeded in building powerful computer systems that range from laptop and desktop computers to the most powerful supercomputers. Other pillar is the HPC software industry, whose goal is to create software tools that ease the development and maintenance of HPC simulation programs that exploit the power of modern HPC computer systems.
Parallware is a new software tool to accelerate HPC simulation programs automatically. Appentra’s exclusive technology is a powerful and modern solution to the challenge of automatic parallelization of sequential programs. This gives it technological and competitive advantage over similar products available in the HPC market.
From the technical viewpoint, Parallware is a source-to-source parallelizing compiler for sequential codes. It automatically discovers the parallelism implicit in the input sequential code, and automatically generates parallel-equivalent source code annotated with OpenMP compiler directives. The key benefits are:
- Seamlessly accelerate your code on multi-core computers, reducing the execution time of your programs.
- Automatic generation of OpenMP parallel source code, preserving maintainability and human readability.
- Focus on your business or science. No need to learn any new language or new API.
- Develop sequential code and run it in parallel. No need of expertise in parallel programming.
- Independence and portability across future hardware generations.
- Increase in programmer’s productivity.
- Scientists, engineers and researchers that develop high-performance numerical simulation programs.
- Technical staff that provides support for optimization of numerical simulation programs.
What I need to know before the course:
- Basic knowledge on programming in C language.
- Basic knowledge on numerical simulation techniques (recommended).
What I don’t need to know before the course:
- Knowledge on hardware features of modern multi-core computers.
- Knowledge on HPC programming techniques.
- Knowledge on HPC programming standards for multi-core computers OpenMP.
Description of contents:
- Computational science and engineering (CSE) and high-performance computing (HPC).
- Relevance of CSE/HPC in modern society, science and engineering.
- Why automatic parallelization of sequential codes?
- Why using Parallware?
- Introduction to Parallware
- What is Parallware?
- Installation of Parallware.
- A simple example execution.
- A key concept: The function “parallware_root”.
- Programming guidelines to use Parallware.
- Command-line options.
- Automatic parallelization with Parallware
- Course-grain automatic parallelization.
- Parallware-ready functions and data structures.
- Fully parallel loops.
- Partially parallel loops.
- Parallelization of propagation loops and convergence loops.
- Advance code features and their impact on auto-parallelization
- Unsupported features (UFs).
- Refactoring suggestions (RSs).
- Auto-parallelization guidelines (AGs).
- Handling dynamic memory.
- Handling functions in external libraries.
- Performance evaluation
- Case studies representative of real simulation codes from fields of CSE/HPC.
- Speedup, arithmetic intensity and locality issues.