summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyub Gubran <[email protected]>2011-10-19 14:15:38 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:18:23 -0700
commit03f2cd62985a4398cb6afe5066bbc92de272262a (patch)
treef70630a306f1bb90d6fb5cfffe4d74a1c6fa2ca4
parent258ad919a4d584a665c1b1d40d7c5e00831d7288 (diff)
My last work added to the branch, wokring on the functional simulator in cudasim.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 10695]
-rw-r--r--decuda_to_ptxplus/makefile3
-rw-r--r--libcuda/Makefile5
-rw-r--r--setup_enviroment4
-rw-r--r--src/Makefile377
-rw-r--r--src/cuda-sim/Makefile21
-rw-r--r--src/cuda-sim/cuda-sim.cc384
-rw-r--r--src/stream_manager.cc3
7 files changed, 542 insertions, 255 deletions
diff --git a/decuda_to_ptxplus/makefile b/decuda_to_ptxplus/makefile
index ddc9c76..b07d87b 100644
--- a/decuda_to_ptxplus/makefile
+++ b/decuda_to_ptxplus/makefile
@@ -84,6 +84,9 @@ decudaInst.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
decudaInst.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
decudaInst.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
decudaInst.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+decudaInst.o: /usr/include/stdio.h /usr/include/libio.h
+decudaInst.o: /usr/include/_G_config.h /usr/include/wchar.h
+decudaInst.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
decudaInstList.o: decudaInstList.h decudaInst.h stringList.h
decudaInstList.o: /usr/include/assert.h /usr/include/features.h
decudaInstList.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
diff --git a/libcuda/Makefile b/libcuda/Makefile
index 8ba09f3..cb04730 100644
--- a/libcuda/Makefile
+++ b/libcuda/Makefile
@@ -138,6 +138,7 @@ clean:
../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/stdio_lim.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/sys_errlist.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/string.h
+../build/release/libcuda/cuda_runtime_api.o: /usr/include/xlocale.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/assert.h
../build/release/libcuda/cuda_runtime_api.o: ../src/gpgpu-sim/gpu-sim.h
../build/release/libcuda/cuda_runtime_api.o: ../src/abstract_hardware_model.h
@@ -146,6 +147,10 @@ clean:
../build/release/libcuda/cuda_runtime_api.o: ../src/gpgpu-sim/shader.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/math.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/huge_val.h
+../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/huge_valf.h
+../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/huge_vall.h
+../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/inf.h
+../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/nan.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/mathdef.h
../build/release/libcuda/cuda_runtime_api.o: /usr/include/bits/mathcalls.h
../build/release/libcuda/cuda_runtime_api.o: ../src/cuda-sim/ptx.tab.h
diff --git a/setup_enviroment b/setup_enviroment
index 526322d..a90f9e0 100644
--- a/setup_enviroment
+++ b/setup_enviroment
@@ -10,13 +10,13 @@ export QTINC=/usr/include
export BOOST_ROOT=/usr/include/boost
export BOOST_LIB=/usr/lib64
export BOOST_VER=
-export NVOPENCL_LIBDIR=/usr/lib64
+#export NVOPENCL_LIBDIR=/usr/lib64
# change this to point to your installation of the NVIDIA compute SDK
export NVIDIA_COMPUTE_SDK_LOCATION=~/NVIDIA_GPU_Computing_SDK
# change the following to point to your installation of CUDA Toolkit
-export CUDA_INSTALL_PATH=/usr/local/cuda
+export CUDA_INSTALL_PATH=/home/ayub/cuda
# setting LD_LIBRARY_PATH as follows enables GPGPU-Sim to be invoked by
# native CUDA and OpenCL applications. GPGPU-Sim is dynamically linked
diff --git a/src/Makefile b/src/Makefile
index 40d7a89..effd073 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -73,185 +73,198 @@ option_parser.$(OEXT): option_parser.h
# DO NOT DELETE
-../build/debug/abstract_hardware_model.o: abstract_hardware_model.h
-../build/debug/abstract_hardware_model.o: cuda-sim/memory.h
-../build/debug/abstract_hardware_model.o: abstract_hardware_model.h
-../build/debug/abstract_hardware_model.o: /usr/include/assert.h
-../build/debug/abstract_hardware_model.o: /usr/include/features.h
-../build/debug/abstract_hardware_model.o: /usr/include/sys/cdefs.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/wordsize.h
-../build/debug/abstract_hardware_model.o: /usr/include/gnu/stubs.h
-../build/debug/abstract_hardware_model.o: /usr/include/gnu/stubs-64.h
-../build/debug/abstract_hardware_model.o: /usr/include/string.h
-../build/debug/abstract_hardware_model.o: /usr/include/stdio.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/types.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/typesizes.h
-../build/debug/abstract_hardware_model.o: /usr/include/libio.h
-../build/debug/abstract_hardware_model.o: /usr/include/_G_config.h
-../build/debug/abstract_hardware_model.o: /usr/include/wchar.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/stdio_lim.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/sys_errlist.h
-../build/debug/abstract_hardware_model.o: /usr/include/stdlib.h
-../build/debug/abstract_hardware_model.o: /usr/include/sys/types.h
-../build/debug/abstract_hardware_model.o: /usr/include/time.h
-../build/debug/abstract_hardware_model.o: /usr/include/endian.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/endian.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/byteswap.h
-../build/debug/abstract_hardware_model.o: /usr/include/sys/select.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/select.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/sigset.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/time.h
-../build/debug/abstract_hardware_model.o: /usr/include/sys/sysmacros.h
-../build/debug/abstract_hardware_model.o: /usr/include/bits/pthreadtypes.h
-../build/debug/abstract_hardware_model.o: /usr/include/alloca.h
-../build/debug/abstract_hardware_model.o: option_parser.h cuda-sim/ptx_ir.h
-../build/debug/abstract_hardware_model.o: cuda-sim/ptx.tab.h
-../build/debug/abstract_hardware_model.o: cuda-sim/ptx_sim.h
-../build/debug/abstract_hardware_model.o: cuda-sim/dram_callback.h
-../build/debug/abstract_hardware_model.o: tr1_hash_map.h cuda-sim/opcodes.h
-../build/debug/abstract_hardware_model.o: cuda-sim/opcodes.def
-../build/debug/abstract_hardware_model.o: cuda-sim/memory.h option_parser.h
-../build/debug/abstract_hardware_model.o: cuda-sim/ptx-stats.h
-../build/debug/debug.o: debug.h abstract_hardware_model.h gpgpu-sim/shader.h
-../build/debug/debug.o: /usr/include/stdio.h /usr/include/features.h
-../build/debug/debug.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
-../build/debug/debug.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
-../build/debug/debug.o: /usr/include/bits/types.h
-../build/debug/debug.o: /usr/include/bits/typesizes.h /usr/include/libio.h
-../build/debug/debug.o: /usr/include/_G_config.h /usr/include/wchar.h
-../build/debug/debug.o: /usr/include/bits/stdio_lim.h
-../build/debug/debug.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
-../build/debug/debug.o: /usr/include/sys/types.h /usr/include/time.h
-../build/debug/debug.o: /usr/include/endian.h /usr/include/bits/endian.h
-../build/debug/debug.o: /usr/include/bits/byteswap.h
-../build/debug/debug.o: /usr/include/sys/select.h /usr/include/bits/select.h
-../build/debug/debug.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
-../build/debug/debug.o: /usr/include/sys/sysmacros.h
-../build/debug/debug.o: /usr/include/bits/pthreadtypes.h
-../build/debug/debug.o: /usr/include/alloca.h /usr/include/math.h
-../build/debug/debug.o: /usr/include/bits/huge_val.h
-../build/debug/debug.o: /usr/include/bits/mathdef.h
-../build/debug/debug.o: /usr/include/bits/mathcalls.h /usr/include/assert.h
-../build/debug/debug.o: cuda-sim/ptx.tab.h cuda-sim/dram_callback.h
-../build/debug/debug.o: gpgpu-sim/delayqueue.h intersim/statwraper.h
-../build/debug/debug.o: gpgpu-sim/gpu-misc.h gpgpu-sim/stack.h
-../build/debug/debug.o: abstract_hardware_model.h gpgpu-sim/dram.h
-../build/debug/debug.o: /usr/include/zlib.h /usr/include/zconf.h
-../build/debug/debug.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
-../build/debug/debug.o: /usr/include/bits/confname.h /usr/include/getopt.h
-../build/debug/debug.o: gpgpu-sim/scoreboard.h gpgpu-sim/mem_fetch.h
-../build/debug/debug.o: gpgpu-sim/addrdec.h option_parser.h gpgpu-sim/stats.h
-../build/debug/debug.o: gpgpu-sim/gpu-cache.h tr1_hash_map.h
-../build/debug/debug.o: gpgpu-sim/gpu-sim.h gpgpu-sim/shader.h
-../build/debug/debug.o: cuda-sim/ptx_sim.h cuda-sim/dram_callback.h
-../build/debug/debug.o: cuda-sim/opcodes.h cuda-sim/opcodes.def
-../build/debug/debug.o: cuda-sim/memory.h cuda-sim/cuda-sim.h
-../build/debug/debug.o: cuda-sim/ptx_ir.h cuda-sim/ptx.tab.h
-../build/debug/debug.o: cuda-sim/ptx_sim.h /usr/include/string.h
-../build/debug/gpgpusim_entrypoint.o: gpgpusim_entrypoint.h
-../build/debug/gpgpusim_entrypoint.o: abstract_hardware_model.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/time.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/types.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/features.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/sys/cdefs.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/wordsize.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/gnu/stubs.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/gnu/stubs-64.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/typesizes.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/stdio.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/libio.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/_G_config.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/wchar.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/stdio_lim.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/sys_errlist.h
-../build/debug/gpgpusim_entrypoint.o: option_parser.h /usr/include/stdlib.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/sys/types.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/endian.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/endian.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/byteswap.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/sys/select.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/select.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/sigset.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/time.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/sys/sysmacros.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/pthreadtypes.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/alloca.h
-../build/debug/gpgpusim_entrypoint.o: cuda-sim/cuda-sim.h
-../build/debug/gpgpusim_entrypoint.o: abstract_hardware_model.h
-../build/debug/gpgpusim_entrypoint.o: cuda-sim/dram_callback.h
-../build/debug/gpgpusim_entrypoint.o: cuda-sim/ptx_ir.h /usr/include/assert.h
-../build/debug/gpgpusim_entrypoint.o: cuda-sim/ptx.tab.h cuda-sim/ptx_sim.h
-../build/debug/gpgpusim_entrypoint.o: tr1_hash_map.h cuda-sim/opcodes.h
-../build/debug/gpgpusim_entrypoint.o: cuda-sim/opcodes.def cuda-sim/memory.h
-../build/debug/gpgpusim_entrypoint.o: option_parser.h cuda-sim/ptx_parser.h
-../build/debug/gpgpusim_entrypoint.o: gpgpu-sim/gpu-sim.h gpgpu-sim/addrdec.h
-../build/debug/gpgpusim_entrypoint.o: gpgpu-sim/shader.h
-../build/debug/gpgpusim_entrypoint.o: gpgpu-sim/icnt_wrapper.h
-../build/debug/gpgpusim_entrypoint.o: stream_manager.h /usr/include/pthread.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/sched.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/sched.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/signal.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/setjmp.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/semaphore.h
-../build/debug/gpgpusim_entrypoint.o: /usr/include/bits/semaphore.h
-../build/debug/option_parser.o: /usr/include/stdio.h /usr/include/features.h
-../build/debug/option_parser.o: /usr/include/sys/cdefs.h
-../build/debug/option_parser.o: /usr/include/bits/wordsize.h
-../build/debug/option_parser.o: /usr/include/gnu/stubs.h
-../build/debug/option_parser.o: /usr/include/gnu/stubs-64.h
-../build/debug/option_parser.o: /usr/include/bits/types.h
-../build/debug/option_parser.o: /usr/include/bits/typesizes.h
-../build/debug/option_parser.o: /usr/include/libio.h /usr/include/_G_config.h
-../build/debug/option_parser.o: /usr/include/wchar.h
-../build/debug/option_parser.o: /usr/include/bits/stdio_lim.h
-../build/debug/option_parser.o: /usr/include/bits/sys_errlist.h
-../build/debug/option_parser.o: /usr/include/stdlib.h
-../build/debug/option_parser.o: /usr/include/sys/types.h /usr/include/time.h
-../build/debug/option_parser.o: /usr/include/endian.h
-../build/debug/option_parser.o: /usr/include/bits/endian.h
-../build/debug/option_parser.o: /usr/include/bits/byteswap.h
-../build/debug/option_parser.o: /usr/include/sys/select.h
-../build/debug/option_parser.o: /usr/include/bits/select.h
-../build/debug/option_parser.o: /usr/include/bits/sigset.h
-../build/debug/option_parser.o: /usr/include/bits/time.h
-../build/debug/option_parser.o: /usr/include/sys/sysmacros.h
-../build/debug/option_parser.o: /usr/include/bits/pthreadtypes.h
-../build/debug/option_parser.o: /usr/include/alloca.h /usr/include/assert.h
-../build/debug/option_parser.o: /usr/include/string.h option_parser.h
-../build/debug/stream_manager.o: stream_manager.h abstract_hardware_model.h
-../build/debug/stream_manager.o: /usr/include/pthread.h
-../build/debug/stream_manager.o: /usr/include/features.h
-../build/debug/stream_manager.o: /usr/include/sys/cdefs.h
-../build/debug/stream_manager.o: /usr/include/bits/wordsize.h
-../build/debug/stream_manager.o: /usr/include/gnu/stubs.h
-../build/debug/stream_manager.o: /usr/include/gnu/stubs-64.h
-../build/debug/stream_manager.o: /usr/include/endian.h
-../build/debug/stream_manager.o: /usr/include/bits/endian.h
-../build/debug/stream_manager.o: /usr/include/bits/byteswap.h
-../build/debug/stream_manager.o: /usr/include/sched.h
-../build/debug/stream_manager.o: /usr/include/bits/types.h
-../build/debug/stream_manager.o: /usr/include/bits/typesizes.h
-../build/debug/stream_manager.o: /usr/include/time.h
-../build/debug/stream_manager.o: /usr/include/bits/sched.h
-../build/debug/stream_manager.o: /usr/include/signal.h
-../build/debug/stream_manager.o: /usr/include/bits/sigset.h
-../build/debug/stream_manager.o: /usr/include/bits/pthreadtypes.h
-../build/debug/stream_manager.o: /usr/include/bits/setjmp.h
-../build/debug/stream_manager.o: gpgpusim_entrypoint.h cuda-sim/cuda-sim.h
-../build/debug/stream_manager.o: abstract_hardware_model.h
-../build/debug/stream_manager.o: cuda-sim/dram_callback.h
-../build/debug/stream_manager.o: /usr/include/stdlib.h
-../build/debug/stream_manager.o: /usr/include/sys/types.h
-../build/debug/stream_manager.o: /usr/include/sys/select.h
-../build/debug/stream_manager.o: /usr/include/bits/select.h
-../build/debug/stream_manager.o: /usr/include/bits/time.h
-../build/debug/stream_manager.o: /usr/include/sys/sysmacros.h
-../build/debug/stream_manager.o: /usr/include/alloca.h gpgpu-sim/gpu-sim.h
-../build/debug/stream_manager.o: gpgpu-sim/addrdec.h /usr/include/stdio.h
-../build/debug/stream_manager.o: /usr/include/libio.h
-../build/debug/stream_manager.o: /usr/include/_G_config.h
-../build/debug/stream_manager.o: /usr/include/wchar.h
-../build/debug/stream_manager.o: /usr/include/bits/stdio_lim.h
-../build/debug/stream_manager.o: /usr/include/bits/sys_errlist.h
-../build/debug/stream_manager.o: /usr/include/assert.h option_parser.h
-../build/debug/stream_manager.o: gpgpu-sim/shader.h
+../build/release/abstract_hardware_model.o: abstract_hardware_model.h
+../build/release/abstract_hardware_model.o: cuda-sim/memory.h
+../build/release/abstract_hardware_model.o: abstract_hardware_model.h
+../build/release/abstract_hardware_model.o: /usr/include/assert.h
+../build/release/abstract_hardware_model.o: /usr/include/features.h
+../build/release/abstract_hardware_model.o: /usr/include/sys/cdefs.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/wordsize.h
+../build/release/abstract_hardware_model.o: /usr/include/gnu/stubs.h
+../build/release/abstract_hardware_model.o: /usr/include/gnu/stubs-64.h
+../build/release/abstract_hardware_model.o: /usr/include/string.h
+../build/release/abstract_hardware_model.o: /usr/include/xlocale.h
+../build/release/abstract_hardware_model.o: /usr/include/stdio.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/types.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/typesizes.h
+../build/release/abstract_hardware_model.o: /usr/include/libio.h
+../build/release/abstract_hardware_model.o: /usr/include/_G_config.h
+../build/release/abstract_hardware_model.o: /usr/include/wchar.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/stdio_lim.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/sys_errlist.h
+../build/release/abstract_hardware_model.o: /usr/include/stdlib.h
+../build/release/abstract_hardware_model.o: /usr/include/sys/types.h
+../build/release/abstract_hardware_model.o: /usr/include/time.h
+../build/release/abstract_hardware_model.o: /usr/include/endian.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/endian.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/byteswap.h
+../build/release/abstract_hardware_model.o: /usr/include/sys/select.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/select.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/sigset.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/time.h
+../build/release/abstract_hardware_model.o: /usr/include/sys/sysmacros.h
+../build/release/abstract_hardware_model.o: /usr/include/bits/pthreadtypes.h
+../build/release/abstract_hardware_model.o: /usr/include/alloca.h
+../build/release/abstract_hardware_model.o: option_parser.h cuda-sim/ptx_ir.h
+../build/release/abstract_hardware_model.o: cuda-sim/ptx.tab.h
+../build/release/abstract_hardware_model.o: cuda-sim/ptx_sim.h tr1_hash_map.h
+../build/release/abstract_hardware_model.o: cuda-sim/opcodes.h
+../build/release/abstract_hardware_model.o: cuda-sim/opcodes.def
+../build/release/abstract_hardware_model.o: cuda-sim/memory.h option_parser.h
+../build/release/abstract_hardware_model.o: cuda-sim/ptx-stats.h
+../build/release/debug.o: debug.h abstract_hardware_model.h
+../build/release/debug.o: gpgpu-sim/shader.h /usr/include/stdio.h
+../build/release/debug.o: /usr/include/features.h /usr/include/sys/cdefs.h
+../build/release/debug.o: /usr/include/bits/wordsize.h
+../build/release/debug.o: /usr/include/gnu/stubs.h
+../build/release/debug.o: /usr/include/gnu/stubs-64.h
+../build/release/debug.o: /usr/include/bits/types.h
+../build/release/debug.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+../build/release/debug.o: /usr/include/_G_config.h /usr/include/wchar.h
+../build/release/debug.o: /usr/include/bits/stdio_lim.h
+../build/release/debug.o: /usr/include/bits/sys_errlist.h
+../build/release/debug.o: /usr/include/stdlib.h /usr/include/sys/types.h
+../build/release/debug.o: /usr/include/time.h /usr/include/endian.h
+../build/release/debug.o: /usr/include/bits/endian.h
+../build/release/debug.o: /usr/include/bits/byteswap.h
+../build/release/debug.o: /usr/include/sys/select.h
+../build/release/debug.o: /usr/include/bits/select.h
+../build/release/debug.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+../build/release/debug.o: /usr/include/sys/sysmacros.h
+../build/release/debug.o: /usr/include/bits/pthreadtypes.h
+../build/release/debug.o: /usr/include/alloca.h /usr/include/math.h
+../build/release/debug.o: /usr/include/bits/huge_val.h
+../build/release/debug.o: /usr/include/bits/huge_valf.h
+../build/release/debug.o: /usr/include/bits/huge_vall.h
+../build/release/debug.o: /usr/include/bits/inf.h /usr/include/bits/nan.h
+../build/release/debug.o: /usr/include/bits/mathdef.h
+../build/release/debug.o: /usr/include/bits/mathcalls.h /usr/include/assert.h
+../build/release/debug.o: cuda-sim/ptx.tab.h gpgpu-sim/delayqueue.h
+../build/release/debug.o: intersim/statwraper.h gpgpu-sim/gpu-misc.h
+../build/release/debug.o: gpgpu-sim/stack.h abstract_hardware_model.h
+../build/release/debug.o: gpgpu-sim/dram.h /usr/include/zlib.h
+../build/release/debug.o: /usr/include/zconf.h /usr/include/unistd.h
+../build/release/debug.o: /usr/include/bits/posix_opt.h
+../build/release/debug.o: /usr/include/bits/confname.h /usr/include/getopt.h
+../build/release/debug.o: gpgpu-sim/scoreboard.h gpgpu-sim/mem_fetch.h
+../build/release/debug.o: gpgpu-sim/addrdec.h option_parser.h
+../build/release/debug.o: gpgpu-sim/stats.h gpgpu-sim/gpu-cache.h
+../build/release/debug.o: tr1_hash_map.h gpgpu-sim/gpu-sim.h
+../build/release/debug.o: gpgpu-sim/shader.h cuda-sim/ptx_sim.h
+../build/release/debug.o: cuda-sim/opcodes.h cuda-sim/opcodes.def
+../build/release/debug.o: cuda-sim/memory.h cuda-sim/cuda-sim.h
+../build/release/debug.o: cuda-sim/ptx_ir.h cuda-sim/ptx.tab.h
+../build/release/debug.o: cuda-sim/ptx_sim.h /usr/include/string.h
+../build/release/debug.o: /usr/include/xlocale.h
+../build/release/gpgpusim_entrypoint.o: gpgpusim_entrypoint.h
+../build/release/gpgpusim_entrypoint.o: abstract_hardware_model.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/time.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/types.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/features.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/sys/cdefs.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/wordsize.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/gnu/stubs.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/gnu/stubs-64.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/typesizes.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/stdio.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/libio.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/_G_config.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/wchar.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/stdio_lim.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/sys_errlist.h
+../build/release/gpgpusim_entrypoint.o: option_parser.h /usr/include/stdlib.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/sys/types.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/endian.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/endian.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/byteswap.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/sys/select.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/select.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/sigset.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/time.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/sys/sysmacros.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/pthreadtypes.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/alloca.h
+../build/release/gpgpusim_entrypoint.o: cuda-sim/cuda-sim.h
+../build/release/gpgpusim_entrypoint.o: abstract_hardware_model.h
+../build/release/gpgpusim_entrypoint.o: cuda-sim/ptx_ir.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/assert.h
+../build/release/gpgpusim_entrypoint.o: cuda-sim/ptx.tab.h cuda-sim/ptx_sim.h
+../build/release/gpgpusim_entrypoint.o: tr1_hash_map.h cuda-sim/opcodes.h
+../build/release/gpgpusim_entrypoint.o: cuda-sim/opcodes.def
+../build/release/gpgpusim_entrypoint.o: cuda-sim/memory.h option_parser.h
+../build/release/gpgpusim_entrypoint.o: cuda-sim/ptx_parser.h
+../build/release/gpgpusim_entrypoint.o: gpgpu-sim/gpu-sim.h
+../build/release/gpgpusim_entrypoint.o: gpgpu-sim/addrdec.h
+../build/release/gpgpusim_entrypoint.o: gpgpu-sim/shader.h
+../build/release/gpgpusim_entrypoint.o: gpgpu-sim/icnt_wrapper.h
+../build/release/gpgpusim_entrypoint.o: stream_manager.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/pthread.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/sched.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/sched.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/signal.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/setjmp.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/semaphore.h
+../build/release/gpgpusim_entrypoint.o: /usr/include/bits/semaphore.h
+../build/release/option_parser.o: /usr/include/stdio.h
+../build/release/option_parser.o: /usr/include/features.h
+../build/release/option_parser.o: /usr/include/sys/cdefs.h
+../build/release/option_parser.o: /usr/include/bits/wordsize.h
+../build/release/option_parser.o: /usr/include/gnu/stubs.h
+../build/release/option_parser.o: /usr/include/gnu/stubs-64.h
+../build/release/option_parser.o: /usr/include/bits/types.h
+../build/release/option_parser.o: /usr/include/bits/typesizes.h
+../build/release/option_parser.o: /usr/include/libio.h
+../build/release/option_parser.o: /usr/include/_G_config.h
+../build/release/option_parser.o: /usr/include/wchar.h
+../build/release/option_parser.o: /usr/include/bits/stdio_lim.h
+../build/release/option_parser.o: /usr/include/bits/sys_errlist.h
+../build/release/option_parser.o: /usr/include/stdlib.h
+../build/release/option_parser.o: /usr/include/sys/types.h
+../build/release/option_parser.o: /usr/include/time.h /usr/include/endian.h
+../build/release/option_parser.o: /usr/include/bits/endian.h
+../build/release/option_parser.o: /usr/include/bits/byteswap.h
+../build/release/option_parser.o: /usr/include/sys/select.h
+../build/release/option_parser.o: /usr/include/bits/select.h
+../build/release/option_parser.o: /usr/include/bits/sigset.h
+../build/release/option_parser.o: /usr/include/bits/time.h
+../build/release/option_parser.o: /usr/include/sys/sysmacros.h
+../build/release/option_parser.o: /usr/include/bits/pthreadtypes.h
+../build/release/option_parser.o: /usr/include/alloca.h /usr/include/assert.h
+../build/release/option_parser.o: /usr/include/string.h
+../build/release/option_parser.o: /usr/include/xlocale.h option_parser.h
+../build/release/stream_manager.o: stream_manager.h abstract_hardware_model.h
+../build/release/stream_manager.o: /usr/include/pthread.h
+../build/release/stream_manager.o: /usr/include/features.h
+../build/release/stream_manager.o: /usr/include/sys/cdefs.h
+../build/release/stream_manager.o: /usr/include/bits/wordsize.h
+../build/release/stream_manager.o: /usr/include/gnu/stubs.h
+../build/release/stream_manager.o: /usr/include/gnu/stubs-64.h
+../build/release/stream_manager.o: /usr/include/endian.h
+../build/release/stream_manager.o: /usr/include/bits/endian.h
+../build/release/stream_manager.o: /usr/include/bits/byteswap.h
+../build/release/stream_manager.o: /usr/include/sched.h
+../build/release/stream_manager.o: /usr/include/bits/types.h
+../build/release/stream_manager.o: /usr/include/bits/typesizes.h
+../build/release/stream_manager.o: /usr/include/time.h
+../build/release/stream_manager.o: /usr/include/bits/sched.h
+../build/release/stream_manager.o: /usr/include/signal.h
+../build/release/stream_manager.o: /usr/include/bits/sigset.h
+../build/release/stream_manager.o: /usr/include/bits/pthreadtypes.h
+../build/release/stream_manager.o: /usr/include/bits/setjmp.h
+../build/release/stream_manager.o: gpgpusim_entrypoint.h cuda-sim/cuda-sim.h
+../build/release/stream_manager.o: abstract_hardware_model.h
+../build/release/stream_manager.o: /usr/include/stdlib.h
+../build/release/stream_manager.o: /usr/include/sys/types.h
+../build/release/stream_manager.o: /usr/include/sys/select.h
+../build/release/stream_manager.o: /usr/include/bits/select.h
+../build/release/stream_manager.o: /usr/include/bits/time.h
+../build/release/stream_manager.o: /usr/include/sys/sysmacros.h
+../build/release/stream_manager.o: /usr/include/alloca.h gpgpu-sim/gpu-sim.h
+../build/release/stream_manager.o: gpgpu-sim/addrdec.h /usr/include/stdio.h
+../build/release/stream_manager.o: /usr/include/libio.h
+../build/release/stream_manager.o: /usr/include/_G_config.h
+../build/release/stream_manager.o: /usr/include/wchar.h
+../build/release/stream_manager.o: /usr/include/bits/stdio_lim.h
+../build/release/stream_manager.o: /usr/include/bits/sys_errlist.h
+../build/release/stream_manager.o: /usr/include/assert.h option_parser.h
+../build/release/stream_manager.o: gpgpu-sim/shader.h
diff --git a/src/cuda-sim/Makefile b/src/cuda-sim/Makefile
index d47f99c..939aa89 100644
--- a/src/cuda-sim/Makefile
+++ b/src/cuda-sim/Makefile
@@ -177,6 +177,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/cuda_device_printf.o: opcodes.h opcodes.def
../../build/release/cuda-sim/cuda_device_printf.o: memory.h
../../build/release/cuda-sim/cuda_device_printf.o: /usr/include/string.h
+../../build/release/cuda-sim/cuda_device_printf.o: /usr/include/xlocale.h
../../build/release/cuda-sim/cuda_device_printf.o: /usr/include/stdio.h
../../build/release/cuda-sim/cuda_device_printf.o: /usr/include/libio.h
../../build/release/cuda-sim/cuda_device_printf.o: /usr/include/_G_config.h
@@ -211,6 +212,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/cuda-sim.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/cuda-sim.o: opcodes.def memory.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/string.h
+../../build/release/cuda-sim/cuda-sim.o: /usr/include/xlocale.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/stdio.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/libio.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/_G_config.h
@@ -225,6 +227,10 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/cuda-sim.o: ../gpgpu-sim/shader.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/math.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/huge_val.h
+../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/huge_valf.h
+../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/huge_vall.h
+../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/inf.h
+../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/nan.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/mathdef.h
../../build/release/cuda-sim/cuda-sim.o: /usr/include/bits/mathcalls.h
../../build/release/cuda-sim/cuda-sim.o: ../cuda-sim/ptx.tab.h
@@ -272,6 +278,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/instructions.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/instructions.o: opcodes.def memory.h
../../build/release/cuda-sim/instructions.o: /usr/include/string.h
+../../build/release/cuda-sim/instructions.o: /usr/include/xlocale.h
../../build/release/cuda-sim/instructions.o: /usr/include/stdio.h
../../build/release/cuda-sim/instructions.o: /usr/include/libio.h
../../build/release/cuda-sim/instructions.o: /usr/include/_G_config.h
@@ -281,6 +288,10 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/instructions.o: ../option_parser.h
../../build/release/cuda-sim/instructions.o: /usr/include/math.h
../../build/release/cuda-sim/instructions.o: /usr/include/bits/huge_val.h
+../../build/release/cuda-sim/instructions.o: /usr/include/bits/huge_valf.h
+../../build/release/cuda-sim/instructions.o: /usr/include/bits/huge_vall.h
+../../build/release/cuda-sim/instructions.o: /usr/include/bits/inf.h
+../../build/release/cuda-sim/instructions.o: /usr/include/bits/nan.h
../../build/release/cuda-sim/instructions.o: /usr/include/bits/mathdef.h
../../build/release/cuda-sim/instructions.o: /usr/include/bits/mathcalls.h
../../build/release/cuda-sim/instructions.o: /usr/include/fenv.h
@@ -315,6 +326,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/memory.o: /usr/include/gnu/stubs.h
../../build/release/cuda-sim/memory.o: /usr/include/gnu/stubs-64.h
../../build/release/cuda-sim/memory.o: /usr/include/string.h
+../../build/release/cuda-sim/memory.o: /usr/include/xlocale.h
../../build/release/cuda-sim/memory.o: /usr/include/stdio.h
../../build/release/cuda-sim/memory.o: /usr/include/bits/types.h
../../build/release/cuda-sim/memory.o: /usr/include/bits/typesizes.h
@@ -363,6 +375,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx_ir.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/ptx_ir.o: opcodes.def memory.h
../../build/release/cuda-sim/ptx_ir.o: /usr/include/string.h
+../../build/release/cuda-sim/ptx_ir.o: /usr/include/xlocale.h
../../build/release/cuda-sim/ptx_ir.o: /usr/include/stdio.h
../../build/release/cuda-sim/ptx_ir.o: /usr/include/libio.h
../../build/release/cuda-sim/ptx_ir.o: /usr/include/_G_config.h
@@ -397,6 +410,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx_loader.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/ptx_loader.o: opcodes.def memory.h
../../build/release/cuda-sim/ptx_loader.o: /usr/include/string.h
+../../build/release/cuda-sim/ptx_loader.o: /usr/include/xlocale.h
../../build/release/cuda-sim/ptx_loader.o: /usr/include/stdio.h
../../build/release/cuda-sim/ptx_loader.o: /usr/include/libio.h
../../build/release/cuda-sim/ptx_loader.o: /usr/include/_G_config.h
@@ -436,6 +450,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx_parser.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/ptx_parser.o: opcodes.def memory.h
../../build/release/cuda-sim/ptx_parser.o: /usr/include/string.h
+../../build/release/cuda-sim/ptx_parser.o: /usr/include/xlocale.h
../../build/release/cuda-sim/ptx_parser.o: /usr/include/stdio.h
../../build/release/cuda-sim/ptx_parser.o: /usr/include/libio.h
../../build/release/cuda-sim/ptx_parser.o: /usr/include/_G_config.h
@@ -469,6 +484,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx_sim.o: /usr/include/assert.h opcodes.h
../../build/release/cuda-sim/ptx_sim.o: opcodes.def memory.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/string.h
+../../build/release/cuda-sim/ptx_sim.o: /usr/include/xlocale.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/stdio.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/libio.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/_G_config.h
@@ -481,6 +497,10 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx_sim.o: ../gpgpu-sim/shader.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/math.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/huge_val.h
+../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/huge_valf.h
+../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/huge_vall.h
+../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/inf.h
+../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/nan.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/mathdef.h
../../build/release/cuda-sim/ptx_sim.o: /usr/include/bits/mathcalls.h
../../build/release/cuda-sim/ptx_sim.o: ../cuda-sim/ptx.tab.h
@@ -527,6 +547,7 @@ $(OUTPUT_DIR)/lex.ptx_.o: ptx.tab.c
../../build/release/cuda-sim/ptx-stats.o: ../tr1_hash_map.h opcodes.h
../../build/release/cuda-sim/ptx-stats.o: opcodes.def memory.h
../../build/release/cuda-sim/ptx-stats.o: /usr/include/string.h
+../../build/release/cuda-sim/ptx-stats.o: /usr/include/xlocale.h
../../build/release/cuda-sim/ptx-stats.o: /usr/include/stdio.h
../../build/release/cuda-sim/ptx-stats.o: /usr/include/libio.h
../../build/release/cuda-sim/ptx-stats.o: /usr/include/_G_config.h
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index e3e0245..027c1de 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -849,12 +849,14 @@ static unsigned get_tex_datasize( const ptx_instruction *pI, ptx_thread_info *th
void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
{
+
bool skip = false;
int op_classification = 0;
addr_t pc = next_instr();
assert( pc == inst.pc ); // make sure timing model and functional model are in sync
const ptx_instruction *pI = m_func_info->get_instruction(pc);
set_npc( pc + pI->inst_size() );
+
try {
@@ -866,12 +868,16 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
printf("attempted to execute instruction on a thread that is already done.\n");
assert(0);
}
+
if ( g_debug_execution >= 6 || m_gpu->get_config().get_ptx_inst_debug_to_file()) {
if ( (g_debug_thread_uid==0) || (get_uid() == (unsigned)g_debug_thread_uid) ) {
- clear_modifiedregs();
+
+ clear_modifiedregs();
enable_debug_trace();
}
}
+
+
if( pI->has_pred() ) {
const operand_info &pred = pI->get_pred();
ptx_reg_t pred_value = get_operand_value(pred, pred, PRED_TYPE, this, 0);
@@ -881,6 +887,7 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
skip = !pred_lookup(pI->get_pred_mod(), pred_value.pred & 0x000F);
}
}
+
if( skip ) {
inst.set_not_active(lane_id);
} else {
@@ -899,11 +906,13 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
}
delete pJ;
pI = pI_saved;
-
+
// Run exit instruction if exit option included
if(pI->is_exit())
exit_impl(pI,this);
}
+
+
const gpgpu_functional_sim_config &config = m_gpu->get_config();
@@ -932,7 +941,7 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
m_last_set_operand_value.u64 );
fflush(stdout);
}
-
+
addr_t insn_memaddr = 0xFEEBDAED;
memory_space_t insn_space = undefined_space;
_memory_op_t insn_memory_op = no_memory_op;
@@ -944,7 +953,8 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
insn_data_size = datatype2size(to_type);
insn_memory_op = pI->has_memory_read() ? memory_load : memory_store;
}
-
+
+
if ( pI->get_opcode() == ATOM_OP ) {
insn_memaddr = last_eaddr();
insn_space = last_space();
@@ -1005,7 +1015,7 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
g_ptx_sim_num_insn, ctaid.x,ctaid.y,ctaid.z,tid.x,tid.y,tid.z );
fflush(stdout);
}
-
+
// "Return values"
if(!skip) {
inst.space = insn_space;
@@ -1019,6 +1029,7 @@ void ptx_thread_info::ptx_exec_inst( warp_inst_t &inst, unsigned lane_id )
printf("GPGPU-Sim PTX: '%s'\n", pI->get_source() );
abort();
}
+
}
void set_param_gpgpu_num_shaders(int num_shaders)
@@ -1369,97 +1380,310 @@ ptx_cta_info *g_func_cta_info = NULL;
#define MAX(a,b) (((a)>(b))?(a):(b))
+/*
+This function simulates the CUDA code functionally, it takes a kernel_info_t parameter
+which holds the data for the CUDA kernel to be executed
+*/
+
+
void gpgpu_cuda_ptx_sim_main_func( kernel_info_t &kernel )
{
printf("GPGPU-Sim: Performing Functional Simulation...\n");
+
+
- time_t end_time, elapsed_time, days, hrs, minutes, sec;
- function_info *finfo = kernel.entry();
+ //storing kernel function information?? what it has
+ function_info *functionInfo = kernel.entry();
+
+ //defining a shared memory space for across the kernel blocks (size as param?)
memory_space *shared_mem = new memory_space_impl<16*1024>("shared",4);
- std::map<unsigned,memory_space*> lm_lookup;
+ //this table is to be used to store local memories for each thread indexed by their Idx
+ std::map<unsigned,memory_space*> localMemoriesTable;
+ //a global variable holds information on a block?
if ( g_func_cta_info == NULL )
g_func_cta_info = new ptx_cta_info(0);
+
+ //the main simulation loop, works through all the CTAs defined in the given kernel
while( !kernel.no_more_ctas_to_run() ) {
- std::list<ptx_thread_info *> active_threads;
- std::list<ptx_thread_info *> blocked_threads;
- dim3 ctaid3d = kernel.get_next_cta_id();
+
+
+ //holds the warps to be executed in the current CTA
+ std::vector<std::vector<ptx_thread_info*>> ctaWarpsList;
+ std::vector<std::stack<active_mask_t>> ctaWarpBranchDivergenceMaskStacksList;
+ std::vector<std::stack<address_type>> ctaRpcsStackList;
+ //g_func_cta_info->num_threads();
+ //int numberOfWarps = ceil(g_func_cta_info->num_threads()/warpSize);
+
+
+ //getting the current CTA id from the kernel grid of CTAs
+ dim3 CTA_Id3d = kernel.get_next_cta_id();
kernel.increment_cta_id();
+
+ //here we check if there is any threads are still running from previous CTA, and also reset variables
+ g_func_cta_info->check_cta_thread_status_and_reset();
+
+ //the loop initialize a local memory for each thread in the current CTA
+ //and add threads to liveThreads list so they will be executed in the next loop
+ std::vector<ptx_thread_info*> newWarp;
+
+ //ctaLiveThreads used to track the number of threads executing and used to terminate a CTA execution when all the threads have executed successfully
+ int ctaLiveThreads=0;
+ extern gpgpu_sim *g_the_gpu;
+
+ while( kernel.more_threads_in_cta() ) {
+
- g_func_cta_info->check_cta_thread_status_and_reset();
- while( kernel.more_threads_in_cta() ) {
- memory_space *local_mem = NULL;
- ptx_thread_info *thd = new ptx_thread_info(kernel);
- dim3 tid3d = kernel.get_next_thread_id_3d();
- unsigned lm_idx = kernel.get_next_thread_id();
- kernel.increment_thread_id();
- std::map<unsigned,memory_space*>::iterator lm=lm_lookup.find(lm_idx);
- if ( lm == lm_lookup.end() ) {
- char buf[1024];
- snprintf(buf,1024,"local_(%u,%u,%u)", tid3d.x, tid3d.y, tid3d.z );
- local_mem = new memory_space_impl<32>(buf,32);
- lm_lookup[lm_idx] = local_mem;
- } else {
- local_mem = lm->second;
- }
+ memory_space *threadLocalMemory = NULL;
+ ptx_thread_info *newThread = new ptx_thread_info(kernel);
+ dim3 newThreadId3 = kernel.get_next_thread_id_3d();
+ unsigned newThreadIdx = kernel.get_next_thread_id();
+ kernel.increment_thread_id();
- thd->set_info(finfo);
- thd->set_nctaid(ctaid3d);
- thd->set_ntid(kernel.get_cta_dim());
- thd->set_ctaid(ctaid3d);
- thd->set_tid(tid3d);
- thd->set_valid();
- thd->m_shared_mem = shared_mem;
- thd->m_local_mem = local_mem;
- thd->m_cta_info = g_func_cta_info;
- g_func_cta_info->add_thread(thd);
- active_threads.push_back(thd);
- }
+ //adding new thread local memory to the list of local memories table
+ std::map<unsigned,memory_space*>::iterator localMemoryPlace=localMemoriesTable.find(newThreadIdx);
+ if ( localMemoryPlace == localMemoriesTable.end() ) {
+ char buf[1024];
+ snprintf(buf,1024,"local_(%u,%u,%u)", newThreadId3.x, newThreadId3.y, newThreadId3.z );
+ threadLocalMemory = new memory_space_impl<32>(buf,32);
+ localMemoriesTable[newThreadIdx] = threadLocalMemory;
+ } else {
+ threadLocalMemory = localMemoryPlace->second;
+ }
+ //new thread initialization
+ newThread->init( g_the_gpu, NULL, NULL, NULL, NULL, NULL );
+ newThread->set_info(functionInfo);
+ newThread->set_nctaid(CTA_Id3d);
+ newThread->set_ntid(kernel.get_cta_dim());
+ newThread->set_ctaid(CTA_Id3d);
+ newThread->set_tid(newThreadId3);
+ newThread->set_valid();
+ newThread->m_shared_mem = shared_mem;
+ newThread->m_local_mem = threadLocalMemory;
+ newThread->m_cta_info = g_func_cta_info;
+ g_func_cta_info->add_thread(newThread);
+
+ //adding the new thread to the CTA warp threads list so will be executed next loop
+ newWarp.push_back(newThread);
+ if(newWarp.size()==MAX_WARP_SIZE)
+ {
+ ctaWarpsList.push_back(newWarp);
+
+ active_mask_t bools;
+
+
+ for(int i=0;i<newWarp.size();i++)
+ {
+ bools[i]= true;
+ }
+
+ std::stack<active_mask_t> boolStack;
+ boolStack.push(bools);
+
+ ctaWarpBranchDivergenceMaskStacksList.push_back(boolStack);
+
+ std::stack<address_type> rpcStack;
+ rpcStack.push(-1);
+ ctaRpcsStackList.push_back(rpcStack);
+
+ ctaLiveThreads+=newWarp.size();
+
+ newWarp.clear();
+ }
- while ( !(active_threads.empty() && blocked_threads.empty()) ) {
- // while there are still threads left to execute in this CTA
- ptx_thread_info *thread = NULL;
+ }
- if ( !active_threads.empty() ) {
- thread = active_threads.front();
- active_threads.pop_front();
- } else {
- active_threads = blocked_threads;
- blocked_threads.clear();
- std::list<ptx_thread_info *>::iterator a=active_threads.begin();
- for ( ; a != active_threads.end(); a++ ) {
- ptx_thread_info *thd = *a;
- thd->clear_barrier();
- }
- g_func_cta_info->release_barrier();
- }
+ if(newWarp.size()!=0)
+ {
+ ctaWarpsList.push_back(newWarp);
+ newWarp.clear();
- while ( thread != NULL ) {
- if ( thread->is_at_barrier() ) {
- blocked_threads.push_back(thread);
- thread = NULL;
- break;
- }
- if ( thread->is_done() ) {
- thread->m_cta_info->register_deleted_thread(thread);
- delete thread;
- thread = NULL;
- break;
- }
- abort(); // need to exec. inst
- }
+ active_mask_t bools;
+
+ for(int i=0;i<newWarp.size();i++)
+ {
+ bools[i]= true;
+ }
+ std::stack<active_mask_t> boolStack;
+ boolStack.push(bools);
+ ctaWarpBranchDivergenceMaskStacksList.push_back(boolStack);
+
+ std::stack<address_type> rpcStack;
+ rpcStack.push(-1);
+ ctaRpcsStackList.push_back(rpcStack);
+
+ ctaLiveThreads+=newWarp.size();
}
- }
+
+
+
+ //after this loop the ctaWarps holds a list of warps to be executed
+
+ //This loop will keep executing instructions in liveThreads list until they are all done
+ while (true) {
+
+ //a pointer used as a temp variable
+ ptx_thread_info *currentThread = NULL;
+
+ //for each warp
+ for(int i=0;i<ctaWarpsList.size();i++)
+ {
+ //execute the warp threads till a barrier met
+
+ printf("Executing warp %d out of %d and threads count is %d \n",i,ctaWarpsList.size(), ctaLiveThreads);
+ while(true){
+
+ //for each warp execute threads until blocked or done
+ active_mask_t takenBranches;
+ bool atBarrier =false;
+ bool stop=false;
+
+ // printf("In warp %d of size %d\n ",i,ctaWarpsList[i].size());
+ int threadsDoneInThisWarp =0;
+ //execute each thread in a warp one instruction at a time
+ for(int j=0;j<ctaWarpsList[i].size();j++)
+ {
+
+ currentThread= ctaWarpsList[i][j];
+
+ //if the thread is done or disabled skip
+ if(currentThread->is_done() ||ctaWarpBranchDivergenceMaskStacksList[i].top()[j]==0 )
+ {
+ threadsDoneInThisWarp++;
+ continue;
+ }
+
+
+ currentThread->clear_barrier();
+ //execute_thread(currentThread);
+ // printf(" %d ",j);
+
+
+ const warp_inst_t* w = ptx_fetch_inst(currentThread->get_pc());
+ warp_inst_t * warpInstruction = new warp_inst_t();
+ *warpInstruction = *w;
+
+
+
+ active_mask_t mask;
+ mask[0]=1;
+
+ //warpInstruction->set_active(ctaWarpBranchDivergenceMaskStacksList[i].top());
+ warpInstruction->set_active(mask);
+ currentThread->ptx_fetch_inst(*warpInstruction);
+ //currentThread->get_inst()->print_insn();
+ currentThread->ptx_exec_inst(*warpInstruction,0);
+
+
+ //check this
+ if(warpInstruction->isatomic() && !warpInstruction->empty() && (warpInstruction->is_load()|| warpInstruction->is_store()))
+ warpInstruction->do_atomic();
+
+ delete warpInstruction;
+
+ if(currentThread->branch_taken())
+ {
+ takenBranches[j] = currentThread->branch_taken();
+ // printf("found a branch \n");
+ //stop = true;
+ //abort();
+ }
+
+ if(currentThread->is_at_barrier())
+ {
+ printf("found barrier \n");
+ atBarrier = true;
+ }
+
+ if(currentThread->is_done())
+ {
+ //should do the cleaning later
+ // currentThread->m_cta_info->register_deleted_thread(currentThread);
+ // delete currentThread;
+ ctaLiveThreads--;
+ printf("some one is done\n");
+ }
+ }
+ // printf("\n");
+
+
+ //detecting branch divergence
+ bool taken = false;
+ bool notTaken=false;
+
+ for(int j=0;j<ctaWarpsList[i].size();j++)
+ {
+ if(takenBranches[j]==true)
+ taken=true;
+ else if(takenBranches[j]==false)
+ notTaken=true;
+ }
+ //if both condition represented then there are a branch divergence
+ if(taken&& notTaken)
+ {
+ printf("Branch here\n");
+ abort();
+ ctaRpcsStackList[i].push(currentThread->get_rpc());
+ ctaRpcsStackList[i].push(currentThread->get_rpc());
+ active_mask_t notTakenBranches;
+ for(int k=0;k<ctaWarpsList.size();k++)
+ {
+ notTakenBranches[k] =!takenBranches[k];
+ }
+ ctaWarpBranchDivergenceMaskStacksList[i].push(notTakenBranches);
+ ctaWarpBranchDivergenceMaskStacksList[i].push(takenBranches);
+ //continue so we wont delete takenBranhes and no need to check for barriers after as well
+ continue;
+ // printf("memory\n");
+ }
+
+ //doing branch convergence if it is the time to
+ else if(ctaRpcsStackList[i].top()==currentThread->get_pc())
+ {
+ ctaRpcsStackList[i].pop();
+ ctaWarpBranchDivergenceMaskStacksList[i].pop();
+
+ }
+
+ if(atBarrier || threadsDoneInThisWarp==ctaWarpsList[i].size())
+ break;
+
+
+ }
+ }
+
+ if(ctaLiveThreads==0)
+ break;
+
+ }
+ }
+
+ //cleaning need to recheck here add cleaning deleted threads
+ delete shared_mem;
+ std::map<unsigned,memory_space*>::iterator i = localMemoriesTable.begin();
+ for(; i!= localMemoriesTable.end();i++)
+ {
+ delete i->second;
+ }
+ //delete localMemoriesTable;
+
printf( "GPGPU-Sim: Done functional simulation (%u instructions simulated).\n", g_ptx_sim_num_insn );
if ( gpgpu_ptx_instruction_classification ) {
StatDisp( g_inst_classification_stat[g_ptx_kernel_count]);
StatDisp ( g_inst_op_classification_stat[g_ptx_kernel_count]);
}
+
+ //time_t variables used to calculate the total simulation time
+ //the start time of simulation is hold by the global variable g_simulation_starttime
+ //g_simulation_starttime is initilized by gpgpu_ptx_sim_init_perf() in gpgpusim_entrypoint.cc upon starting gpgpu-sim
+ time_t end_time, elapsed_time, days, hrs, minutes, sec;
end_time = time((time_t *)NULL);
elapsed_time = MAX(end_time - g_simulation_starttime, 1);
+
+ //calculating and printing simulation time in terms of days, hours, minutes and seconds
days = elapsed_time/(3600*24);
hrs = elapsed_time/3600 - 24*days;
minutes = elapsed_time/60 - 60*(hrs + 24*days);
@@ -1472,6 +1696,26 @@ void gpgpu_cuda_ptx_sim_main_func( kernel_info_t &kernel )
fflush(stdout);
}
+
+void execute_thread(ptx_thread_info* pThread)
+{
+// int i1, i2, i3, i4, o1, o2, o3, o4;
+// int vectorin, vectorout;
+// unsigned op_type;
+// addr_t addr;
+// unsigned space;
+// int arch_reg[MAX_REG_OPERANDS] = { -1 };
+// unsigned data_size;
+// dram_callback_t callback;
+// unsigned warp_active_mask = (unsigned)-1; // vote instruction with diverged warps won't execute correctly
+// in functional simulation mode
+//
+// g_func_info->ptx_decode_inst( pThread, &op_type, &i1, &i2, &i3, &i4, &o1, &o2, &o3, &o4, &vectorin, &vectorout, arch_reg );
+// g_func_info->ptx_exec_inst( pThread, &addr, &space, &data_size, &callback, warp_active_mask );
+}
+////////////////////////////////////////////////////////////////////
+
+
unsigned translate_pc_to_ptxlineno(unsigned pc)
{
// this function assumes that the kernel fits inside a single PTX file
diff --git a/src/stream_manager.cc b/src/stream_manager.cc
index 85778c9..1673e98 100644
--- a/src/stream_manager.cc
+++ b/src/stream_manager.cc
@@ -152,7 +152,8 @@ void stream_operation::do_operation( gpgpu_sim *gpu )
case stream_kernel_launch:
if( gpu->can_start_kernel() ) {
printf("kernel \'%s\' transfer to GPU hardware scheduler\n", m_kernel->name().c_str() );
- if( m_sim_mode )
+ // if( m_sim_mode )
+ if(true)
gpgpu_cuda_ptx_sim_main_func( *m_kernel );
else
gpu->launch( m_kernel );