From 4d441a9746616b2e45397097e6a7600a67aa973c Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Sat, 7 Aug 2010 05:35:29 -0800 Subject: watchpoint facility for ptx debugging [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7160] --- src/gpgpu-sim/Makefile | 248 +++++++++++++++++++++++++++++++++++++++++++++++ src/gpgpu-sim/gpu-sim.cc | 110 +-------------------- src/gpgpu-sim/gpu-sim.h | 1 + src/gpgpu-sim/shader.h | 2 + 4 files changed, 252 insertions(+), 109 deletions(-) (limited to 'src/gpgpu-sim') diff --git a/src/gpgpu-sim/Makefile b/src/gpgpu-sim/Makefile index 2b1412a..96b1a5c 100644 --- a/src/gpgpu-sim/Makefile +++ b/src/gpgpu-sim/Makefile @@ -114,3 +114,251 @@ dram_sched.$(OEXT): ../cuda-sim/ptx.tab.h # DO NOT DELETE +addrdec.o: /usr/include/string.h /usr/include/features.h +addrdec.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +addrdec.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h addrdec.h +addrdec.o: /usr/include/stdio.h /usr/include/bits/types.h +addrdec.o: /usr/include/bits/typesizes.h /usr/include/libio.h +addrdec.o: /usr/include/_G_config.h /usr/include/wchar.h +addrdec.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +addrdec.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h +addrdec.o: /usr/include/endian.h /usr/include/bits/endian.h +addrdec.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +addrdec.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +addrdec.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +addrdec.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +addrdec.o: /usr/include/assert.h ../option_parser.h +delayqueue.o: delayqueue.h /usr/include/stdio.h /usr/include/features.h +delayqueue.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +delayqueue.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +delayqueue.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +delayqueue.o: /usr/include/libio.h /usr/include/_G_config.h +delayqueue.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +delayqueue.o: /usr/include/bits/sys_errlist.h /usr/include/assert.h +delayqueue.o: /usr/include/stdlib.h /usr/include/sys/types.h +delayqueue.o: /usr/include/time.h /usr/include/endian.h +delayqueue.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +delayqueue.o: /usr/include/sys/select.h /usr/include/bits/select.h +delayqueue.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +delayqueue.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +delayqueue.o: /usr/include/alloca.h gpu-misc.h ../intersim/statwraper.h +dram.o: gpu-misc.h dram.h /usr/include/stdio.h /usr/include/features.h +dram.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +dram.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +dram.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +dram.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +dram.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +dram.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h +dram.o: /usr/include/endian.h /usr/include/bits/endian.h +dram.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +dram.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +dram.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +dram.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h delayqueue.h +dram.o: /usr/include/assert.h ../cuda-sim/dram_callback.h +dram_sched.o: dram_sched.h dram.h /usr/include/stdio.h +dram_sched.o: /usr/include/features.h /usr/include/sys/cdefs.h +dram_sched.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h +dram_sched.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h +dram_sched.o: /usr/include/bits/typesizes.h /usr/include/libio.h +dram_sched.o: /usr/include/_G_config.h /usr/include/wchar.h +dram_sched.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +dram_sched.o: /usr/include/stdlib.h /usr/include/sys/types.h +dram_sched.o: /usr/include/time.h /usr/include/endian.h +dram_sched.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +dram_sched.o: /usr/include/sys/select.h /usr/include/bits/select.h +dram_sched.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +dram_sched.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +dram_sched.o: /usr/include/alloca.h delayqueue.h /usr/include/assert.h +dram_sched.o: ../cuda-sim/dram_callback.h shader.h /usr/include/math.h +dram_sched.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +dram_sched.o: /usr/include/bits/mathcalls.h /usr/include/limits.h +dram_sched.o: /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h +dram_sched.o: /usr/include/linux/limits.h /usr/include/bits/posix2_lim.h +dram_sched.o: ../cuda-sim/ptx.tab.h gpu-cache.h ../abstract_hardware_model.h +dram_sched.o: stack.h gpu-sim.h /usr/include/zlib.h /usr/include/zconf.h +dram_sched.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h +dram_sched.o: /usr/include/bits/confname.h /usr/include/getopt.h +dram_sched.o: ../option_parser.h mem_fetch.h addrdec.h gpu-misc.h +dwf.o: dwf.h ../abstract_hardware_model.h histogram.h /usr/include/string.h +dwf.o: /usr/include/features.h /usr/include/sys/cdefs.h +dwf.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h +dwf.o: /usr/include/gnu/stubs-64.h +gpu-cache.o: gpu-cache.h /usr/include/stdio.h /usr/include/features.h +gpu-cache.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +gpu-cache.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +gpu-cache.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +gpu-cache.o: /usr/include/libio.h /usr/include/_G_config.h +gpu-cache.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +gpu-cache.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h +gpu-cache.o: /usr/include/sys/types.h /usr/include/time.h +gpu-cache.o: /usr/include/endian.h /usr/include/bits/endian.h +gpu-cache.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +gpu-cache.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +gpu-cache.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +gpu-cache.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +gpu-cache.o: ../abstract_hardware_model.h gpu-misc.h addrdec.h +gpu-cache.o: /usr/include/assert.h ../option_parser.h /usr/include/string.h +gpu-misc.o: gpu-misc.h +gpu-sim.o: gpu-sim.h /usr/include/stdio.h /usr/include/features.h +gpu-sim.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +gpu-sim.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +gpu-sim.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +gpu-sim.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +gpu-sim.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +gpu-sim.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h +gpu-sim.o: /usr/include/endian.h /usr/include/bits/endian.h +gpu-sim.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +gpu-sim.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +gpu-sim.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +gpu-sim.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +gpu-sim.o: /usr/include/math.h /usr/include/bits/huge_val.h +gpu-sim.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +gpu-sim.o: /usr/include/zlib.h /usr/include/zconf.h /usr/include/unistd.h +gpu-sim.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +gpu-sim.o: /usr/include/getopt.h ../option_parser.h shader.h +gpu-sim.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h +gpu-sim.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h +gpu-sim.o: /usr/include/bits/posix2_lim.h /usr/include/assert.h +gpu-sim.o: ../cuda-sim/ptx.tab.h ../cuda-sim/dram_callback.h gpu-cache.h +gpu-sim.o: ../abstract_hardware_model.h delayqueue.h stack.h dram.h +gpu-sim.o: mem_fetch.h addrdec.h gpu-misc.h icnt_wrapper.h dwf.h +gpu-sim.o: warp_tracker.h cflogger.h l2cache.h ../cuda-sim/ptx-stats.h +gpu-sim.o: ../intersim/statwraper.h ../debug.h ../abstract_hardware_model.h +gpu-sim.o: /usr/include/string.h mem_latency_stat.h +icnt_wrapper.o: icnt_wrapper.h /usr/include/assert.h /usr/include/features.h +icnt_wrapper.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +icnt_wrapper.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +icnt_wrapper.o: ../intersim/interconnect_interface.h ../intersim/flit.hpp +icnt_wrapper.o: ../intersim/booksim.hpp ../intersim/trafficmanager.hpp +icnt_wrapper.o: ../intersim/module.hpp ../intersim/config_utils.hpp +icnt_wrapper.o: /usr/include/stdio.h /usr/include/bits/types.h +icnt_wrapper.o: /usr/include/bits/typesizes.h /usr/include/libio.h +icnt_wrapper.o: /usr/include/_G_config.h /usr/include/wchar.h +icnt_wrapper.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +icnt_wrapper.o: ../intersim/network.hpp ../intersim/credit.hpp +icnt_wrapper.o: ../intersim/router.hpp ../intersim/buffer_state.hpp +icnt_wrapper.o: ../intersim/stats.hpp ../intersim/traffic.hpp +icnt_wrapper.o: ../intersim/routefunc.hpp ../intersim/outputset.hpp +icnt_wrapper.o: ../intersim/injection.hpp +l2cache.o: /usr/include/stdlib.h /usr/include/features.h +l2cache.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +l2cache.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +l2cache.o: /usr/include/sys/types.h /usr/include/bits/types.h +l2cache.o: /usr/include/bits/typesizes.h /usr/include/time.h +l2cache.o: /usr/include/endian.h /usr/include/bits/endian.h +l2cache.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +l2cache.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +l2cache.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +l2cache.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +l2cache.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h +l2cache.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +l2cache.o: /usr/include/bits/sys_errlist.h /usr/include/string.h +l2cache.o: ../tr1_hash_map.h ../option_parser.h mem_fetch.h shader.h +l2cache.o: /usr/include/math.h /usr/include/bits/huge_val.h +l2cache.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +l2cache.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h +l2cache.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h +l2cache.o: /usr/include/bits/posix2_lim.h /usr/include/assert.h +l2cache.o: ../cuda-sim/ptx.tab.h ../cuda-sim/dram_callback.h gpu-cache.h +l2cache.o: ../abstract_hardware_model.h delayqueue.h stack.h dram.h addrdec.h +l2cache.o: histogram.h l2cache.h ../intersim/statwraper.h +shader.o: shader.h /usr/include/stdio.h /usr/include/features.h +shader.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +shader.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +shader.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +shader.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +shader.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +shader.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h +shader.o: /usr/include/endian.h /usr/include/bits/endian.h +shader.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +shader.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +shader.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +shader.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +shader.o: /usr/include/math.h /usr/include/bits/huge_val.h +shader.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +shader.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h +shader.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h +shader.o: /usr/include/bits/posix2_lim.h /usr/include/assert.h +shader.o: ../cuda-sim/ptx.tab.h ../cuda-sim/dram_callback.h gpu-cache.h +shader.o: ../abstract_hardware_model.h delayqueue.h stack.h dram.h gpu-sim.h +shader.o: /usr/include/zlib.h /usr/include/zconf.h /usr/include/unistd.h +shader.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +shader.o: /usr/include/getopt.h ../option_parser.h mem_fetch.h addrdec.h +shader.o: dwf.h warp_tracker.h cflogger.h gpu-misc.h ../cuda-sim/ptx_sim.h +shader.o: ../cuda-sim/dram_callback.h ../cuda-sim/opcodes.h +shader.o: ../cuda-sim/opcodes.def ../cuda-sim/ptx-stats.h +shader.o: /usr/include/string.h +stack.o: stack.h ../abstract_hardware_model.h /usr/include/stdlib.h +stack.o: /usr/include/features.h /usr/include/sys/cdefs.h +stack.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h +stack.o: /usr/include/gnu/stubs-64.h /usr/include/sys/types.h +stack.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +stack.o: /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h +stack.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +stack.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +stack.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +stack.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +stack.o: /usr/include/assert.h +stat-tool.o: /usr/include/stdio.h /usr/include/features.h +stat-tool.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +stat-tool.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +stat-tool.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +stat-tool.o: /usr/include/libio.h /usr/include/_G_config.h +stat-tool.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +stat-tool.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h +stat-tool.o: /usr/include/sys/types.h /usr/include/time.h +stat-tool.o: /usr/include/endian.h /usr/include/bits/endian.h +stat-tool.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +stat-tool.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +stat-tool.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +stat-tool.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +stat-tool.o: /usr/include/assert.h /usr/include/zlib.h /usr/include/zconf.h +stat-tool.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h +stat-tool.o: /usr/include/bits/confname.h /usr/include/getopt.h histogram.h +stat-tool.o: ../abstract_hardware_model.h cflogger.h +visualizer.o: gpu-sim.h /usr/include/stdio.h /usr/include/features.h +visualizer.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +visualizer.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +visualizer.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +visualizer.o: /usr/include/libio.h /usr/include/_G_config.h +visualizer.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +visualizer.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h +visualizer.o: /usr/include/sys/types.h /usr/include/time.h +visualizer.o: /usr/include/endian.h /usr/include/bits/endian.h +visualizer.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +visualizer.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +visualizer.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +visualizer.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +visualizer.o: /usr/include/math.h /usr/include/bits/huge_val.h +visualizer.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +visualizer.o: /usr/include/zlib.h /usr/include/zconf.h /usr/include/unistd.h +visualizer.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +visualizer.o: /usr/include/getopt.h ../option_parser.h shader.h +visualizer.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h +visualizer.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h +visualizer.o: /usr/include/bits/posix2_lim.h /usr/include/assert.h +visualizer.o: ../cuda-sim/ptx.tab.h ../cuda-sim/dram_callback.h gpu-cache.h +visualizer.o: ../abstract_hardware_model.h delayqueue.h stack.h dram.h +visualizer.o: mem_fetch.h addrdec.h /usr/include/string.h +visualizer.o: ../gpgpu-sim/shader.h ../gpgpu-sim/mem_fetch.h +warp_tracker.o: warp_tracker.h ../abstract_hardware_model.h shader.h +warp_tracker.o: /usr/include/stdio.h /usr/include/features.h +warp_tracker.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +warp_tracker.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +warp_tracker.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +warp_tracker.o: /usr/include/libio.h /usr/include/_G_config.h +warp_tracker.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h +warp_tracker.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h +warp_tracker.o: /usr/include/sys/types.h /usr/include/time.h +warp_tracker.o: /usr/include/endian.h /usr/include/bits/endian.h +warp_tracker.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h +warp_tracker.o: /usr/include/bits/select.h /usr/include/bits/sigset.h +warp_tracker.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h +warp_tracker.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h +warp_tracker.o: /usr/include/math.h /usr/include/bits/huge_val.h +warp_tracker.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +warp_tracker.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h +warp_tracker.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h +warp_tracker.o: /usr/include/bits/posix2_lim.h /usr/include/assert.h +warp_tracker.o: ../cuda-sim/ptx.tab.h ../cuda-sim/dram_callback.h gpu-cache.h +warp_tracker.o: delayqueue.h stack.h dram.h diff --git a/src/gpgpu-sim/gpu-sim.cc b/src/gpgpu-sim/gpu-sim.cc index 2b4ebe3..1bec72f 100644 --- a/src/gpgpu-sim/gpu-sim.cc +++ b/src/gpgpu-sim/gpu-sim.cc @@ -82,6 +82,7 @@ #include "../cuda-sim/ptx-stats.h" #include "../intersim/statwraper.h" #include "../abstract_hardware_model.h" +#include "../debug.h" #include #include @@ -206,7 +207,6 @@ void check_time_vector_update(unsigned int uid,int slot ,long int latency,int ty void node_req_hist_clear(void *p); void node_req_hist_dump(void *p); void node_req_hist_update(void * p,int node, long long cycle); -static void gpgpu_debug(); /* functionally simulated memory */ extern struct mem_t *mem; @@ -1765,111 +1765,3 @@ void dump_pipeline() dump_pipeline_impl(0,-1,-1); } -/// interactive debugger - -static void gpgpu_debug() -{ - bool done=true; - - static bool single_step=true; - static unsigned next_brkpt=1; - static std::map breakpoints; - - /// if single stepping, go to interactive debugger - - if( single_step ) - done=false; - - /// check if we've reached a breakpoint - - for( std::map::iterator i=breakpoints.begin(); i!=breakpoints.end(); i++) { - unsigned num=i->first; - brk_pt &b=i->second; - if( b.is_watchpoint() ) { - unsigned addr = b.get_addr(); - unsigned new_value = read_location(addr); - if( new_value != b.get_value() ) { - printf( "GPGPU-Sim DBG: watch point %u triggered (old value=%x, new value=%x)\n", - num,b.get_value(),new_value ); - b.set_value(new_value); - done = false; - } - } else { - for( unsigned sid=0; sid < gpu_n_shader; sid++ ) { - inst_t *fvi = first_valid_thread(sc[sid]->pipeline_reg[IF_ID]); - if( !fvi ) continue; - if( thread_at_brkpt(fvi->ptx_thd_info, b) ) { - done = false; - printf("GPGPU-Sim DBG: reached breakpoint %u at %s (sm=%u, hwtid=%u)\n", - num, b.location().c_str(), sid, fvi->hw_thread_id ); - } - } - } - } - - /// enter interactive debugger loop - - while (!done) { - printf("(gpgpu-sim dbg) "); - fflush(stdout); - - char line[1024]; - fgets(line,1024,stdin); - - char *tok = strtok(line," \t\n"); - if( !strcmp(tok,"dp") ) { - int shader_num = 0; - tok = strtok(NULL," \t\n"); - sscanf(tok,"%d",&shader_num); - dump_pipeline_impl((0x40|0x4|0x1),shader_num,0); - printf("\n"); - fflush(stdout); - } else if( !strcmp(tok,"q") || !strcmp(tok,"quit") ) { - printf("\nreally quit GPGPU-Sim (y/n)?\n"); - fgets(line,1024,stdin); - tok = strtok(NULL," \t\n"); - if( !strcmp(tok,"y") ) { - exit(0); - } else { - printf("not quiting.\n"); - } - } else if( !strcmp(tok,"b") ) { - tok = strtok(NULL," \t\n"); - char brkpt[1024]; - sscanf(tok,"%s",brkpt); - tok = strtok(NULL," \t\n"); - unsigned uid; - sscanf(tok,"%u",&uid); - breakpoints[next_brkpt++] = brk_pt(brkpt,uid); - } else if( !strcmp(tok,"d") ) { - tok = strtok(NULL," \t\n"); - unsigned uid; - sscanf(tok,"%u",&uid); - breakpoints.erase(uid); - } else if( !strcmp(tok,"s") ) { - done = true; - } else if( !strcmp(tok,"c") ) { - single_step=false; - done = true; - } else if( !strcmp(tok,"w") ) { - tok = strtok(NULL," \t\n"); - unsigned addr; - sscanf(tok,"%x",&addr); - unsigned value = read_location(addr); - breakpoints[next_brkpt++] = brk_pt(addr,value); - } else if( !strcmp(tok,"h") ) { - printf("commands:\n"); - printf(" q - quit GPGPU-Sim\n"); - printf(" b : - set breakpoint\n"); - printf(" w - set watchpoint\n"); - printf(" del - delete breakpoint\n"); - printf(" s - single step one shader cycle (all cores)\n"); - printf(" c - continue simulation without single stepping\n"); - printf(" dp - display pipeline contents on SM \n"); - printf(" h - print this message\n"); - } else { - printf("\ncommand not understood.\n"); - } - fflush(stdout); - } -} diff --git a/src/gpgpu-sim/gpu-sim.h b/src/gpgpu-sim/gpu-sim.h index e30797e..27d83ad 100644 --- a/src/gpgpu-sim/gpu-sim.h +++ b/src/gpgpu-sim/gpu-sim.h @@ -112,5 +112,6 @@ void gpu_print_stat(); int mem_ctrl_full( int mc_id ); void dramqueue_latency_log_dump(); +void dump_pipeline_impl( int mask, int s, int m ); #endif diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h index 9f64da5..9dd7dc8 100644 --- a/src/gpgpu-sim/shader.h +++ b/src/gpgpu-sim/shader.h @@ -896,5 +896,7 @@ unsigned int max_cta_per_shader( shader_core_ctx_t *shader); #define WB_RT 6 #define ID_OC 7 +extern unsigned int gpu_n_shader; +extern shader_core_ctx_t **sc; #endif /* SHADER_H */ -- cgit v1.3