summaryrefslogtreecommitdiff
path: root/src/trace-driven/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/trace-driven/main.cc')
-rw-r--r--src/trace-driven/main.cc163
1 files changed, 0 insertions, 163 deletions
diff --git a/src/trace-driven/main.cc b/src/trace-driven/main.cc
deleted file mode 100644
index f12d39a..0000000
--- a/src/trace-driven/main.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// developed by Mahmoud Khairy, Purdue Univ
-
-#include <math.h>
-#include <stdio.h>
-#include <time.h>
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "../../libcuda/gpgpu_context.h"
-#include "../abstract_hardware_model.h"
-#include "../cuda-sim/cuda-sim.h"
-#include "../gpgpu-sim/gpu-sim.h"
-#include "../gpgpu-sim/icnt_wrapper.h"
-#include "../gpgpusim_entrypoint.h"
-#include "../option_parser.h"
-#include "ISA_Def/trace_opcode.h"
-#include "trace_driven.h"
-
-/* TO DO:
- * NOTE: the current version of trace-driven is functionally working fine,
- * but we still need to improve traces compression and simulation speed.
- * This includes:
- * 1- Prefetch concurrent thread that prefetches traces from disk (to not be
- * limited by disk speed) 2- traces compression format a. cfg format and remove
- * thread/block Id from the head b. using zlib library to save in binary format
- *
- * 3- Efficient memory improvement (save string not objects - parse only 10 in
- * the buffer) 4- Seeking capability - thread scheduler (save tb index and warp
- * index info in the traces header) 5- Get rid off traces intermediate files -
- * change the tracer
- */
-gpgpu_sim* gpgpu_trace_sim_init_perf_model(int argc, const char* argv[],
- gpgpu_context* m_gpgpu_context,
- class trace_config* m_config);
-
-int main(int argc, const char** argv) {
- gpgpu_context* m_gpgpu_context = new gpgpu_context();
- trace_config tconfig;
-
- gpgpu_sim* m_gpgpu_sim =
- gpgpu_trace_sim_init_perf_model(argc, argv, m_gpgpu_context, &tconfig);
- m_gpgpu_sim->init();
-
- // for each kernel
- // load file
- // parse and create kernel info
- // launch
- // while loop till the end of the end kernel execution
- // prints stats
-
- trace_parser tracer(tconfig.get_traces_filename(), m_gpgpu_sim,
- m_gpgpu_context);
- tconfig.parse_config();
-
- std::vector<std::string> commandlist = tracer.parse_kernellist_file();
-
- for (unsigned i = 0; i < commandlist.size(); ++i) {
- trace_kernel_info_t* kernel_info = NULL;
- if (commandlist[i].substr(0, 6) == "Memcpy") {
- size_t addre, Bcount;
- tracer.parse_memcpy_info(commandlist[i], addre, Bcount);
- std::cout << commandlist[i] << std::endl;
- m_gpgpu_sim->perf_memcpy_to_gpu(addre, Bcount);
- continue;
- } else {
- kernel_info = tracer.parse_kernel_info(commandlist[i], &tconfig);
- m_gpgpu_sim->launch(kernel_info);
- }
-
- bool active = false;
- bool sim_cycles = false;
- bool break_limit = false;
-
- do {
- if (!m_gpgpu_sim->active()) break;
-
- // performance simulation
- if (m_gpgpu_sim->active()) {
- m_gpgpu_sim->cycle();
- sim_cycles = true;
- m_gpgpu_sim->deadlock_check();
- } else {
- if (m_gpgpu_sim->cycle_insn_cta_max_hit()) {
- m_gpgpu_context->the_gpgpusim->g_stream_manager
- ->stop_all_running_kernels();
- break_limit = true;
- }
- }
-
- active = m_gpgpu_sim->active();
-
- } while (active);
-
- if (kernel_info) {
- tracer.kernel_finalizer(kernel_info);
- m_gpgpu_sim->print_stats();
- }
-
- if (sim_cycles) {
- m_gpgpu_sim->update_stats();
- m_gpgpu_context->print_simulation_time();
- }
-
- if (break_limit) {
- printf(
- "GPGPU-Sim: ** break due to reaching the maximum cycles (or "
- "instructions) **\n");
- fflush(stdout);
- exit(1);
- }
- }
-
- // we print this message to inform the gpgpu-simulation stats_collect script
- // that we are done
- printf("GPGPU-Sim: *** simulation thread exiting ***\n");
- printf("GPGPU-Sim: *** exit detected ***\n");
-
- return 1;
-}
-
-gpgpu_sim* gpgpu_trace_sim_init_perf_model(int argc, const char* argv[],
- gpgpu_context* m_gpgpu_context,
- trace_config* m_config) {
- srand(1);
- print_splash();
-
- option_parser_t opp = option_parser_create();
-
- m_gpgpu_context->ptx_reg_options(opp);
- m_gpgpu_context->func_sim->ptx_opcocde_latency_options(opp);
-
- icnt_reg_options(opp);
-
- m_gpgpu_context->the_gpgpusim->g_the_gpu_config =
- new gpgpu_sim_config(m_gpgpu_context);
- m_gpgpu_context->the_gpgpusim->g_the_gpu_config->reg_options(
- opp); // register GPU microrachitecture options
- m_config->reg_options(opp);
-
- option_parser_cmdline(opp, argc, argv); // parse configuration options
- fprintf(stdout, "GPGPU-Sim: Configuration options:\n\n");
- option_parser_print(opp, stdout);
- // Set the Numeric locale to a standard locale where a decimal point is a
- // "dot" not a "comma" so it does the parsing correctly independent of the
- // system environment variables
- assert(setlocale(LC_NUMERIC, "C"));
- m_gpgpu_context->the_gpgpusim->g_the_gpu_config->init();
-
- m_gpgpu_context->the_gpgpusim->g_the_gpu = new trace_gpgpu_sim(
- *(m_gpgpu_context->the_gpgpusim->g_the_gpu_config), m_gpgpu_context);
-
- m_gpgpu_context->the_gpgpusim->g_stream_manager =
- new stream_manager((m_gpgpu_context->the_gpgpusim->g_the_gpu),
- m_gpgpu_context->func_sim->g_cuda_launch_blocking);
-
- m_gpgpu_context->the_gpgpusim->g_simulation_starttime = time((time_t*)NULL);
-
- return m_gpgpu_context->the_gpgpusim->g_the_gpu;
-}