Analysis and parallelization technology

Analysis and parallelization process

Our tools follow a straightforward 4-step approach toward parallelizing your code. This process is predictable, fast, low-risk and avoids those hard-to-find parallel threading bugs.


Step 1: Analyze hotspots and bottlenecks

Analyze hotspots and bottlenecks

During the analysis phase, you upload your program into our tool, where it gets built and analyzed. The tool actually compiles the code into an internal format, on which detailed analysis is performed. After this static and dynamic analysis is complete, you can browse through your code and get information about your program’s execution and I/O behavior. Hot-spots, statistics such as cache hit and miss rates, execution times, and coverage information is presented using intuitive program visualizations. This allows you to focus on memory bottlenecks and compute bottlenecks right from the start.

Download the analysis whitepaper »

Step 2: Explore parallelization opportunities

Explore parallelization opportunities

During the exploration phase, you try out different parallelization options. Using a point-and-click interface, you can add threads and map code onto different processors. The impact on program performance is shown, taking into account effect such as memory and cache bottlenecks, latencies, communication and thread scheduling overhead. There is immediate feedback about the parallel program’s performance impact, without touching a single line of code. Data dependencies are visualized and analyzed in a very detailed manner, ensuring the parallel program still operates correctly, and that no data races or synchronization problems are introduced. This way, the resulting concurrent program is guaranteed to work correctly.

Download the parallelization whitepaper »

Step 3: Implement the parallel version

Implement the parallel version

After a known-good partitioning has been found during the exploration phase, the tool presents a detailed report outlining the straightforward code transformations that need to be applied to the code in order to implement the parallel constructs. This way, you keep in control of the parallel code. Calls to our vfTasks library provide an abstraction layer to your threading library of choice (e.g. POSIX threads), and keeps your code portable. This way, there is a minimal chance of introducing bugs in your program.

Read more information on the vfTasks library »

Step 4: Run the optimized application

Run the optimized application

You now run your parallelized program on your target architecture. The code will meet the performance requirements and execute correctly. Using the Vector Fabrics tools and methodology, your project is finished in record time and within budget. In addition, due to the correct-by-construction approach, you can be confident that there are no hard-to-find bugs in your resulting application, making the application ready to be shipped to your customers.