Now we store the average power values directly obtained from the DRAMPower
library into the database. Thus we do not have to divide energy by time to
calculate them anymore (avoiding any possible lost of accuracy due to
rounding).
Other changes:
- At the very beginning (zero clock cycles) the energy is 0, so the
powerWindow thread wait first.
- When working with floats, we have to decide ourselves what is an acceptable
definition for "equal". Now we compare the energy value with a suitable
error margin (0.00001). Now the assertion that ensures the energy is not
zero is working properly.
Notes:
- The assert() function does nothing if NDEBUG is defined.
- The total energy is provided by DRAMPower as a double. We accumulate the
total energy for every window since we are clearing the library counters.
Explanation about double precision:
The double type ensures 15 decimal digits to represent a number. It does not
matter if the digits are before or after the comma. Thus we only have
rounding for numbers represented with more than 15 decimal digits.
In more technical terms:
An IEEE double has 53 significant bits (see also DBL_MANT_DIG in <cfloat>).
That is approximately 15.95 decimal digits (log10(2^53)). The implementation
sets the number of digits (DBL_DIG) to 15, not 16, because it has to round
down.
This way eventual changes to the default "sim-batch.xml" file will not affect
the result of this test.
Updated the expected values (expected.txt) after running the test with its own
sim-batch config file.
We used EXPLAIN QUERY PLAN and detected differences between machines.
Matthias found out that faster machines (DRAM server) use the "ranges_index"
for the "Transactions" table. But other machines (our laptops) use the primary
key defined for that table. Removing the primary key the performance issues
were solved.
IMPORTANT:
Though the mechanism to choose the proper metrics according to the bankwise
logic configuraiton is working fine, we need to check if all calculations are
correct. For exmple: check if the calculation of the total time in SREFB is
correct.
Lines which start with '#' will be ignored by trace players.
From IP_GFRBM.pdf:
STL syntax supports only single line comments. A single-line comment is
everything on a line following but not including the first occurrence of the #
character and up to, but not including the end of the line. For example:
# this is a comment
Comments should always begin in a new line.
Created an extra file memUtil.py which contains utilities that can be imported
and used by other script files.
The idea is to improve maintainability by avoiding duplicate code.
The following metrics will be generated:
- time in PDNA in ns
- time in PDNA percent
- time in PDNP in ns
- time in PDNP percent
- time in SREF in ns
- time in SREF percent
- time in power down states in ns
- time in power down states percent
Other changes:
Avoid a crash that was generated for channels which no accesses performed by
trace players. Now a message will be displayed explained that no metrics were
generated due to the lack of accesses.
These changes are a step forward in the direction of the PEP8 style guide for
python code. They do not affect functionality itself.
See also:
https://www.python.org/dev/peps/pep-0008/
These changes are a step forward in the direction of the PEP8 style guide for
python code. They do not affect functionality itself.
See also:
https://www.python.org/dev/peps/pep-0008/
Created classes to get easily memory specifications and memory configurations.
Each class handles the peculiarities of the related XML file.
Other changes:
- git ignore file updated.