From ce5d606cb1e45b948b2f494b9fbc8c7d9254d1ba Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Keck <jean-baptiste.keck@imag.fr>
Date: Sun, 18 Mar 2018 18:55:28 +0100
Subject: [PATCH] fixed array tests

---
 .../device/opencl/opencl_array_backend.py     | 10 +++++----
 hysop/core/arrays/tests/test_array.py         | 22 ++++++++++---------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/hysop/backend/device/opencl/opencl_array_backend.py b/hysop/backend/device/opencl/opencl_array_backend.py
index 15cbbe2ed..4bff1cfa9 100644
--- a/hysop/backend/device/opencl/opencl_array_backend.py
+++ b/hysop/backend/device/opencl/opencl_array_backend.py
@@ -41,13 +41,12 @@ class _ElementwiseKernel(object):
     """
     def __init__(self, context, arguments, operation, 
                        name='elementwise', preamble='', options=[],
-                      **kargs):
+                      **kwds):
         self.kernel = clElementwise.ElementwiseKernel(context=context, arguments=arguments, 
                                                       operation=operation, name=name, 
                                                       preamble=preamble, options=options)
-    def __call__(self, wait_for, args, **kargs):
-        return self.kernel.__call__(wait_for=wait_for, *args)
-    
+    def __call__(self, wait_for, args, **kwds):
+        return self.kernel.__call__(wait_for=wait_for, queue=kwds.get('queue',None), *args)
     
     def to_kernel_launcher(self, name, wait_for, queue, args, **kwds):
         """Build an _OpenClElementWiseKernelLauncher from self."""
@@ -889,6 +888,9 @@ class OpenClArrayBackend(ArrayBackend):
         if (shape is None):
             msg='No OpenClArray argument was found in ikargs and okargs.'
             raise ValueError(msg)
+        if (queue is None):
+            msg='Queue has not been specified.'
+            raise ValueError(msg)
         
         alloc_dtypes = tuple([match_dtype(dtype,alloc_dtypes[i]) \
                 for i in xrange(len(okargs))])
diff --git a/hysop/core/arrays/tests/test_array.py b/hysop/core/arrays/tests/test_array.py
index c470124a2..39eaf54d0 100644
--- a/hysop/core/arrays/tests/test_array.py
+++ b/hysop/core/arrays/tests/test_array.py
@@ -465,11 +465,9 @@ class TestArray(object):
         
         class TestContext(object):
             def __init__(self, opname, input_constraints, variables):
-
                 self.opname  = opname
-
                 
-                # if there is a specific constrain we copy everything
+                # if there is a specific constraint we copy everything
                 dtypes = {}
                 if opname in input_constraints:
                     for vname,vargs in variables.iteritems():
@@ -526,9 +524,13 @@ class TestArray(object):
                             r1 = r1.astype(np.float16)
                     if r0.dtype==np.bool:
                         r1 = r1.astype(np.bool)
-
-                l2   = np.sqrt(np.nansum((r0-r1)*np.conj(r0-r1)) / r0.size)
-                linf = np.nanmax(np.abs(r0-r1))
+                
+                if (r0.dtype == np.bool) and (r1.dtype == np.bool):
+                    l2   = np.sqrt(np.nansum(r0^r1)) / r0.size
+                    linf = np.nanmax(r0^r1)
+                else:
+                    l2   = np.sqrt(np.nansum((r0-r1)*np.conj(r0-r1)) / r0.size)
+                    linf = np.nanmax(np.abs(r0-r1))
                 msg1='(l2={}, linf={}).'
                 msg1=msg1.format(l2, linf)
                 
@@ -789,17 +791,17 @@ class TestArray(object):
         for cl_env in iter_clenv():
             print
             print 'TESTING OPENCL PLATFORM {}'.format(cl_env.platform.name)
-            allocator = OpenClImmediateAllocator(cl_env.default_queue)
-            backend   = OpenClArrayBackend(cl_env=cl_env, allocator=allocator)
+            allocator = OpenClImmediateAllocator(queue=cl_env.default_queue)
+            backend = OpenClArrayBackend(cl_env=cl_env, allocator=allocator)
             self._test_backend(backend)
     
     @opencl_failed
     def test_opencl_array_backend_pool(self):
         from hysop.backend.device.opencl.opencl_allocator import OpenClImmediateAllocator
         for cl_env in iter_clenv():
-            allocator = OpenClImmediateAllocator(cl_env.default_queue)\
+            allocator = OpenClImmediateAllocator(queue=cl_env.default_queue)\
                                         .memory_pool(name=cl_env.device.name)
-            backend   = OpenClArrayBackend(cl_env=cl_env, allocator=allocator)
+            backend = OpenClArrayBackend(cl_env=cl_env, allocator=allocator)
             
             self._test_backend(backend)
             
-- 
GitLab