diff options
| author | Tayler Hetherington <[email protected]> | 2013-06-17 15:05:14 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:50:47 -0700 |
| commit | d79fab8098036dcad4628c21d61258195721e2a2 (patch) | |
| tree | a0967e13942bd7ca6e9d53e61d1294b25bff5af0 /src/stream_manager.h | |
| parent | 564de5650af4e54b02f954f47c363ca1da7732f9 (diff) | |
Review: 46001. Fixing a source of non-determinism in GPGPU-Sim (Bug 174). Not sure if this is the only issue, but this was definitely a source of non-determinism (checked with many of the <rodinia>-FT benchmarks). In gpgpu_sim_thread_concurrent() (gpgpusim_entrypoint.cc), the inner do{...}while(active); only breaks when the gpu is not active. As a result, the gpu is only initialized when the gpu becomes momentarily inactive. If one kernel completes while another kernel is currently pending in the stream's queue, the next kernel will start running immediately causing the GPU to not be reinitialized (which includes resetting per-kernel stats). The fix simply recognizes that a kernel has completed and breaks from the loop prior to starting the next operation.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 16463]
Diffstat (limited to 'src/stream_manager.h')
| -rw-r--r-- | src/stream_manager.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/stream_manager.h b/src/stream_manager.h index a30e21b..7275402 100644 --- a/src/stream_manager.h +++ b/src/stream_manager.h @@ -245,7 +245,7 @@ public: bool empty(); void print( FILE *fp); void push( stream_operation op ); - void operation(bool * sim); + bool operation(bool * sim); private: void print_impl( FILE *fp); |
