提交 7caaa80f authored 作者: Pascal Lamblin's avatar Pascal Lamblin 提交者: GitHub

Merge pull request #4838 from abergeron/gpua_float32

Fix the few failing tests with floatX=float32 in gpuarray
...@@ -8,6 +8,7 @@ import os ...@@ -8,6 +8,7 @@ import os
import shlex import shlex
import sys import sys
import warnings import warnings
from functools import wraps
from six import StringIO from six import StringIO
...@@ -96,6 +97,7 @@ def change_flags(**kwargs): ...@@ -96,6 +97,7 @@ def change_flags(**kwargs):
Useful during tests. Useful during tests.
""" """
def change_flags_exec(f): def change_flags_exec(f):
@wraps(f)
def inner(*args, **kwargs_): def inner(*args, **kwargs_):
old_val = {} old_val = {}
for k in kwargs: for k in kwargs:
...@@ -117,9 +119,6 @@ def change_flags(**kwargs): ...@@ -117,9 +119,6 @@ def change_flags(**kwargs):
assert len(l) == 1 assert len(l) == 1
l[0].__set__(None, old_val[k]) l[0].__set__(None, old_val[k])
# Make sure that the name of the decorated function remains the same.
inner.__name__ = f.__name__
return inner return inner
return change_flags_exec return change_flags_exec
......
...@@ -167,6 +167,8 @@ def makeTester(name, op, gpu_op, cases, checks=None, mode_gpu=mode_with_gpu, ...@@ -167,6 +167,8 @@ def makeTester(name, op, gpu_op, cases, checks=None, mode_gpu=mode_with_gpu,
inputs, variables)) inputs, variables))
Checker.__name__ = name Checker.__name__ = name
if hasattr(Checker, '__qualname__'):
Checker.__qualname__ = name
return Checker return Checker
...@@ -228,6 +230,7 @@ def gpu_alloc_expected(x, *shp): ...@@ -228,6 +230,7 @@ def gpu_alloc_expected(x, *shp):
g[:] = x g[:] = x
return g return g
GpuAllocTester = makeTester( GpuAllocTester = makeTester(
name="GpuAllocTester", name="GpuAllocTester",
op=alloc, op=alloc,
......
...@@ -28,6 +28,21 @@ class TestGpuCumsum(theano.tensor.tests.test_extra_ops.TestCumsumOp): ...@@ -28,6 +28,21 @@ class TestGpuCumsum(theano.tensor.tests.test_extra_ops.TestCumsumOp):
raise SkipTest("Cuda specific tests") raise SkipTest("Cuda specific tests")
self.max_threads_dim0 = test_ctx.maxlsize0 self.max_threads_dim0 = test_ctx.maxlsize0
self.max_grid_size1 = test_ctx.maxgsize2 self.max_grid_size1 = test_ctx.maxgsize2
self.op_class = GpuCumsum
def test_infer_shape(self):
x = T.tensor3('x')
a = np.random.random((3, 5, 2)).astype(theano.config.floatX)
for axis in range(-len(a.shape), len(a.shape)):
self._compile_and_check([x],
[cumsum(x, axis=axis)],
[a],
self.op_class)
def test_grad(self):
# no grad for GpuCumsum
pass
def test_Strides1D(self): def test_Strides1D(self):
x = T.fvector('x') x = T.fvector('x')
......
...@@ -2472,6 +2472,8 @@ def _hv_switch(op, expected_function): ...@@ -2472,6 +2472,8 @@ def _hv_switch(op, expected_function):
def expected_f(self, a, format=None, dtype=None): def expected_f(self, a, format=None, dtype=None):
return expected_function(a, format, dtype) return expected_function(a, format, dtype)
XStackTester.__name__ = op.__name__ + "Tester" XStackTester.__name__ = op.__name__ + "Tester"
if hasattr(XStackTester, '__qualname__'):
XStackTester.__qualname__ = XStackTester.__name__
return XStackTester return XStackTester
HStackTester = _hv_switch(HStack, sp.hstack) HStackTester = _hv_switch(HStack, sp.hstack)
...@@ -2687,6 +2689,8 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None, ...@@ -2687,6 +2689,8 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None,
if name is None: if name is None:
name = op.__name__.capitalize() + 'Tester' name = op.__name__.capitalize() + 'Tester'
Tester.__name__ = name Tester.__name__ = name
if hasattr(Tester, '__qualname__'):
Tester.__qualname__ = name
assert 'Roundhalftoeven' not in Tester.__name__ assert 'Roundhalftoeven' not in Tester.__name__
return Tester return Tester
......
...@@ -2780,13 +2780,14 @@ class Alloc(gof.Op): ...@@ -2780,13 +2780,14 @@ class Alloc(gof.Op):
} }
// This function takes care of broadcasting // This function takes care of broadcasting
PyArray_CopyInto(%(zz)s, %(vv)s); if (PyArray_CopyInto(%(zz)s, %(vv)s) == -1)
%(fail)s
""" % dict(vv=vv, ndim=ndim, zz=zz, fail=fail) """ % dict(vv=vv, ndim=ndim, zz=zz, fail=fail)
return code return code
def c_code_cache_version(self): def c_code_cache_version(self):
return (1,) return (2,)
def infer_shape(self, node, input_shapes): def infer_shape(self, node, input_shapes):
return [node.inputs[1:]] return [node.inputs[1:]]
......
...@@ -539,6 +539,8 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None, ...@@ -539,6 +539,8 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None,
assert None not in in_grad_vars assert None not in in_grad_vars
Checker.__name__ = name Checker.__name__ = name
if hasattr(Checker, '__qualname__'):
Checker.__qualname__ = name
return Checker return Checker
......
...@@ -598,6 +598,8 @@ def makeSharedTester(shared_constructor_, ...@@ -598,6 +598,8 @@ def makeSharedTester(shared_constructor_,
assert name is not None assert name is not None
SharedTester.__name__ = name SharedTester.__name__ = name
if hasattr(SharedTester, '__qualname__'):
SharedTester.__qualname__ = name
return SharedTester return SharedTester
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论