-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTAC_GEN_WorkingPage.html
197 lines (195 loc) · 20.1 KB
/
TAC_GEN_WorkingPage.html
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TAC V0.0.4 @ 2021.03.15: How to work with TAC simulators</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="TACdoxy.css" rel="stylesheet" type="text/css">
<!-- -->
<script type="text/javascript" src="TAC_navtree_hacks.js"></script>
</head>
<body>
<div style="background:#FFDDDD;font-size:120%;text-align:center;margin:0;padding:5px">Please, help us to better know about our user community by answering the following short survey: <a href="https://forms.gle/wpyrxWi18ox9Z5ae9">https://forms.gle/wpyrxWi18ox9Z5ae9</a></div>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="TAC_Logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname"><a href="https://[email protected]/jvegh/timeawarecomputingsimulator">TAC V0.0.4 @ 2021.03.15</a>
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('TAC_GEN_WorkingPage.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">How to work with TAC simulators </div> </div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#TAC_GEN_WorkingPage_General">Introduction</a></li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_Project">Using "projects"</a></li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_Settings">Using settings of the program</a></li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_DIRECTORIES">Directories</a><ul><li class="level2"><a href="#TAC_GEN_WorkingPage_DIRECTORIES_Temp">Temporary directory</a></li>
</ul>
</li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_Components">Components</a><ul><li class="level2"><a href="#TAC_GEN_WorkingPage_Interfaces">GraphicUser Interface version of the simulator</a></li>
<li class="level2"><a href="#NEURER_USER_CLI">Command-line interface version of the simulator</a></li>
<li class="level2"><a href="#TAC_GEN_WorkingPage_TEST">Unit testing program</a></li>
</ul>
</li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_Logging">Logging the simulation activity</a></li>
<li class="level1"><a href="#TAC_GEN_WorkingPage_Examples">Examples</a></li>
</ul>
</div>
<div class="textblock"><p>This page only tells general aspects. To find out how to apply it to one of the packets, please see the corresponding chapter in the selected packet.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_General"></a>
Introduction</h1>
<p>It is always a crucial point when using a new system (such as this simulator) to start as quickly as possible. Simulating something that drastically differs from the objects of computing, was never simple, and persisted to be a hard case also with this simulator. Biological systems 'live', they change their features in time, and a <em>true</em> model must be able to implement that feature: neurons are not processors and neuronal networks and not computer networks.</p>
<p>For neuronal simulation, a special method was developed, based on a technology, that is primarily used in the electronic design industry. It separates the <em>operating time</em> (when the action in reality happens) from the <em>computing time</em> (how much computing time is needed to compute the corresponding states). In this way, the simulated process may run in the many-years range (say a geology model) or in the femtoseconds range (atomic processes); the computing will all the time reflect the correct (virtual) time of the simulated process, independently from that the computing takes microseconds or days.</p>
<p>The kernel of the application is essentially an electronic design (a specific ASIC chip can be built upon it), so it has its own rules. For neuronal researchers, this feature should be hidden, and this package makes its best to do that. Simulating a <a class="el" href="GLOSSARY.html#GLOSSARY_SystemC">SystemC</a> design, however, was never simple, so it is really worth to read this basic introductory information.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_Project"></a>
Using "projects"</h1>
<p>It is, in general, a good practice to use the concept of "project subdirectory", i.e. to keep all the files related to a simulation in a separate subdirectory. The concept of NEURER_User_Install_WorkDir serves this goal: you can put all your files, your notes, pictures, etc. in the TAC_GEN_WorkingPage_Install_Work subdirectory, and generate the results in TAC_GEN_WorkingPage_Work_Output subdirectory.</p>
<p>The best policy is to create a new subdirectory for a new project (simulation session), and start the simulator from that directory. The program will create data and output directories as described in section TAC_GEN_WorkingPage_Install_WorkDir. After that you may copy your files needed for the simulation in the <em>data</em> subdirectory. Of course you can create the <em>data</em> subdirectory in advance, and in that case the program will use that directory as data directory. You may also want to write your per project settings to the corresponding subdirectory, see section <a class="el" href="TAC_GEN_WorkingPage.html#TAC_GEN_WorkingPage_Settings">Using settings of the program</a>.</p>
<p>Please notice that <em>data</em> is different from <em>settings</em>. Basically, your simulation will only use settings as described in <a class="el" href="TAC_GEN_WorkingPage.html#TAC_GEN_WorkingPage_Settings">Using settings of the program</a>, but – depending on your actual simulation – the application may need data from those subdirectories. For your efficiency it is important to comprehend the conventions used in connection with settings. Failing to do so, may produce disappointing results and mis-evaluating the simulator.</p>
<p>The results will be written in the <em>output</em> subdirectory. The log file (see section <a class="el" href="TAC_GEN_WorkingPage.html#TAC_GEN_WorkingPage_Logging">Logging the simulation activity</a>) goes in the temporary directory.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_Settings"></a>
Using settings of the program</h1>
<p>The program sets up, utilizes and changes dynamically numerous settings, both relating to the apperance of the program and its operation (i.e. the behavior of your simulation). Normally, users expect to provide the facility, that when entering the application next time, it will continue where at the previous time the user exited. This goal is reached through using 'QSettings', This operation is transparent for the user.</p>
<p>The settings are well-defined and grouped key-value pairs, which can be made persistent between evaluation sessions. When the user exits the tool, the actual settings are saved in a file in the <b>project directory</b> and next time they are loaded again. This means that the user may continue the next session exactly with the same settings that were used in the past session, furthermore that in the meantime, can run another project with different settings. The detailed operation is described in <a class="el" href="classscqSimulator.html#a7caac7ec42837d3e409ba43a483d8589" title="readSettings The main settings reading routine: reads settings from files">scqSimulator::readSettings</a>. The system of settings files is decribed in chapter <a class="el" href="NEURER_USER_GUIDE_SETTINGS_PAGE.html">How to configure ScQtSimNeurer through its settings files</a>.</p>
<p>Please notice that the subdirectory name contains also the version number of the application, i.e. you can use different settings for different program versions. And of course, you are free to copy manually the settings to a properly named file when you start with a new version. These files are different per user and per program version.</p>
<p>You may want to work with several projects, each having their own settings, so a project-wide settings may also be necessary. There is a way to make your settings persistent. Altogether, four actions may change the settings. First, there are settings used when configuring, compiling and/or starting the program, these are the default values. Second, if the program finds the application-wide settings files, it reads them and sets the corresponding values, actually overwriting the default values. Third, if the user-wide settings files exists, the program reads the settings and sets the corresponding values (actually overwrites the application-wide settings). Fourth, if the project-wide settings file exists, the program reads the settings and sets the corresponding values (actually overwrites the user-wide settings). Finally, during utilization, (in interactive mode) the user can change many of the settings, actually overwiting any former value.</p>
<p>When exiting the program, the recent settings are saved in the <b>project-wide</b> settings file (only there, the rests remain unchanged). When starting the application next time, those project-wide settings will be loaded as the last of the chain. Because of this, you should keep a reserve copy of the project-wide settings: <em>it is used by the program both as input and output</em>.</p>
<p>The user may save this project-wide settings file (or parts of it), by simply copying that contents into the corresponding higher-level directory. The settings file can be edited. Take care, however, to not change the syntax. If reading the key-value pair fails, the default value will be used.</p>
<p>This handling enables safe team work: the user (with proper systems-level protection) can set any settings, can have his default settings and experimental settings, while cannot destroy the group's or institution's settings.</p>
<p>It is part of the configuration to provide a definition of a string such as </p><pre class="fragment">#define INI_FILES "MainWindow Aliases Connections" </pre><p> where the words inside quitations are interpreted as a list of ".ini" files, i.e. the simulator expects those files, and reads their contents as decribed in section <a class="el" href="NEURER_USER_GUIDE_SETTINGS_PAGE.html">How to configure ScQtSimNeurer through its settings files</a>.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_DIRECTORIES"></a>
Directories</h1>
<p>The application uses several different directories.</p>
<h2><a class="anchor" id="TAC_GEN_WorkingPage_DIRECTORIES_Temp"></a>
Temporary directory</h2>
<p>The system might need temporary storage place, too. This area is normally transparent for the user. For the normal operation, however, the user needs the corresponding access rights and storage quota on that device. The system sets it up automatically, asking for the system-wide temporary subdirectory and prepares a subdirectory (using the name and version of the tool) in it.</p>
<p>Normally, the system provides a system-wide area for this goal. If that area can be used, the program creates a separate subdirectory in it, i.e. the temporary data will be stored in </p><pre class="fragment"> TempDir/PackageName
</pre><p>If for any reason, that area is not available for the program, it creates a subdirectory in the user's home directory, i.e. in such a case the temporary files go in subdirectory</p>
<pre class="fragment"> UserHome/PACKAGE_NAME/temp
</pre><h1><a class="anchor" id="TAC_GEN_WorkingPage_Components"></a>
Components</h1>
<p>The end-user distribution kit comprises different components, the most important ones are the executable files.</p>
<p>The simulator itself, comes in two versions. NEURER_USER_GUI of course works in an interactive way and shows enough information for the user to 'see' how the internal parts of NEURER work. <a class="el" href="TAC_GEN_WorkingPage.html#NEURER_USER_CLI">Command-line interface version of the simulator</a> produces only textual screen output and is not interactive.</p>
<p>The third component is essential only for developers. NEURER_USER_TEST is mainly for the developer, but you may run it if you suspect some operating detail. Of course, first the tests must be extended with the test case you want.</p>
<p>The simulators and test programs use logging facilities extensively, so studying and documenting their behavior is easy. The logging feature (based on Qt5 logging system) means that the applications write information about the important actions and events as discribed in TAC_GEN_WorkingPage_DIRECTORIES_Logging, with all relevant data and a time stamp. The system mirrors those notes on the screen and partly in the status line, too.</p>
<p>Since both the ideas and their implementation are quite unusual, the fourth component provides a kind of tutorial. Some example object and source code files, you can start with, are also delivered with the system (see section TAC_GEN_WorkingPage_DIRECTORIES_Examples). Their detailed operation is explained in this document. The best way to utilize them is to execute the object codes in the simulator, and read the explanations from the guide.</p>
<h2><a class="anchor" id="TAC_GEN_WorkingPage_Interfaces"></a>
GraphicUser Interface version of the simulator</h2>
<p>The executable is located in the '<b>bin/</b>' subdirectory, so it can be started with the command</p>
<pre class="fragment"><b>/<InstallDir>/<simulator>_GUI</b> </pre><p>The Qt5 toolkit <a class="el" href="citelist.html#CITEREF_QTProgramming">[3]</a> is used to provide an attractive GUI for the simulator. I comprises different views, tabs, etc</p>
<h2><a class="anchor" id="NEURER_USER_CLI"></a>
Command-line interface version of the simulator</h2>
<p>The executable is located in the '<b>bin/</b>' subdirectory, so it can be started with the command</p>
<pre class="fragment"><b>/<InstallDir>/<simulator>_CLI</b> </pre><p>The only interactivity is starting the program, so it starts with the settings as described in section NEURER_User-Work_Settings After that, the simulation runs to completion, and produces a log file in the subdirectory, where the executable was invoked from, as describen in section NEURER_User-Work_Logging.</p>
<h2><a class="anchor" id="TAC_GEN_WorkingPage_TEST"></a>
Unit testing program</h2>
<p>Components of the system undergo serious systematic testing. It is mainly interesting for the developers. Depending on the operation mode, selected during compilation, different components and different actions are tested. Unit testing program executes a lot of internal functionality tests as well as built-in "object files", and results of testing are written to both the screen and a log file.</p>
<p>The executable is located in the '<b>bin/</b>' subdirectory, so it can be started with the command</p>
<pre class="fragment"><b>/<InstallDir>/<simulator>_TEST</b> </pre><p>In response, the application prints a summary of the tests executed, including the number of the test and test cases, and whether all of them run successfully.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_Logging"></a>
Logging the simulation activity</h1>
<p>The simulator records your actions, parameters, their sequence, and other information in a file "PROJECT_NAME_PROJECT_VERSION_date_time.log" file in temporary directory NEURER_User_WorkingTemp. The file contains different messages, of which you shall consider the information messages, and maybe warnings and errors.</p>
<p>If everything goes OK, you do not need that file at all. However, if you are in doubt <em>what</em> operations you executed already, <em>which</em> order of operations you used or actually <b>which</b> parameters used at an operation, you are free to use that file. If you suspect an error in the operation of the tool, just send the log file to the maintainer. It is also a good idea to consult the file where the different files and directories are actually located.</p>
<p>Notice that the contents of the log file is duplicated in the log window (both in the GUI and CLI version), so you can notice issues immediately, but there is no need to bother with copying or saving some details of tha log info.</p>
<h1><a class="anchor" id="TAC_GEN_WorkingPage_Examples"></a>
Examples</h1>
<p>The best way of getting familiar with the ways how the simulator van be used, is to work through the examples. The examples are available through the 'File' menu (GUI version) or can be provided as the first argument provided for the program (both CLI and GUI versions). </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Mar 17 2021 15:28:19 for TAC V0.0.4 @ 2021.03.15 by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>