29.04.2014 Views

Presburger Arithmetic and Its Use in Verification

Presburger Arithmetic and Its Use in Verification

Presburger Arithmetic and Its Use in Verification

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CHAPTER 7.<br />

PARALLEL EXECUTION OF DECISION PROCEDURES<br />

elim<strong>in</strong>ation based on Exact Shadow is very effective; it is able to elim<strong>in</strong>ate all<br />

quantifiers for consistency predicates from 3-sequence <strong>and</strong> 4-sequence automata. In<br />

the case of 5-sequence automaton, the procedure stops with three quantifiers left, we<br />

th<strong>in</strong>k that even this partial elim<strong>in</strong>ation could help to simplify <strong>Presburger</strong> formulas.<br />

Detailed source code of the Omega Test can be found <strong>in</strong> Appendix B.6 <strong>and</strong> B.7.<br />

Automaton Quantifiers before Quantifiers after<br />

3-seq 3 0<br />

4-seq 6 0<br />

5-seq 10 3<br />

Table 7.4. Results of the Omega Test.<br />

7.3 Summary<br />

We have discussed parallelism aspects of Cooper’s algorithm <strong>and</strong> the Omega Test.<br />

Each discussion follows with some experiments, reasonable speedups have been obta<strong>in</strong>ed.<br />

It is easy to come up with a correct implementation of these parallel algorithms;<br />

however, it is not free to achieve good efficiency. The method we use for<br />

implementation has some <strong>in</strong>terest<strong>in</strong>g po<strong>in</strong>ts:<br />

•Weemployatrial-<strong>and</strong>-errorprocess.Eachattemptisevaluatedbyprofil<strong>in</strong>g<br />

applications with some specific <strong>in</strong>puts.<br />

•Somelow-leveltoolsareused<strong>in</strong>clud<strong>in</strong>gCLR Profiler <strong>and</strong> ILSpy. Theformer<br />

provides more <strong>in</strong>formation regard<strong>in</strong>g memory <strong>and</strong> garbage collection <strong>and</strong><br />

the latter helps to translate F# to other .NET languages for underst<strong>and</strong><strong>in</strong>g<br />

low-level implementation <strong>and</strong> optimiz<strong>in</strong>g F# code.<br />

•Wefollowtheidiomoflittlememoryallocation<strong>and</strong>littlegarbagecollection;<br />

therefore, code is optimized so that their memory footpr<strong>in</strong>ts are small <strong>and</strong><br />

unnecessary garbage collection is avoided.<br />

F# has provided a very convenient environment for parallel programm<strong>in</strong>g. We<br />

can start prototyp<strong>in</strong>g algorithms without worry<strong>in</strong>g about sophisticated synchronization<br />

constructs <strong>and</strong> F# <strong>in</strong>terpreter has been a good <strong>in</strong>dicator for parallelism,<br />

so that we can decide when to start benchmark<strong>in</strong>g. However, it is still difficult<br />

to optimize algorithms for parallelism because memory footpr<strong>in</strong>ts of F# programs<br />

are quite large <strong>and</strong> garbage collection has a bad <strong>in</strong>fluence on performance <strong>in</strong> an<br />

unpredictable way.<br />

60

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!