Jump to content

VivaMP 1.00 released

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
12 replies to this topic

#1
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts
OOO "Program Verification Systems" Company announces release of the static code C/C++ code analyzer VivaMP 1.00. VivaMP analyzer is intended for diagnosing parallel errors in the software implemented on the basis of OpenMP technology. It is no secret that the modern compilers which support OpenMP parallel technology provide rather ineffective diagnosis of errors in OpenMP-code. Meanwhile it is rather easy to make a error when using OpenMP. The developed code analyzer VivaMP is meant to fill this gap and offer high-quality diagnosis when using OpenMP.

VivaMP software is an AddIn module for Microsoft Visual Studio 2005/2008 development environment. Integrating into this environment, the analyzer can test the code of C and C++ applications in which OpenMP-parallelling is used. The analyzer allows you to detect errors resulting from lack of knowledge of OpenMP syntax and insufficient understanding of OpenMP working principles as well as errors of incorrect work with common memory, synchronization errors and performance errors.

Unlike dynamic tools the static code analyzer VivaMP doesn't demand launching the program, that's why its diagnosis is always stable, precise and independent from the “environment” in which the program being developed is launched.

In comparison with beta-versions a lot of defects were corrected which had been detected during testing and also new diagnostic messages were added in VivaMP 1.00.

The final VivaMP 1.00 version is supplied with the complete Help system which contains descriptions of all the possible problems and, what is the most important, ways to solve them. Besides, a presentation devoted to VivaMP which will help you to get acquainted with the main abilities of the analyzer, is available on our site. Those who would like to see how VivaMP works without installing it may watch a demo-video also available on the site.

Attached Files


Edited by AsmDeveloper, 10 March 2009 - 08:56 AM.
Attach image


#2
Guest_Jordan_*

Guest_Jordan_*
  • Guests
Got any screenshots?

#3
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts
I can't post links. :)

(To be able to post links or images your post count must be 10 or greater. You currently have 3 posts.)

#4
Guest_Jordan_*

Guest_Jordan_*
  • Guests
You can attach images.

#5
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
A couple questions:
1) how does VivaMP compare with Lint?
2) Why use openMP as opposed to Boost threads?
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#6
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts

WingedPanther said:

1) how does VivaMP compare with Lint?
VivaMP is the first lint-like static code analyzer for check OpenMP programs.

WingedPanther said:

2) Why use openMP as opposed to Boost threads?
I do not know.

#7
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
Since I don't use OpenMP, that doesn't tell me why lint would not be adequate for checking OpenMP programs.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#8
Guest_Jordan_*

Guest_Jordan_*
  • Guests
And where are the attachments?

#9
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts

WingedPanther said:

Since I don't use OpenMP, that doesn't tell me why lint would not be adequate for checking OpenMP programs.

Parallel programming for PCs is a real challenge now when multicore processors are being used in practice. It is natural that parallel programming support appeared in compilers. One of the most widely spread technologies of parallel programming is OpenMP. It is supported by Microsoft Visual C++, Intel C++, PGI C++ Workstation and many other compilers. But as parallel programming for PCs only starts spreading, the support of “parallel errors” testing in compilers has not achieved its strong position yet. Nowadays the level of error diagnostic by compilers in OpenMP programs is at the same rate as the common error verification in traditional compilers used 30 years ago. Just at that time static code analysis tools which complemented diagnostic abilities of a compiler appeared. One of the most famous tools of this class is lint analyzer for C++ programs. The time of parallel programs has come and we offer a new product - VivaMP.

VivaMP fields of application:
  • Verification of code correctness of OpenMP based applications .
  • Help in mastering OpenMP and its integration into the existing projects
  • Developing parallel applications which use resources more efficiently.
  • Error search in the existing OpenMP applications.


#10
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts

Jordan said:

And where are the attachments?

See first post. :)

.../1373d1236704077-vivamp-1-00-released-vivamp_screen.png

#11
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
Your response was a quote from the VivaMP website, and did not answer my question.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#12
AsmDeveloper

AsmDeveloper

    Newbie

  • Members
  • PipPip
  • 14 posts

WingedPanther said:

Your response was a quote from the VivaMP website, and did not answer my question.

There exist various static code analyzers. One of the most widely known is lint analyzer. There also exist other analyzers, both of general purpose and of special purposes, such as PC-Lint, C++Test, Viva64, FxCop and so on. The static analyzers which are meant for C++ language, of course are able to verify and find errors in parallel programs code, which use OpenMP technology. But they do it within the scope of C++ language and know nothing about the errors which may be made using OpenMP technology.

OpenMP is a technology which extends C++ language introducing into it special directives (#pragma omp …). The existing static analyzers simply ignore such extensions. VivaMP analyzer, on the contrary, specializes in the diagnostics of OpenMP constructions and considers them.

Here is a small example:

{

. . .

#pragma omp parallel num_threads(2)

{

   static int cachedResult = ComputeSomethingSlowly();

   int res = cachedResult;

   ...

}

...

}

For a simple static analyzer, this code will look the following way (it will ignore OpenMP directives):
{

. . .

{

   static int cachedResult = ComputeSomethingSlowly();

   int res = cachedResult;

   ...

}

...

}

And it will consider the code absolutely correct.
VivaMP will reveal the error and give out a message: V1204. Data race risk. Unprotected static variable declaration in a parallel code.

In order to make the declaration safe, the initializing function call and the subsequent variable usage must be placed in a critical section:

#pragma omp parallel num_threads(2)

{

   int res;

   #pragma omp critical

   {

      static int cachedResult = ComputeSomethingSlowly();

      res = cachedResult;

   }

      ...

}