README.md 5.67 KB
Newer Older
Jeroen Meijer's avatar
Jeroen Meijer committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
DiVinE 2.0 [![Build Status](https://travis-ci.org/utwente-fmt/divine2.svg?branch=master)](https://travis-ci.org/utwente-fmt/divine2)
==========

Introduction
------------

DiVinE 2.0 exploits full power of modern x86 hardware and reduces unnecessary
delays in workflow. Employing state-of-the-art parallel liveness checking
algorithm, DiVinE 2.0 offers unmatched scalability on both shared memory and
distributed memory platforms in the range of 2- to 16-core machines and
clusters thereof. Moreover, the tool supports 64-bit platforms out of the box,
allowing it to leverage all the memory available in contemporary systems (and
systems of the upcoming years).

In the current DiVinE release, input is provided in DVE format -- an
industry-strength specification language, as used in original DiVinE Cluster
0.7 and DiVinE Multi-Core 1.x, with plenty of diverse example models, ranging
from simple toys to complex real-world models. There is an extensive model
resource available, [The Beem Database] [1], with large amount of downloadable
models and properties.

[1]: http://anna.fi.muni.cz/models.

Build Instructions
------------------

This package requires pthreads and a recent g++ (4.1 or later, tested under
4.3.4). You will also need cmake (www.cmake.org, tested with 2.6 -- however,
the configure script could download and compile it for you, just run configure
and answer the question(s)).

After unpacking the tarball, compile the source (the build system
should give you fairly clear indication what's wrong in case of
failure).

    $ ./configure
    $ make

Assuming, that build finishes successfully, you can try to run the binary:

    $ ./_build/tools/divine help
    $ ./_build/tools/divine reachability examples/shuffle.dve
    $ ./_build/tools/divine owcty examples/peterson-liveness.dve
    $ ./_build/tools/divine owcty examples/peterson-naive.dve

There is no need to install the binaries, as they are mostly
self-contained. However, to make the tool more readily available, you can
install using:

    # make install

Further usage instructions
--------------------------

Reference of commandline options is available with `divine help`, as detailed
above. The most useful invocations are these:

 * run reachability on 8 cores:
   `./_build/tools/divine reachability -w 8 input.dve`
 * run LTL model checking on 4 cores:
   `./_build/tools/divine owcty -w 4 input-with-property.dve`

There are several example inputs, mostly coming from [The BEEM Database] [1],
distributed with the tool under the `examples/` directory. These are the files
prefixed `beem-`. Many more models are available for download in the BEEM
repository.

[1]: http://anna.fi.muni.cz/models

To run DiVinE in a cluster, you can use the usual MPI tools, `mpirun` or
`mpiexec`. For detailed info about these, please consult the documentation of
your MPI implementation. You may also need to use a batch queue system like PBS
to run DiVinE on your cluster -- please consult your cluster administrator
about that.

When running DiVinE on a cluster manually (without any queue management
system), using machines node1 through node3, each of the nodes using 4 CPU
cores, you could use the following command:

    mpiexec -H node1,node2,node3 ./_build/tools/divine owcty -w 4 model.dve

Please note that this assumes that both the divine binary and the model are
available on all the mentioned cluster nodes, with the same paths (relative to
your working directory). Your MPI implementation may support binary and input
preloading, which would let you run DiVinE without a shared (NFS) filesystem as
well.

Graphical User Interface
------------------------

If Qt4 development files are available on your machine, a graphical user
interface for the DiVinE Tool will be compiled as part of the build process.
You can run the interface with:

    $ PATH=./_build/tools:$PATH ./_build/gui/divine.ide

Please see online help for further information about using the interface. If
you have chosen to install the tool, you should put it on your PATH, and then
issue `divine.ide`.

Reporting Problems
------------------

The DiVinE project uses Trac for managing problem reports. If you encounter a
behaviour you believe is a bug in DiVinE, please [file a new ticket] [1] in
[DiVinE Trac] [2]. However, before reporting issues, please consider checking
if there is a more recent version available and if the issue has been reported
already (in the latter case, please add a comment to the existing ticket, that
you have encountered the issue, and if possible, any further details you may
know about the problem). Thanks in advance.

[1]: http://divine.fi.muni.cz/trac/newticket?version=2.3
[2]: http://divine.fi.muni.cz/trac/

Obtaining New Versions
----------------------

The latest release is always available through the [project pages] [1], section
Download. You could also obtain the latest development snapshot through darcs
(you need darcs version 2.0 or later), which is used for version control:

    $ darcs get http://divine.fi.muni.cz/darcs/mainline divine

When you already have a darcs repository of the project, you can get
the latest changes by issuing:

    $ darcs pull

in the repository directory. For further details on using darcs, please consult
the file "HACKING" in the source tree and [darcs homepage] [2].

[1]: http://divine.fi.muni.cz/
[2]: http://www.darcs.net/

Licence
-------

The source code comes with NO WARRANTY, as detailed in the licence texts, which
may be found in the file "COPYING" in the distribution tarball. The tool is a
product of The ParaDiSe Laboratory, Faculty of Informatics of Masaryk
University.

This distribution includes freely redistributable third-party
code. Please refer to AUTHORS and COPYING included in the distribution
for copyright and licensing details.