Comments (6)
Why do we have non-determinism anywhere in gem5? To me this isn't a problem with the tests, there shouldn't be anything truely random going on. The "time-based seed" should be replaced with something static.
from gem5.
Yeah, I was thinking of just altering the files in the tests directory to use --random-seed=
so that we don't have to make more changes to the workflow directory. If that's okay, I can just assign this to myself and get that done.
from gem5.
I had asked @DanKouch to do the same @mkjost0 , but if you want to get to it today, please go ahead.
@abmerop (or really, Brad) will have to comment more on @BobbyRBruce 's original question though, as I was not involved with that work.
from gem5.
Changing the command line parameter is the best thing to do in the short term (I think).
Longer term, the problem is this line:
We should be using mt_random
here instead of srand
. We should always use gem5's random number generator so that we have determinism by default.
Then, when we want to have multiple different seeds used, we can use (from python) m5._m5.core.seedRandom(random.randint(0,100000))
(or something like this). We should expose this seedRandom
function better, though.
Anyway, the "right" solution is a bit deeper than is worth it at this point. For now, let's just set the command line parameter.
from gem5.
Changing the command line parameter is the best thing to do in the short term (I think).
Longer term, the problem is this line:
We should be using
mt_random
here instead ofsrand
. We should always use gem5's random number generator so that we have determinism by default.Then, when we want to have multiple different seeds used, we can use (from python)
m5._m5.core.seedRandom(random.randint(0,100000))
(or something like this). We should expose thisseedRandom
function better, though.Anyway, the "right" solution is a bit deeper than is worth it at this point. For now, let's just set the command line parameter.
I had a go at this in #140. I'm not an expert on this part of the codebase, but I think my implementation of random_mt
works.
from gem5.
@mkjost0, can you check the status of this since #140 has been merged?
from gem5.
Related Issues (20)
- The checkpoint feature may not have successfully saved and restored some data. HOT 4
- Binaries compiled on Apple Silicon (ARM) are being processed as Power ISA in SE mode HOT 3
- LoongArch porting
- How can I specify in the configuration file or command line that my simulation can wait for remote GDB connections before starting simulation HOT 4
- Fix daily tests failing due to removing gcn3_x86 HOT 7
- RISCV RVV vfredmax.vs and vfredmin.vs implementation is incorrect HOT 2
- RVV instruction vmem faults caused by incorrect vl HOT 1
- CLFLUSH causes TLB assertion error HOT 1
- X86KvmCPU + se.py + mem-size ≥4 GB causes crash
- X86KvmCPU floating point exceptions when executing x87 FPU instructions
- arch-riscv: return values of m5 pseudo instructions in 32 bit systems HOT 7
- CHI (Arm) near/far atomic operation causes deadlock HOT 9
- Replace bitmanip test cases of asmtest resources with upstream one HOT 1
- arch-riscv: remove branching from `vset{i}vl{i}` instruction and allow registers `vl` and `vtype` to be renamed HOT 6
- arch-x86: bug in movss instruction HOT 5
- Test support for Ubuntu 24.04 HOT 3
- arch-x86,O3,KVM switching to full simulation bug HOT 4
- Simple question about custom instruction implementation HOT 1
- Linking Error when enable AddressSanitizer HOT 6
- Bug in restoring a checkpoint using SimpleProcessor and SwitchableProcessor in ARM & KVM setup HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gem5.