summaryrefslogtreecommitdiff
path: root/src/gpgpusim_entrypoint.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpusim_entrypoint.cc')
-rw-r--r--src/gpgpusim_entrypoint.cc38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/gpgpusim_entrypoint.cc b/src/gpgpusim_entrypoint.cc
index f6dea90..8579f08 100644
--- a/src/gpgpusim_entrypoint.cc
+++ b/src/gpgpusim_entrypoint.cc
@@ -87,44 +87,44 @@ sem_t g_sim_signal_finish;
time_t g_simulation_starttime;
pthread_t g_simulation_thread;
-gpgpu_sim g_the_gpu;
+gpgpu_sim_config g_the_gpu_config;
+gpgpu_sim *g_the_gpu;
static void print_simulation_time();
void *gpgpu_sim_thread(void*)
{
+ kernel_info_t *kernel = NULL;
do {
sem_wait(&g_sim_signal_start);
- g_the_gpu.next_grid();
- g_the_gpu.run_gpu_sim();
- print_simulation_time();
+ kernel = g_the_gpu->next_grid();
+ if( kernel ) {
+ g_the_gpu_config.set_max_cta(*kernel);
+ g_the_gpu->run_gpu_sim();
+ print_simulation_time();
+ }
sem_post(&g_sim_signal_finish);
- } while(1);
+ } while(kernel);
return NULL;
}
gpgpu_sim *gpgpu_ptx_sim_init_perf()
{
+ srand(1);
print_splash();
read_sim_environment_variables();
read_parser_environment_variables();
option_parser_t opp = option_parser_create();
+
icnt_reg_options(opp);
- g_the_gpu.reg_options(opp); // register GPU microrachitecture options
+ g_the_gpu_config.reg_options(opp); // register GPU microrachitecture options
ptx_reg_options(opp);
option_parser_cmdline(opp, sg_argc, sg_argv); // parse configuration options
-
- srand(1);
-
- // Open instructions debug output file for writing
- if(g_ptx_inst_debug_to_file != 0) {
- ptx_inst_debug_file = fopen(g_ptx_inst_debug_file, "w");
- }
-
fprintf(stdout, "GPGPU-Sim: Configuration options:\n\n");
option_parser_print(opp, stdout);
+ g_the_gpu_config.init();
- g_the_gpu.init_gpu();
+ g_the_gpu = new gpgpu_sim(g_the_gpu_config);
g_simulation_starttime = time((time_t *)NULL);
@@ -132,7 +132,7 @@ gpgpu_sim *gpgpu_ptx_sim_init_perf()
sem_init(&g_sim_signal_finish,0,0);
pthread_create(&g_simulation_thread,NULL,gpgpu_sim_thread,NULL);
- return &g_the_gpu;
+ return g_the_gpu;
}
void print_simulation_time()
@@ -149,7 +149,7 @@ void print_simulation_time()
fflush(stderr);
printf("\n\ngpgpu_simulation_time = %u days, %u hrs, %u min, %u sec (%u sec)\n",
(unsigned)d, (unsigned)h, (unsigned)m, (unsigned)s, (unsigned)difference );
- printf("gpgpu_simulation_rate = %u (inst/sec)\n", (unsigned)(g_the_gpu.gpu_tot_sim_insn / difference) );
+ printf("gpgpu_simulation_rate = %u (inst/sec)\n", (unsigned)(g_the_gpu->gpu_tot_sim_insn / difference) );
printf("gpgpu_simulation_rate = %u (cycle/sec)\n", (unsigned)(gpu_tot_sim_cycle / difference) );
fflush(stdout);
}
@@ -159,7 +159,7 @@ int gpgpu_cuda_ptx_sim_main_perf( kernel_info_t grid,
struct dim3 blockDim,
gpgpu_ptx_sim_arg_list_t grid_params )
{
- g_the_gpu.launch(grid);
+ g_the_gpu->launch(grid);
sem_post(&g_sim_signal_start);
sem_wait(&g_sim_signal_finish);
return 0;
@@ -170,7 +170,7 @@ int gpgpu_opencl_ptx_sim_main_perf( kernel_info_t grid,
struct dim3 blockDim,
gpgpu_ptx_sim_arg_list_t grid_params )
{
- g_the_gpu.launch(grid);
+ g_the_gpu->launch(grid);
sem_post(&g_sim_signal_start);
sem_wait(&g_sim_signal_finish);
return 0;