SlideShare a Scribd company logo
VivaMP - a tool for OpenMP
Author: Evgeniy Ryzhkov

Date: 20.11.2009

At present, Viva64 and VivaMP software products are included in PVS-Studio as parts of it and are no
longer distributed as separate applications. Please use PVS-Studio program to obtain the necessary
possibilities of code verification.


Abstract
The tool for programmers VivaMP is intended for helping OpenMP-based parallel software developers.
The article gives a brief description of the program product.


OpenMP parallel programming technology: advantages and
disadvantages
The modern processor (whether in a desktop or in a laptop) has several cores. Most often there are two
cores and more rarely three or four. But very soon even eight cores in a usual desktop computer will be
a common thing. That's why the most progressive software developers start thinking right now how to
make their programs parallel. That is how to load all the available processor's cores. And although it
would be an absolutely correct solution to develop a new parallel version of the program product, it is
actually the existing sequential version that is usually "parallelized". There are many different parallel
programming technologies but we are interested first of all in OpenMP technology as the most
promising for systems with common memory, that is the most promising for paralleling programs
intended for desktop computers. It allows you to make the existing program parallel by rewriting its
separate sections. All this seems (and actually is) very attractive to developers but here we face a
problem. Support of OpenMP technology is implemented in existing developing means so that it is very
easy to make errors which are not diagnosed [1]. Because of this developing OpenMP-solutions
becomes even more complicated.


A tool for supporting OpenMP-solution developers
To make the process of developing OpenMP-solutions less complicated OOO "Program Verification
Systems" creating program products in the sphere of code analysis has developed the program product
VivaMP (http://www.viva64.com/vivamp-tool/).

VivaMP is a C/C++ code analyzer intended for searching errors in existing OpenMP-programs and for
simplifying the process of developing new OpenMP-programs. If there are errors in a parallel program
which cannot be diagnosed by the compiler VivaMP will find them. After that the developer can easily
correct these errors using the Help system embedded into VivaMP.

Technically, VivaMP tool is implemented as an add-in module (AddIn) for Visual Studio 2005/2008
(figure 1).
Figure 1 - VivaMP tool is embedded into Microsoft Visual Studio 2005/2008 environment

After testing a separate file, project or whole solution the analyzer prints the list of potential errors the
developer should look through into Error List. You can get information on each error in the Help system
integrating into MSDN.

VivaMP tool allows you to:

    •   find old errors in existing OpenMP-solutions;
    •   detect errors in new OpenMP-solutions being developed;
    •   get information on correcting errors in the Help system;
    •   increase performance of OpenMP-based solutions;
•   investigate most of the possible errors in OpenMP-solutions using both the documentation and
        the demo-program ParallelSample attached to the VivaMP distribution kit.

The stated ways of using VivaMP make this tool useful both for first-time OpenMP-programmers and
their more experienced colleagues.


Advantages of static analysis over other methods of searching parallel
errors
VivaMP tool is a static code analyzer. This means that unlike dynamic analyzers it doesn't require
launching the program being tested to detect errors, and the result of the static analyzer's work doesn't
depend on the execution environment. Static analysis allows you to test the code which receives control
rarely or which is executed when processing rare errors.

Verification of parallel programs with the help of static analysis method is considered to be difficult and
ineffective as it is impossible to detect errors occurring when different program parts interact. But in
case of OpenMP technology you can effectively use static analysis. It is because of OpenMP technology's
"local" character. As a rule, parallel code in programs is gathered in one place and this helps perform
detailed static analysis for detecting errors. To learn more about this subject see the article "Testing
parallel programs" [2].


Conclusion
If you develop parallel programs using OpenMP technology you need to get acquainted with VivaMP
tool (http://www.viva64.com/vivamp-tool/). It will help you make development of OpenMP-solutions
much simpler and quicker.


References
    1. Alexey Kolosov, Evgeniy Ryzhkov, Andrey Karpov. 32 OpenMP Traps For C++ Developers.
       http://www.viva64.com/art-3-2-1023467288.html
    2. Andrey Karpov. Testing parallel programs. http://www.viva64.com/art-3-2-548461019.html

More Related Content

What's hot

vREST for a new user
vREST for a new uservREST for a new user
vREST for a new user
vrest_io
 
Ranorex Studio - Introduction, Features & Limitations - Mobile Test Automati...
Ranorex Studio - Introduction, Features & Limitations -  Mobile Test Automati...Ranorex Studio - Introduction, Features & Limitations -  Mobile Test Automati...
Ranorex Studio - Introduction, Features & Limitations - Mobile Test Automati...
eVideoTuition
 
What is the importance of tools in automated ui testing
What is the importance of tools in automated ui testingWhat is the importance of tools in automated ui testing
What is the importance of tools in automated ui testing
TestingXperts
 
Debugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programsDebugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programs
PVS-Studio
 
Case study: QTP to Selenium migration
Case study: QTP to Selenium migrationCase study: QTP to Selenium migration
Case study: QTP to Selenium migration
Tarun Lalwani
 
Starwest 2012 Making The Most Of Test Automation In An Agile Project
Starwest 2012   Making The Most Of Test Automation In An Agile ProjectStarwest 2012   Making The Most Of Test Automation In An Agile Project
Starwest 2012 Making The Most Of Test Automation In An Agile Project
aandelkovic
 
Selenium vs QTP/ UFT | Edureka
Selenium vs QTP/ UFT | EdurekaSelenium vs QTP/ UFT | Edureka
Selenium vs QTP/ UFT | Edureka
Edureka!
 
Automation
AutomationAutomation
Automation
Anil Kumar
 
Comparison manual & automation
Comparison manual & automationComparison manual & automation
Comparison manual & automation
Rashmi Kanta Mohapatra
 
Why Automate
Why AutomateWhy Automate
Why Automate
vladimir zaremba
 
Measure performance of the application using open source performance testing...
Measure performance of the  application using open source performance testing...Measure performance of the  application using open source performance testing...
Measure performance of the application using open source performance testing...
BugRaptors
 
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in EclipseEclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
PVS-Studio
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk Tool
Vivek Pansara
 
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Ori Bendet
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
Andrey Karpov
 
test
testtest
Test Automation Tool comparison – HP UFT/QTP vs. Selenium
Test Automation Tool comparison –  HP UFT/QTP vs. SeleniumTest Automation Tool comparison –  HP UFT/QTP vs. Selenium
Test Automation Tool comparison – HP UFT/QTP vs. Selenium
Aspire Systems
 
Choosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for YouChoosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for You
Perfecto by Perforce
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
ISsoft
 

What's hot (20)

vREST for a new user
vREST for a new uservREST for a new user
vREST for a new user
 
Ranorex Studio - Introduction, Features & Limitations - Mobile Test Automati...
Ranorex Studio - Introduction, Features & Limitations -  Mobile Test Automati...Ranorex Studio - Introduction, Features & Limitations -  Mobile Test Automati...
Ranorex Studio - Introduction, Features & Limitations - Mobile Test Automati...
 
What is the importance of tools in automated ui testing
What is the importance of tools in automated ui testingWhat is the importance of tools in automated ui testing
What is the importance of tools in automated ui testing
 
Debugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programsDebugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programs
 
Case study: QTP to Selenium migration
Case study: QTP to Selenium migrationCase study: QTP to Selenium migration
Case study: QTP to Selenium migration
 
Starwest 2012 Making The Most Of Test Automation In An Agile Project
Starwest 2012   Making The Most Of Test Automation In An Agile ProjectStarwest 2012   Making The Most Of Test Automation In An Agile Project
Starwest 2012 Making The Most Of Test Automation In An Agile Project
 
Selenium vs QTP/ UFT | Edureka
Selenium vs QTP/ UFT | EdurekaSelenium vs QTP/ UFT | Edureka
Selenium vs QTP/ UFT | Edureka
 
Automation
AutomationAutomation
Automation
 
Comparison manual & automation
Comparison manual & automationComparison manual & automation
Comparison manual & automation
 
Why Automate
Why AutomateWhy Automate
Why Automate
 
Measure performance of the application using open source performance testing...
Measure performance of the  application using open source performance testing...Measure performance of the  application using open source performance testing...
Measure performance of the application using open source performance testing...
 
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in EclipseEclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
Eclipse Day India 2015 - Unleashing the Java 8 Tooling in Eclipse
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk Tool
 
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
 
test
testtest
test
 
Test Automation Tool comparison – HP UFT/QTP vs. Selenium
Test Automation Tool comparison –  HP UFT/QTP vs. SeleniumTest Automation Tool comparison –  HP UFT/QTP vs. Selenium
Test Automation Tool comparison – HP UFT/QTP vs. Selenium
 
Choosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for YouChoosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for You
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 

Viewers also liked

Parallel programs to multi-processor computers!
Parallel programs to multi-processor computers!Parallel programs to multi-processor computers!
Parallel programs to multi-processor computers!
PVS-Studio
 
Lesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignmentLesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignment
PVS-Studio
 
Description of VivaVisualCode
Description of VivaVisualCodeDescription of VivaVisualCode
Description of VivaVisualCode
PVS-Studio
 
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team development
PVS-Studio
 
Changes in programmer tools' infrastructure
Changes in programmer tools' infrastructureChanges in programmer tools' infrastructure
Changes in programmer tools' infrastructure
PVS-Studio
 
PVS-Studio vs Chromium
PVS-Studio vs ChromiumPVS-Studio vs Chromium
PVS-Studio vs Chromium
PVS-Studio
 
How VivaCore library appeared
How VivaCore library appearedHow VivaCore library appeared
How VivaCore library appeared
PVS-Studio
 
Lesson 19. Pattern 11. Serialization and data interchange
Lesson 19. Pattern 11. Serialization and data interchangeLesson 19. Pattern 11. Serialization and data interchange
Lesson 19. Pattern 11. Serialization and data interchange
PVS-Studio
 
Analysis of the Ultimate Toolbox project
Analysis of the Ultimate Toolbox projectAnalysis of the Ultimate Toolbox project
Analysis of the Ultimate Toolbox project
PVS-Studio
 
Lesson 16. Pattern 8. Memsize-types in unions
Lesson 16. Pattern 8. Memsize-types in unionsLesson 16. Pattern 8. Memsize-types in unions
Lesson 16. Pattern 8. Memsize-types in unions
PVS-Studio
 
Introduction into the problems of developing parallel programs
Introduction into the problems of developing parallel programsIntroduction into the problems of developing parallel programs
Introduction into the problems of developing parallel programs
PVS-Studio
 
Optimization in the world of 64-bit errors
Optimization  in the world of 64-bit errorsOptimization  in the world of 64-bit errors
Optimization in the world of 64-bit errors
PVS-Studio
 
The use of the code analysis library OpenC++: modifications, improvements, er...
The use of the code analysis library OpenC++: modifications, improvements, er...The use of the code analysis library OpenC++: modifications, improvements, er...
The use of the code analysis library OpenC++: modifications, improvements, er...
PVS-Studio
 

Viewers also liked (14)

Parallel programs to multi-processor computers!
Parallel programs to multi-processor computers!Parallel programs to multi-processor computers!
Parallel programs to multi-processor computers!
 
Lesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignmentLesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignment
 
Description of VivaVisualCode
Description of VivaVisualCodeDescription of VivaVisualCode
Description of VivaVisualCode
 
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applications
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team development
 
Changes in programmer tools' infrastructure
Changes in programmer tools' infrastructureChanges in programmer tools' infrastructure
Changes in programmer tools' infrastructure
 
PVS-Studio vs Chromium
PVS-Studio vs ChromiumPVS-Studio vs Chromium
PVS-Studio vs Chromium
 
How VivaCore library appeared
How VivaCore library appearedHow VivaCore library appeared
How VivaCore library appeared
 
Lesson 19. Pattern 11. Serialization and data interchange
Lesson 19. Pattern 11. Serialization and data interchangeLesson 19. Pattern 11. Serialization and data interchange
Lesson 19. Pattern 11. Serialization and data interchange
 
Analysis of the Ultimate Toolbox project
Analysis of the Ultimate Toolbox projectAnalysis of the Ultimate Toolbox project
Analysis of the Ultimate Toolbox project
 
Lesson 16. Pattern 8. Memsize-types in unions
Lesson 16. Pattern 8. Memsize-types in unionsLesson 16. Pattern 8. Memsize-types in unions
Lesson 16. Pattern 8. Memsize-types in unions
 
Introduction into the problems of developing parallel programs
Introduction into the problems of developing parallel programsIntroduction into the problems of developing parallel programs
Introduction into the problems of developing parallel programs
 
Optimization in the world of 64-bit errors
Optimization  in the world of 64-bit errorsOptimization  in the world of 64-bit errors
Optimization in the world of 64-bit errors
 
The use of the code analysis library OpenC++: modifications, improvements, er...
The use of the code analysis library OpenC++: modifications, improvements, er...The use of the code analysis library OpenC++: modifications, improvements, er...
The use of the code analysis library OpenC++: modifications, improvements, er...
 

Similar to VivaMP - a tool for OpenMP

OpenMP
OpenMPOpenMP
OpenMP
PVS-Studio
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
PVS-Studio
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
PVS-Studio
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
Andrey Karpov
 
Parallel Lint
Parallel LintParallel Lint
Parallel Lint
PVS-Studio
 
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
Andrey Karpov
 
Codename one
Codename oneCodename one
VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...
PVS-Studio
 
mydevops.pptx
mydevops.pptxmydevops.pptx
mydevops.pptx
ssuserf111e7
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java Compiler
IRJET Journal
 
Class notes(week 10) on applet programming
Class notes(week 10) on applet programmingClass notes(week 10) on applet programming
Class notes(week 10) on applet programming
Kuntal Bhowmick
 
PVS-Studio confesses its love for Linux
PVS-Studio confesses its love for LinuxPVS-Studio confesses its love for Linux
PVS-Studio confesses its love for Linux
PVS-Studio
 
Comparing PVS-Studio with other code analyzers
Comparing PVS-Studio with other code analyzersComparing PVS-Studio with other code analyzers
Comparing PVS-Studio with other code analyzers
PVS-Studio
 
Shift left-csun-sagar-barbhaya
Shift left-csun-sagar-barbhayaShift left-csun-sagar-barbhaya
Shift left-csun-sagar-barbhaya
SAGAR BARBHAYA
 
Top 10 static code analysis tool
Top 10 static code analysis toolTop 10 static code analysis tool
Top 10 static code analysis tool
scmGalaxy Inc
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team development
Andrey Karpov
 
What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?
Andrey Karpov
 
Maven.pptx
Maven.pptxMaven.pptx
Maven.pptx
piyushkumar613397
 
0136 ideal static_analyzer
0136 ideal static_analyzer0136 ideal static_analyzer
0136 ideal static_analyzer
PVS-Studio
 

Similar to VivaMP - a tool for OpenMP (20)

OpenMP
OpenMPOpenMP
OpenMP
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
 
Parallel Lint
Parallel LintParallel Lint
Parallel Lint
 
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
 
Codename one
Codename oneCodename one
Codename one
 
VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...
 
mydevops.pptx
mydevops.pptxmydevops.pptx
mydevops.pptx
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java Compiler
 
Class notes(week 10) on applet programming
Class notes(week 10) on applet programmingClass notes(week 10) on applet programming
Class notes(week 10) on applet programming
 
PVS-Studio confesses its love for Linux
PVS-Studio confesses its love for LinuxPVS-Studio confesses its love for Linux
PVS-Studio confesses its love for Linux
 
Comparing PVS-Studio with other code analyzers
Comparing PVS-Studio with other code analyzersComparing PVS-Studio with other code analyzers
Comparing PVS-Studio with other code analyzers
 
Shift left-csun-sagar-barbhaya
Shift left-csun-sagar-barbhayaShift left-csun-sagar-barbhaya
Shift left-csun-sagar-barbhaya
 
Top 10 static code analysis tool
Top 10 static code analysis toolTop 10 static code analysis tool
Top 10 static code analysis tool
 
Regular use of static code analysis in team development
Regular use of static code analysis in team developmentRegular use of static code analysis in team development
Regular use of static code analysis in team development
 
What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?
 
Maven.pptx
Maven.pptxMaven.pptx
Maven.pptx
 
0136 ideal static_analyzer
0136 ideal static_analyzer0136 ideal static_analyzer
0136 ideal static_analyzer
 

Recently uploaded

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's TipsGetting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
ScyllaDB
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
manji sharman06
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
MySQL InnoDB Storage Engine: Deep Dive - Mydbops
MySQL InnoDB Storage Engine: Deep Dive - MydbopsMySQL InnoDB Storage Engine: Deep Dive - Mydbops
MySQL InnoDB Storage Engine: Deep Dive - Mydbops
Mydbops
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
UiPathCommunity
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 

Recently uploaded (20)

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's TipsGetting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
MySQL InnoDB Storage Engine: Deep Dive - Mydbops
MySQL InnoDB Storage Engine: Deep Dive - MydbopsMySQL InnoDB Storage Engine: Deep Dive - Mydbops
MySQL InnoDB Storage Engine: Deep Dive - Mydbops
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
 

VivaMP - a tool for OpenMP

  • 1. VivaMP - a tool for OpenMP Author: Evgeniy Ryzhkov Date: 20.11.2009 At present, Viva64 and VivaMP software products are included in PVS-Studio as parts of it and are no longer distributed as separate applications. Please use PVS-Studio program to obtain the necessary possibilities of code verification. Abstract The tool for programmers VivaMP is intended for helping OpenMP-based parallel software developers. The article gives a brief description of the program product. OpenMP parallel programming technology: advantages and disadvantages The modern processor (whether in a desktop or in a laptop) has several cores. Most often there are two cores and more rarely three or four. But very soon even eight cores in a usual desktop computer will be a common thing. That's why the most progressive software developers start thinking right now how to make their programs parallel. That is how to load all the available processor's cores. And although it would be an absolutely correct solution to develop a new parallel version of the program product, it is actually the existing sequential version that is usually "parallelized". There are many different parallel programming technologies but we are interested first of all in OpenMP technology as the most promising for systems with common memory, that is the most promising for paralleling programs intended for desktop computers. It allows you to make the existing program parallel by rewriting its separate sections. All this seems (and actually is) very attractive to developers but here we face a problem. Support of OpenMP technology is implemented in existing developing means so that it is very easy to make errors which are not diagnosed [1]. Because of this developing OpenMP-solutions becomes even more complicated. A tool for supporting OpenMP-solution developers To make the process of developing OpenMP-solutions less complicated OOO "Program Verification Systems" creating program products in the sphere of code analysis has developed the program product VivaMP (http://www.viva64.com/vivamp-tool/). VivaMP is a C/C++ code analyzer intended for searching errors in existing OpenMP-programs and for simplifying the process of developing new OpenMP-programs. If there are errors in a parallel program which cannot be diagnosed by the compiler VivaMP will find them. After that the developer can easily correct these errors using the Help system embedded into VivaMP. Technically, VivaMP tool is implemented as an add-in module (AddIn) for Visual Studio 2005/2008 (figure 1).
  • 2.
  • 3. Figure 1 - VivaMP tool is embedded into Microsoft Visual Studio 2005/2008 environment After testing a separate file, project or whole solution the analyzer prints the list of potential errors the developer should look through into Error List. You can get information on each error in the Help system integrating into MSDN. VivaMP tool allows you to: • find old errors in existing OpenMP-solutions; • detect errors in new OpenMP-solutions being developed; • get information on correcting errors in the Help system; • increase performance of OpenMP-based solutions;
  • 4. investigate most of the possible errors in OpenMP-solutions using both the documentation and the demo-program ParallelSample attached to the VivaMP distribution kit. The stated ways of using VivaMP make this tool useful both for first-time OpenMP-programmers and their more experienced colleagues. Advantages of static analysis over other methods of searching parallel errors VivaMP tool is a static code analyzer. This means that unlike dynamic analyzers it doesn't require launching the program being tested to detect errors, and the result of the static analyzer's work doesn't depend on the execution environment. Static analysis allows you to test the code which receives control rarely or which is executed when processing rare errors. Verification of parallel programs with the help of static analysis method is considered to be difficult and ineffective as it is impossible to detect errors occurring when different program parts interact. But in case of OpenMP technology you can effectively use static analysis. It is because of OpenMP technology's "local" character. As a rule, parallel code in programs is gathered in one place and this helps perform detailed static analysis for detecting errors. To learn more about this subject see the article "Testing parallel programs" [2]. Conclusion If you develop parallel programs using OpenMP technology you need to get acquainted with VivaMP tool (http://www.viva64.com/vivamp-tool/). It will help you make development of OpenMP-solutions much simpler and quicker. References 1. Alexey Kolosov, Evgeniy Ryzhkov, Andrey Karpov. 32 OpenMP Traps For C++ Developers. http://www.viva64.com/art-3-2-1023467288.html 2. Andrey Karpov. Testing parallel programs. http://www.viva64.com/art-3-2-548461019.html