[Beignet] [PATCH 11/13] Runtime: Add fp64 enable function for platform.

junyan.he at inbox.com junyan.he at inbox.com
Fri Sep 18 02:58:22 PDT 2015


From: Junyan He <junyan.he at linux.intel.com>

We enable fp64 extension just on BDW platform. The
platforms before Gen7 will not have fp64 support.
We will enable fp64 on gen8 later platforms after
this feature is stable.

Signed-off-by: Junyan He <junyan.he at linux.intel.com>
---
 src/cl_device_id.c  |  3 +++
 src/cl_extensions.c | 21 +++++++++++++++++++++
 src/cl_extensions.h |  2 ++
 3 files changed, 26 insertions(+)

diff --git a/src/cl_device_id.c b/src/cl_device_id.c
index 1778292..59798aa 100644
--- a/src/cl_device_id.c
+++ b/src/cl_device_id.c
@@ -407,6 +407,7 @@ brw_gt1_break:
       intel_brw_gt1_device.platform = cl_get_platform_default();
       ret = &intel_brw_gt1_device;
       cl_intel_platform_enable_fp16_extension(ret);
+      cl_intel_platform_enable_fp64_extension(ret);
       break;
 
     case PCI_CHIP_BROADWLL_M_GT2:
@@ -424,6 +425,7 @@ brw_gt2_break:
       intel_brw_gt2_device.platform = cl_get_platform_default();
       ret = &intel_brw_gt2_device;
       cl_intel_platform_enable_fp16_extension(ret);
+      cl_intel_platform_enable_fp64_extension(ret);
       break;
 
     case PCI_CHIP_BROADWLL_M_GT3:
@@ -443,6 +445,7 @@ brw_gt3_break:
       intel_brw_gt3_device.platform = cl_get_platform_default();
       ret = &intel_brw_gt3_device;
       cl_intel_platform_enable_fp16_extension(ret);
+      cl_intel_platform_enable_fp64_extension(ret);
       break;
 
     case PCI_CHIP_CHV_0:
diff --git a/src/cl_extensions.c b/src/cl_extensions.c
index 3eb303f..35e99b2 100644
--- a/src/cl_extensions.c
+++ b/src/cl_extensions.c
@@ -125,6 +125,27 @@ cl_intel_platform_enable_fp16_extension(cl_device_id device)
 }
 
 LOCAL void
+cl_intel_platform_enable_fp64_extension(cl_device_id device)
+{
+  cl_extensions_t new_ext;
+  cl_platform_id pf = device->platform;
+  int id;
+  assert(pf);
+
+  memcpy(&new_ext, pf->internal_extensions, sizeof(new_ext));
+
+  for(id = BASE_EXT_START_ID; id <= BASE_EXT_END_ID; id++) {
+    if (id == EXT_ID(khr_fp64))
+      new_ext.extensions[id].base.ext_enabled = 1;
+  }
+
+  process_extension_str(&new_ext);
+
+  memcpy((char*)device->extensions, new_ext.ext_str, sizeof(device->extensions));
+  device->extensions_sz = strlen(new_ext.ext_str) + 1;
+}
+
+LOCAL void
 cl_intel_platform_extension_init(cl_platform_id intel_platform)
 {
   static int ext_initialized = 0;
diff --git a/src/cl_extensions.h b/src/cl_extensions.h
index b4544e2..23cd9df 100644
--- a/src/cl_extensions.h
+++ b/src/cl_extensions.h
@@ -97,4 +97,6 @@ cl_intel_platform_extension_init(cl_platform_id intel_platform);
 extern void
 cl_intel_platform_enable_fp16_extension(cl_device_id device);
 extern void
+cl_intel_platform_enable_fp64_extension(cl_device_id device);
+extern void
 cl_intel_platform_get_default_extension(cl_device_id device);
-- 
1.9.1





More information about the Beignet mailing list