summaryrefslogtreecommitdiff
path: root/src/cuda-sim/cuda_device_runtime.cc
diff options
context:
space:
mode:
authorJin Wang <[email protected]>2014-11-15 05:44:03 -0500
committerJin Wang <[email protected]>2016-07-06 02:17:18 -0400
commitb70a5a69fa14cc01f707b910f8f021e36067922f (patch)
treea2d3181a9671594b9691f38c0f591c5e95885260 /src/cuda-sim/cuda_device_runtime.cc
parenta31392370bc7b23e115160b170e95b117597ebc4 (diff)
ADD: print kernel parameter size footprint. BUG: concurrent kernels on same shader, should use hw_cta_id to store shared mem info
Diffstat (limited to 'src/cuda-sim/cuda_device_runtime.cc')
-rw-r--r--src/cuda-sim/cuda_device_runtime.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cuda-sim/cuda_device_runtime.cc b/src/cuda-sim/cuda_device_runtime.cc
index 1b8c8d9..66cd063 100644
--- a/src/cuda-sim/cuda_device_runtime.cc
+++ b/src/cuda-sim/cuda_device_runtime.cc
@@ -59,6 +59,8 @@ public:
std::map<void *, device_launch_config_t> g_cuda_device_launch_param_map;
std::list<device_launch_operation_t> g_cuda_device_launch_op;
extern stream_manager *g_stream_manager;
+unsigned long long g_total_param_size = 0;
+unsigned long long g_max_total_param_size = 0;
//Handling device runtime api:
//void * cudaGetParameterBufferV2(void *func, dim3 gridDimension, dim3 blockDimension, unsigned int sharedMemSize)
@@ -111,7 +113,10 @@ void gpgpusim_cuda_getParameterBufferV2(const ptx_instruction * pI, ptx_thread_i
//get total child kernel argument size and malloc buffer in global memory
unsigned child_kernel_arg_size = child_kernel_entry->get_args_aligned_size();
void * param_buffer = thread->get_gpu()->gpu_malloc(child_kernel_arg_size);
+ g_total_param_size += ((child_kernel_arg_size + 255) / 256 * 256);
DEV_RUNTIME_REPORT("child kernel arg size total " << child_kernel_arg_size << ", parameter buffer allocated at " << param_buffer);
+ if(g_total_param_size > g_max_total_param_size)
+ g_max_total_param_size = g_total_param_size;
//store param buffer address and launch config
device_launch_config_t device_launch_config(grid_dim, block_dim, shared_mem, child_kernel_entry);
@@ -176,7 +181,7 @@ void gpgpusim_cuda_launchDeviceV2(const ptx_instruction * pI, ptx_thread_info *
//create child kernel_info_t and index it with parameter_buffer address
device_grid = new kernel_info_t(config.grid_dim, config.block_dim, device_kernel_entry);
- device_grid->launch_cycle = gpu_sim_cycle;
+ device_grid->launch_cycle = gpu_sim_cycle + gpu_tot_sim_cycle;
kernel_info_t & parent_grid = thread->get_kernel();
DEV_RUNTIME_REPORT("child kernel launched by " << parent_grid.name() << ", cta (" <<
thread->get_ctaid().x << ", " << thread->get_ctaid().y << ", " << thread->get_ctaid().z <<