summaryrefslogtreecommitdiff
path: root/libcuda
diff options
context:
space:
mode:
authoraamir <[email protected]>2018-07-21 19:21:30 -0700
committeraamir <[email protected]>2018-07-21 19:21:30 -0700
commitb3ad8abea43b7d1e8887f57d6e30c5a40cf752a6 (patch)
treef357a9786c9aa4eea28cbe5ed85cd6a929737cb0 /libcuda
parente541026cfc0ee4be25e7093cb7ff3acfa3cbb6e7 (diff)
merging the changes of cutlass on negar tensorcore branch
Diffstat (limited to 'libcuda')
-rw-r--r--libcuda/cuda_runtime_api.cc42
1 files changed, 41 insertions, 1 deletions
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc
index cbe8a11..aa43ffa 100644
--- a/libcuda/cuda_runtime_api.cc
+++ b/libcuda/cuda_runtime_api.cc
@@ -952,7 +952,9 @@ __host__ cudaError_t CUDARTAPI cudaSetupArgument(const void *arg, size_t size, s
gpgpusim_ptx_assert( !g_cuda_launch_stack.empty(), "empty launch stack" );
kernel_config &config = g_cuda_launch_stack.back();
config.set_arg(arg,size,offset);
-
+ #if 0
+ printf("cudaSetupArgument:size%d,offset%d,sizeof(Arg[0])=%d)\n ",size,offset,sizeof(arg));
+ #endif
return g_last_cudaError = cudaSuccess;
}
@@ -980,6 +982,44 @@ __host__ cudaError_t CUDARTAPI cudaLaunch( const char *hostFun )
return g_last_cudaError = cudaSuccess;
}
+__host__ cudaError_t CUDARTAPI cudaLaunchKernel ( const char* hostFun, dim3 gridDim, dim3 blockDim, const void** args, size_t sharedMem, cudaStream_t stream )
+{
+ struct CUstream_st *s = (struct CUstream_st *)stream;
+ g_cuda_launch_stack.push_back( kernel_config(gridDim,blockDim,sharedMem,s) );
+
+
+ printf("cudaLaunchKernel:sizeof(Arg[0])=%d)\n ",sizeof(args[0]));
+ //gpgpusim_ptx_assert( !g_cuda_launch_stack.empty(), "empty launch stack" );
+ kernel_config &config = g_cuda_launch_stack.back();
+ config.set_arg(args[0],432,0);
+ printf("cudaLaunchParameter\n");
+ for(int i=0;i<108;i++){
+ printf("cudaLaunchParameter:%d:%08x\n",i,*(*((int **)args)+i));
+ }
+
+ CUctx_st* context = GPGPUSim_Context();
+ char *mode = getenv("PTX_SIM_MODE_FUNC");
+ if( mode )
+ sscanf(mode,"%u", &g_ptx_sim_mode);
+ gpgpusim_ptx_assert( !g_cuda_launch_stack.empty(), "empty launch stack" );
+ kernel_config config1 = g_cuda_launch_stack.back();
+ struct CUstream_st *stream1 = config1.get_stream();
+ printf("\nGPGPU-Sim PTX: cudaLaunch for 0x%p (mode=%s) on stream %u\n", hostFun,
+ g_ptx_sim_mode?"functional simulation":"performance simulation", stream1?stream1->get_uid():0 );
+ kernel_info_t *grid = gpgpu_cuda_ptx_sim_init_grid(hostFun,config1.get_args(),config1.grid_dim(),config1.block_dim(),context);
+ std::string kname = grid->name();
+ dim3 gridDim1 = config1.grid_dim();
+ dim3 blockDim1 = config1.block_dim();
+ printf("GPGPU-Sim PTX: pushing kernel \'%s\' to stream %u, gridDim= (%u,%u,%u) blockDim = (%u,%u,%u) \n",
+ kname.c_str(), stream1?stream1->get_uid():0, gridDim1.x,gridDim1.y,gridDim1.z,blockDim1.x,blockDim1.y,blockDim1.z );
+ stream_operation op(grid,g_ptx_sim_mode,stream1);
+ g_stream_manager->push(op);
+ g_cuda_launch_stack.pop_back();
+ return g_last_cudaError = cudaSuccess;
+
+
+}
+
/*******************************************************************************
* *
* *