From d79fab8098036dcad4628c21d61258195721e2a2 Mon Sep 17 00:00:00 2001 From: Tayler Hetherington Date: Mon, 17 Jun 2013 15:05:14 -0800 Subject: 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 -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] --- CHANGES | 1 + 1 file changed, 1 insertion(+) (limited to 'CHANGES') diff --git a/CHANGES b/CHANGES index 37bc9c1..a7ea699 100644 --- a/CHANGES +++ b/CHANGES @@ -38,6 +38,7 @@ Version 3.2.1+edits (development branch) versus 3.2.1 - Average/min/max per-kernel powers not being reset at kernel boundaries causing incorrect per-kernel values. - Fixed a dependency error in the src/cuda-sim Makefile. + - Fixing a source of non-determinism in GPGPU-Sim (Bug 147). Version 3.2.1 versus 3.2.0 - Added kernel name and launch uids to performance statistics log. -- cgit v1.3