summaryrefslogtreecommitdiff
path: root/libcuda/cuda_runtime_api.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libcuda/cuda_runtime_api.cc')
-rw-r--r--libcuda/cuda_runtime_api.cc64
1 files changed, 50 insertions, 14 deletions
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc
index 14e3329..f3b1113 100644
--- a/libcuda/cuda_runtime_api.cc
+++ b/libcuda/cuda_runtime_api.cc
@@ -479,6 +479,8 @@ void cuda_runtime_api::cuobjdumpRegisterFatBinary(unsigned int handle, const cha
fatbinmap[handle] = filename;
}
+
+
/*******************************************************************************
* Add internal cuda runtime API call to accept gpgpu_context *
*******************************************************************************/
@@ -1977,20 +1979,21 @@ __host__ cudaError_t CUDARTAPI cudaLaunch( const char *hostFun )
__host__ cudaError_t CUDARTAPI cudaLaunchKernel ( const char* hostFun, dim3 gridDim, dim3 blockDim, const void** args, size_t sharedMem, cudaStream_t stream )
{
- if(g_debug_execution >= 3){
- announce_call(__my_func__);
- }
- CUctx_st *context = GPGPUSim_Context();
- function_info *entry = context->get_kernel(hostFun);
-
- cudaConfigureCallInternal(gridDim, blockDim, sharedMem, stream);
- for(unsigned i = 0; i < entry->num_args(); i++){
- std::pair<size_t, unsigned> p = entry->get_param_config(i);
- cudaSetupArgumentInternal(args[i], p.first, p.second);
- }
+ if(g_debug_execution >= 3){
+ announce_call(__my_func__);
+ }
+ CUctx_st *context = GPGPUSim_Context();
+ function_info *entry = context->get_kernel(hostFun);
+#if CUDART_VERSION < 10000
+ cudaConfigureCallInternal(gridDim, blockDim, sharedMem, stream);
+#endif
+ for(unsigned i = 0; i < entry->num_args(); i++){
+ std::pair<size_t, unsigned> p = entry->get_param_config(i);
+ cudaSetupArgumentInternal(args[i], p.first, p.second);
+ }
- cudaLaunchInternal(hostFun);
- return g_last_cudaError = cudaSuccess;
+ cudaLaunchInternal(hostFun);
+ return g_last_cudaError = cudaSuccess;
}
@@ -2843,9 +2846,43 @@ extern "C" {
void** CUDARTAPI __cudaRegisterFatBinary( void *fatCubin )
{
+ if(g_debug_execution >= 3){
+ announce_call(__my_func__);
+ }
return cudaRegisterFatBinaryInternal(fatCubin);
}
+void CUDARTAPI __cudaRegisterFatBinaryEnd( void **fatCubinHandle )
+{
+ if(g_debug_execution >= 3){
+ announce_call(__my_func__);
+ }
+}
+
+unsigned CUDARTAPI __cudaPushCallConfiguration(dim3 gridDim,
+ dim3 blockDim,
+ size_t sharedMem = 0,
+ struct CUstream_st *stream = 0)
+{
+ if(g_debug_execution >= 3){
+ announce_call(__my_func__);
+ }
+ cudaConfigureCallInternal(gridDim, blockDim, sharedMem, stream);
+}
+
+cudaError_t CUDARTAPI __cudaPopCallConfiguration(
+ dim3 *gridDim,
+ dim3 *blockDim,
+ size_t *sharedMem,
+ void *stream
+)
+{
+ if(g_debug_execution >= 3){
+ announce_call(__my_func__);
+ }
+ return g_last_cudaError = cudaSuccess;
+}
+
void CUDARTAPI __cudaRegisterFunction(
void **fatCubinHandle,
const char *hostFun,
@@ -2902,7 +2939,6 @@ void __cudaUnregisterFatBinary(void **fatCubinHandle)
if(g_debug_execution >= 3){
announce_call(__my_func__);
}
- ;
}
cudaError_t cudaDeviceReset ( void ) {