def test_op_with_enumlist(self): a = scalar.int32() b = scalar.int32() c_add = MyOpEnumList('+')(a, b) c_sub = MyOpEnumList('-')(a, b) c_multiply = MyOpEnumList('*')(a, b) c_divide = MyOpEnumList('/')(a, b) f = theano.function([a, b], [c_add, c_sub, c_multiply, c_divide]) va = 12 vb = 15 ref = [va + vb, va - vb, va * vb, va // vb] out = f(va, vb) assert ref == out, (ref, out)
def test_op_with_enumlist(self): a = scalar.int32() b = scalar.int32() c_add = MyOpEnumList("+")(a, b) c_sub = MyOpEnumList("-")(a, b) c_multiply = MyOpEnumList("*")(a, b) c_divide = MyOpEnumList("/")(a, b) f = theano.function([a, b], [c_add, c_sub, c_multiply, c_divide]) va = 12 vb = 15 ref = [va + vb, va - vb, va * vb, va // vb] out = f(va, vb) assert ref == out, (ref, out)
def test_no_perform(self): if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") orig_compute_test_value = theano.config.compute_test_value try: theano.config.compute_test_value = 'raise' i = scalar.int32('i') i.tag.test_value = 3 # Class IncOneC is defined outside of the TestComputeTestValue # so it can be pickled and unpickled o = IncOneC()(i) # Check that the perform function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.perform, o.owner, 0, [None]) assert hasattr(o.tag, 'test_value') assert o.tag.test_value == 4 finally: theano.config.compute_test_value = orig_compute_test_value
def test_no_c_code(self): class IncOnePython(Op): """ An Op with only a Python (perform) implementation """ __props__ = () def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): (input,) = inputs (output,) = outputs output[0] = input + 1 i = scalar.int32("i") i.tag.test_value = 3 o = IncOnePython()(i) # Check that the c_code function is not implemented with pytest.raises((NotImplementedError, utils.MethodNotDefined)): o.owner.op.c_code(o.owner, "o", ["x"], "z", {"fail": ""}) assert hasattr(o.tag, "test_value") assert o.tag.test_value == 4
def test_no_c_code(self): class IncOnePython(Op): """An Op with only a Python (perform) implementation""" __props__ = () def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): input, = inputs output, = outputs output[0] = input + 1 orig_compute_test_value = theano.config.compute_test_value try: theano.config.compute_test_value = 'raise' i = scalar.int32('i') i.tag.test_value = 3 o = IncOnePython()(i) # Check that the c_code function is not implemented self.assertRaises( (NotImplementedError, utils.MethodNotDefined), o.owner.op.c_code, o.owner, 'o', ['x'], 'z', {'fail': ''}) assert hasattr(o.tag, 'test_value') assert o.tag.test_value == 4 finally: theano.config.compute_test_value = orig_compute_test_value
def test_no_c_code(self): class IncOnePython(Op): """An Op with only a Python (perform) implementation""" __props__ = () def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): input, = inputs output, = outputs output[0] = input + 1 orig_compute_test_value = theano.config.compute_test_value try: theano.config.compute_test_value = 'raise' i = scalar.int32('i') i.tag.test_value = 3 o = IncOnePython()(i) # Check that the c_code function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.c_code, o.owner, 'o', ['x'], 'z', {'fail': ''}) assert hasattr(o.tag, 'test_value') assert o.tag.test_value == 4 finally: theano.config.compute_test_value = orig_compute_test_value
def test_no_c_code(self): class IncOnePython(Op): """An Op with only a Python (perform) implementation""" __props__ = () def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): (input,) = inputs (output,) = outputs output[0] = input + 1 i = scalar.int32("i") o = IncOnePython()(i) # Check that the c_code function is not implemented with pytest.raises((NotImplementedError, MethodNotDefined)): o.owner.op.c_code(o.owner, "o", ["x"], "z", {"fail": ""}) storage_map = {i: [np.int32(3)], o: [None]} compute_map = {i: [True], o: [False]} thunk = o.owner.op.make_thunk( o.owner, storage_map, compute_map, no_recycling=[] ) required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4
def test_no_perform(self): i = scalar.int32("i") i.tag.test_value = 3 # Class IncOneC is defined outside of the TestComputeTestValue # so it can be pickled and unpickled o = IncOneC()(i) # Check that the perform function is not implemented with pytest.raises((NotImplementedError, utils.MethodNotDefined)): o.owner.op.perform(o.owner, 0, [None]) assert hasattr(o.tag, "test_value") assert o.tag.test_value == 4
def test_no_perform(self): class IncOneC(Op): """An Op with only a C (c_code) implementation""" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hash(type(self)) def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def c_code(self, node, name, inputs, outputs, sub): x, = inputs z, = outputs return "%(z)s = %(x)s + 1;" % locals() i = scalar.int32('i') o = IncOneC()(i) # Check that the perform function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.perform, o.owner, 0, [None]) storage_map = { i: [numpy.int32(3)], o: [None]} compute_map = { i: [True], o: [False]} thunk = o.owner.op.make_thunk(o.owner, storage_map, compute_map, no_recycling=[]) if theano.config.cxx: required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4 else: self.assertRaises((NotImplementedError, utils.MethodNotDefined), thunk)
def test_no_perform(self): if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") class IncOneC(Op): """An Op with only a C (c_code) implementation""" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hash(type(self)) def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def c_code_cache_version(self): return (1,) def c_code(self, node, name, inputs, outputs, sub): x, = inputs z, = outputs return "%(z)s = %(x)s + 1;" % locals() orig_compute_test_value = theano.config.compute_test_value try: theano.config.compute_test_value = 'raise' i = scalar.int32('i') i.tag.test_value = 3 o = IncOneC()(i) # Check that the perform function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.perform, o.owner, 0, [None]) assert hasattr(o.tag, 'test_value') assert o.tag.test_value == 4 finally: theano.config.compute_test_value = orig_compute_test_value
def test_no_c_code(self): class IncOnePython(Op): """An Op with only a Python (perform) implementation""" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hash(type(self)) def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): input, = inputs output, = outputs output[0] = input + 1 i = scalar.int32('i') o = IncOnePython()(i) # Check that the c_code function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.c_code, o.owner, 'o', ['x'], 'z', {'fail': ''}) storage_map = { i: [numpy.int32(3)], o: [None]} compute_map = { i: [True], o: [False]} thunk = o.owner.op.make_thunk(o.owner, storage_map, compute_map, no_recycling=[]) required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4
def test_no_perform(self): class IncOneC(Op): """An Op with only a C (c_code) implementation""" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hash(type(self)) def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def c_code(self, node, name, inputs, outputs, sub): x, = inputs z, = outputs return "%(z)s = %(x)s + 1;" % locals() i = scalar.int32('i') o = IncOneC()(i) # Check that the perform function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.perform, o.owner, 0, [None]) storage_map = {i: [numpy.int32(3)], o: [None]} compute_map = {i: [True], o: [False]} thunk = o.owner.op.make_thunk(o.owner, storage_map, compute_map, no_recycling=[]) if theano.config.cxx: required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4 else: self.assertRaises((NotImplementedError, utils.MethodNotDefined), thunk)
def test_no_c_code(self): class IncOnePython(Op): """An Op with only a Python (perform) implementation""" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hash(type(self)) def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def perform(self, node, inputs, outputs): input, = inputs output, = outputs output[0] = input + 1 i = scalar.int32('i') o = IncOnePython()(i) # Check that the c_code function is not implemented self.assertRaises((NotImplementedError, utils.MethodNotDefined), o.owner.op.c_code, o.owner, 'o', ['x'], 'z', {'fail': ''}) storage_map = {i: [numpy.int32(3)], o: [None]} compute_map = {i: [True], o: [False]} thunk = o.owner.op.make_thunk(o.owner, storage_map, compute_map, no_recycling=[]) required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4
def test_no_perform(self): class IncOneC(Op): """An Op with only a C (c_code) implementation""" __props__ = () def make_node(self, input): input = scalar.as_scalar(input) output = input.type() return Apply(self, [input], [output]) def c_code(self, node, name, inputs, outputs, sub): (x, ) = inputs (z, ) = outputs return f"{z} = {x} + 1;" i = scalar.int32("i") o = IncOneC()(i) # Check that the perform function is not implemented with pytest.raises((NotImplementedError, MethodNotDefined)): o.owner.op.perform(o.owner, 0, [None]) storage_map = {i: [np.int32(3)], o: [None]} compute_map = {i: [True], o: [False]} thunk = o.owner.op.make_thunk(o.owner, storage_map, compute_map, no_recycling=[]) if theano.config.cxx: required = thunk() # Check everything went OK assert not required # We provided all inputs assert compute_map[o][0] assert storage_map[o][0] == 4 else: with pytest.raises((NotImplementedError, MethodNotDefined)): thunk()