Hi Dan,
Many thanks for the reply. I just want to verify my understanding.
According to your email, basically ruby is deterministic but you are not
sure about the simics part, is that right? To my understanding, simics
should be deterministic since it is designed so. As for my simulation
environment, I turned ruby, opal, and simics on, and I did get
different result. Is that supposed to happen?
Best regards,
Guoqiang Yang
==============
Ruby is deterministic, provided it has *exactly* the same environment on
the repeat run. That includes random seed (i.e., RANDOM_SEED), as well
as less obvious things, like ENV string length, directory structure,
Simics version, etc. Because Ruby is only controlling a small portion of
what happens (Simics is in the driver's seat, if you will), Ruby cannot
guarantee an identical execution if Simics' behavior is somehow
different. We do not know if Simics itself uses internal randomness, and
if so, how to seed that randomness. This is one of the many reasons why
we often present multiple runs of each data point to attain 95%
confidence intervals.
Regards,
Dan
|