Statistics
| Branch: | Revision:

root / README @ master

History | View | Annotate | Download (3.6 KB)

1 01873262 Georg Kunz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
PLEASE NOTE: THIS SOFTWARE PACKAGE INCLUDES HORIZON, NOT OMNeT++!
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
If you intended to download an official OMNeT++ release, this is not what you
6
are looking for. Please go to www.omnetpp.org and download an official release
7
of OMNeT++ from there. 
8
9
10
Horizon
11
~~~~~~~
12
13
Horizon is a parallel simulation framework build upon OMNeT++. It extends the
14
API and core of OMNeT++ to allow for parallel event execution. See our papers
15
for more information.
16
17
18
Changes
19
~~~~~~~
20
21
This package includes the bare simulation framework that allows you to compile
22
and run simulations using Horizon. To avoid confusion between OMNeT++ and
23
Horizon, we removed most of the supplementary features of the official OMNeT++
24
release which are not specific to Horizon. Specifically, we removed the following
25
components / directories:
26
27
 - contrib
28
 - doc (except for Horizon specific documentation and files needed by the build system)
29
 - ide
30
 - migrate
31
 - test
32
 - samples
33
34
35
Porting & Limitations
36
~~~~~~~~~~~~~~~~~~~~~
37
38
See PORTING for a brief discussion of how to port existing models to Horizon.
39
Additionally, consult LIMITATIONS to learn about restrictions of the programming
40
model and API imposed by Horizon.
41
42
43
Horizon-specific runtime options
44
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45
46
 - use-thread-pool : bool
47
   Enables or disables parallel event execution. 
48
   
49
 - thread-pool-size : integer
50
   Specifies the number of worker threads. Keep in mind that the event scheduler
51
   runs as an additional thread: If the computing machine has 12 cores, the maximum
52
   number of worker threads should be 11. Horizon automatically limits the number
53
   of threads accordingly.
54
   
55
 - thread-pool-class : {"cLockedThreadPool", "cSpinningThreadPool"}
56
   Specifies the thread pool implementation. Best performance is achieved using
57
   the cSpinningThreadPool which utilizes busy waiting for thread synchronization.
58
   For debugging and profiling use the cLockedThreadPool which uses ordinary
59
   pthread synchronization primitives.
60
   
61
 - use-main-thread : bool
62
   cSpinningThreadPool ONLY: If the main thread (event scheduler) determines all
63
   workers busy it may execute a given event itself. Use with care as long running
64
   events can block the central scheduler so that the workers quickly run out
65
   of work.
66
   
67
 - seed-generator-seed : integer
68
   Specifies the seed used by the central seed-generator random number generator.
69
   During initialization, the local RNGs of each module request seeds from this
70
   generator.
71
 
72
 - parallelize-zero-duration-events : bool
73
   Shall non-expanded (discrete) events be executed in parallel?
74
 
75
 - cpu-id-offset : integer
76
   Can be used to alter the assignment of threads to CPUs. Typically, the first
77
   thread (event scheduler) is pinned to CPU0, the second to CPU1, and so on.
78
   This option specifies an offset for the CPU-ID: thread1 -> CPU0 + offset
79
   which is usefull if two intances of the simulator run on one machine at the
80
   same time.
81
82
83
Samples
84
~~~~~~~
85
86
Some simple example models that make use of Horizon are available on our
87
project website https://code.comsys.rwth-aachen.de/redmine/projects/horizon-public.
88
89
90
Installation
91
~~~~~~~~~~~~
92
93
In contrast to OMNeT++, Horizon only runs on Linux/UNIX based operating systems.  
94
Please see the INSTALL file for dependencies and instructions on how to build Horizon.
95
96
97
Acknowledgements
98
~~~~~~~~~~~~~~~~
99
100
We'd like to thank Andras Varga and the OMNeT++ Team for providing a great
101
simulation tool to the community and for allowing us to re-use and publish the
102
code of OMNeT++ on our project website.