You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is there any multi-threading support for the simulator?
I mean the multi-threading on the host to accelerate the simulation, intuitively, the core/cache/ddr can operate in parallel.
For example, can i use 4 cores to simulate core/l2/l3/ddr each? and speedup 4x?
There is no support for multi-threaded hosting. I put a lot of effort into logically isolating components, they are typically only connected by queues. So, if someone wanted to take on that project, I would be supportive.
I have a simply use a thread pool to parallelized the operables, Found it slowed down. And I found each operable (cache) only takes 2 us to operate, thus thread pool is not worth it. Sad.
Yes, this should still produce a deterministic ordering, if an inscrutible one. The simulation will produce the same outputs for the same inputs, but without specifying precisely what the sequence of operables will be. If this needs to be std::stable_sort for your purposes, I suppose that will be part of your pull request.
Activity
ngober commentedon Jun 3, 2025
There is no support for multi-threaded hosting. I put a lot of effort into logically isolating components, they are typically only connected by queues. So, if someone wanted to take on that project, I would be supportive.
Readm commentedon Jun 4, 2025
Readm commentedon Jun 4, 2025
I have a simply use a thread pool to parallelized the operables, Found it slowed down. And I found each operable (cache) only takes 2 us to operate, thus thread pool is not worth it. Sad.
Readm commentedon Jun 4, 2025
@ngober is champsim deterministic?I saw code here. what if they have same current_time?
ngober commentedon Jun 4, 2025
Yes, this should still produce a deterministic ordering, if an inscrutible one. The simulation will produce the same outputs for the same inputs, but without specifying precisely what the sequence of operables will be. If this needs to be
std::stable_sortfor your purposes, I suppose that will be part of your pull request.