[Beignet] [PATCH 15/19] OCL20: Add runtime functions to get the device enqueue info.

Yang Rong rong.r.yang at intel.com
Mon Nov 28 11:32:41 UTC 2016


Add two functions gbe_kernel_use_device_enqueue and
gbe_program_get_device_enqueue_kernel_name.

Signed-off-by: Yang Rong <rong.r.yang at intel.com>
Reviewed-by: Pan Xiuli <xiuli.pan at intel.com>
---
 backend/src/backend/program.cpp     | 16 ++++++++++++++++
 backend/src/gbe_bin_interpreter.cpp |  2 ++
 src/cl_gbe_loader.cpp               | 10 ++++++++++
 src/cl_gbe_loader.h                 |  2 ++
 4 files changed, 30 insertions(+)

diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp
index dcbaaf4..808974d 100644
--- a/backend/src/backend/program.cpp
+++ b/backend/src/backend/program.cpp
@@ -1266,6 +1266,12 @@ EXTEND_QUOTE:
     return program->getKernelNum();
   }
 
+  const static char* programGetDeviceEnqueueKernelName(gbe_program gbeProgram, uint32_t index) {
+    if (gbeProgram == NULL) return 0;
+    const gbe::Program *program = (const gbe::Program*) gbeProgram;
+    return program->getDeviceEnqueueKernelName(index);
+  }
+
   static gbe_kernel programGetKernelByName(gbe_program gbeProgram, const char *name) {
     if (gbeProgram == NULL) return NULL;
     const gbe::Program *program = (gbe::Program*) gbeProgram;
@@ -1431,6 +1437,12 @@ EXTEND_QUOTE:
     return ps->getPrintfNum();
   }
 
+  static uint32_t kernelUseDeviceEnqueue(gbe_kernel gbeKernel) {
+    if (gbeKernel == NULL) return 0;
+    const gbe::Kernel *kernel = (const gbe::Kernel*) gbeKernel;
+    return kernel->getUseDeviceEnqueue();
+  }
+
   static void* kernelDupPrintfSet(gbe_kernel gbeKernel) {
     if (gbeKernel == NULL) return NULL;
     const gbe::Kernel *kernel = (const gbe::Kernel*) gbeKernel;
@@ -1516,6 +1528,7 @@ GBE_EXPORT_SYMBOL gbe_program_delete_cb *gbe_program_delete = NULL;
 GBE_EXPORT_SYMBOL gbe_program_get_kernel_num_cb *gbe_program_get_kernel_num = NULL;
 GBE_EXPORT_SYMBOL gbe_program_get_kernel_by_name_cb *gbe_program_get_kernel_by_name = NULL;
 GBE_EXPORT_SYMBOL gbe_program_get_kernel_cb *gbe_program_get_kernel = NULL;
+GBE_EXPORT_SYMBOL gbe_program_get_device_enqueue_kernel_name_cb *gbe_program_get_device_enqueue_kernel_name = NULL;
 GBE_EXPORT_SYMBOL gbe_kernel_get_name_cb *gbe_kernel_get_name = NULL;
 GBE_EXPORT_SYMBOL gbe_kernel_get_attributes_cb *gbe_kernel_get_attributes = NULL;
 GBE_EXPORT_SYMBOL gbe_kernel_get_code_cb *gbe_kernel_get_code = NULL;
@@ -1548,6 +1561,7 @@ GBE_EXPORT_SYMBOL gbe_dup_printfset_cb *gbe_dup_printfset = NULL;
 GBE_EXPORT_SYMBOL gbe_get_printf_buf_bti_cb *gbe_get_printf_buf_bti = NULL;
 GBE_EXPORT_SYMBOL gbe_release_printf_info_cb *gbe_release_printf_info = NULL;
 GBE_EXPORT_SYMBOL gbe_output_printf_cb *gbe_output_printf = NULL;
+GBE_EXPORT_SYMBOL gbe_kernel_use_device_enqueue_cb *gbe_kernel_use_device_enqueue = NULL;
 
 #ifdef GBE_COMPILER_AVAILABLE
 namespace gbe
@@ -1567,6 +1581,7 @@ namespace gbe
       gbe_program_clean_llvm_resource = gbe::programCleanLlvmResource;
       gbe_program_delete = gbe::programDelete;
       gbe_program_get_kernel_num = gbe::programGetKernelNum;
+      gbe_program_get_device_enqueue_kernel_name = gbe::programGetDeviceEnqueueKernelName;
       gbe_program_get_kernel_by_name = gbe::programGetKernelByName;
       gbe_program_get_kernel = gbe::programGetKernel;
       gbe_kernel_get_name = gbe::kernelGetName;
@@ -1601,6 +1616,7 @@ namespace gbe
       gbe_dup_printfset = gbe::kernelDupPrintfSet;
       gbe_release_printf_info = gbe::kernelReleasePrintfSet;
       gbe_output_printf = gbe::kernelOutputPrintf;
+      gbe_kernel_use_device_enqueue = gbe::kernelUseDeviceEnqueue;
       genSetupCallBacks();
     }
 
diff --git a/backend/src/gbe_bin_interpreter.cpp b/backend/src/gbe_bin_interpreter.cpp
index dd3ce01..64cacd9 100644
--- a/backend/src/gbe_bin_interpreter.cpp
+++ b/backend/src/gbe_bin_interpreter.cpp
@@ -40,6 +40,7 @@ struct BinInterpCallBackInitializer
     gbe_program_get_kernel_num = gbe::programGetKernelNum;
     gbe_program_get_kernel_by_name = gbe::programGetKernelByName;
     gbe_program_get_kernel = gbe::programGetKernel;
+    gbe_program_get_device_enqueue_kernel_name = gbe::programGetDeviceEnqueueKernelName;
     gbe_kernel_get_code_size = gbe::kernelGetCodeSize;
     gbe_kernel_get_code = gbe::kernelGetCode;
     gbe_kernel_get_arg_num = gbe::kernelGetArgNum;
@@ -77,6 +78,7 @@ struct BinInterpCallBackInitializer
     gbe_dup_printfset = gbe::kernelDupPrintfSet;
     gbe_release_printf_info = gbe::kernelReleasePrintfSet;
     gbe_output_printf = gbe::kernelOutputPrintf;
+    gbe_kernel_use_device_enqueue = gbe::kernelUseDeviceEnqueue;
   }
 
   ~BinInterpCallBackInitializer() {
diff --git a/src/cl_gbe_loader.cpp b/src/cl_gbe_loader.cpp
index 3736c86..f190b0d 100644
--- a/src/cl_gbe_loader.cpp
+++ b/src/cl_gbe_loader.cpp
@@ -44,6 +44,7 @@ gbe_program_delete_cb *interp_program_delete = NULL;
 gbe_program_get_kernel_num_cb *interp_program_get_kernel_num = NULL;
 gbe_program_get_kernel_by_name_cb *interp_program_get_kernel_by_name = NULL;
 gbe_program_get_kernel_cb *interp_program_get_kernel = NULL;
+gbe_program_get_device_enqueue_kernel_name_cb *interp_program_get_device_enqueue_kernel_name = NULL;
 gbe_kernel_get_name_cb *interp_kernel_get_name = NULL;
 gbe_kernel_get_attributes_cb *interp_kernel_get_attributes = NULL;
 gbe_kernel_get_code_cb *interp_kernel_get_code = NULL;
@@ -76,6 +77,7 @@ gbe_dup_printfset_cb* interp_dup_printfset = NULL;
 gbe_release_printf_info_cb* interp_release_printf_info = NULL;
 gbe_output_printf_cb* interp_output_printf = NULL;
 gbe_kernel_get_arg_info_cb *interp_kernel_get_arg_info = NULL;
+gbe_kernel_use_device_enqueue_cb *interp_kernel_use_device_enqueue = NULL;
 
 struct GbeLoaderInitializer
 {
@@ -137,6 +139,10 @@ struct GbeLoaderInitializer
     if (interp_program_get_kernel == NULL)
       return false;
 
+    interp_program_get_device_enqueue_kernel_name = *(gbe_program_get_device_enqueue_kernel_name_cb**)dlsym(dlhInterp, "gbe_program_get_device_enqueue_kernel_name");
+    if (interp_program_get_device_enqueue_kernel_name == NULL)
+      return false;
+
     interp_kernel_get_name = *(gbe_kernel_get_name_cb**)dlsym(dlhInterp, "gbe_kernel_get_name");
     if (interp_kernel_get_name == NULL)
       return false;
@@ -265,6 +271,10 @@ struct GbeLoaderInitializer
     if (interp_kernel_get_arg_info == NULL)
       return false;
 
+    interp_kernel_use_device_enqueue = *(gbe_kernel_use_device_enqueue_cb**)dlsym(dlhInterp, "gbe_kernel_use_device_enqueue");
+    if (interp_kernel_use_device_enqueue == NULL)
+      return false;
+
     return true;
   }
 
diff --git a/src/cl_gbe_loader.h b/src/cl_gbe_loader.h
index fde56ce..df885d2 100644
--- a/src/cl_gbe_loader.h
+++ b/src/cl_gbe_loader.h
@@ -44,6 +44,7 @@ extern gbe_program_delete_cb *interp_program_delete;
 extern gbe_program_get_kernel_num_cb *interp_program_get_kernel_num;
 extern gbe_program_get_kernel_by_name_cb *interp_program_get_kernel_by_name;
 extern gbe_program_get_kernel_cb *interp_program_get_kernel;
+extern gbe_program_get_device_enqueue_kernel_name_cb *interp_program_get_device_enqueue_kernel_name;
 extern gbe_kernel_get_name_cb *interp_kernel_get_name;
 extern gbe_kernel_get_attributes_cb *interp_kernel_get_attributes;
 extern gbe_kernel_get_code_cb *interp_kernel_get_code;
@@ -76,6 +77,7 @@ extern gbe_dup_printfset_cb* interp_dup_printfset;
 extern gbe_release_printf_info_cb* interp_release_printf_info;
 extern gbe_output_printf_cb* interp_output_printf;
 extern gbe_kernel_get_arg_info_cb *interp_kernel_get_arg_info;
+extern gbe_kernel_use_device_enqueue_cb * interp_kernel_use_device_enqueue;
 
 int CompilerSupported();
 #ifdef __cplusplus
-- 
2.1.4



More information about the Beignet mailing list