def test_elemwise_mixed_dtype(): to_cpu = numpy.asarray for dtype1 in ["int16", "float32", "int8"]: for dtype2 in ["int16", "float32", "int8"]: dtypeo = str((numpy.zeros(1, dtype=dtype1) + numpy.zeros(1, dtype=dtype2)).dtype) #print "dtypes", dtype1, dtype2, "o dtype", dtypeo #print " Test inside a wrapping python object 2 inputs" for shape in [(500,), (50, 5), (5, 6, 7)]: input_vals = [rand(shape, dtype) for dtype in [dtype1, dtype2]] del dtype gpu_vals = [gpu_ndarray.GpuNdArrayObject(i) for i in input_vals] assert all([numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals)]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = gpu_vals[0] + gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] + input_vals[1]) out = gpu_vals[0] - gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] - input_vals[1]) out = gpu_vals[0] * gpu_vals[1] assert all_close(to_cpu(out), input_vals[0] * input_vals[1]) if dtypeo.startswith("float"): # TODO: execute for all dtype out = gpu_vals[0] / gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] / input_vals[1]) nb_in = 4 #print " Test inside a wrapping python object %d inputs"%nb_in for shape in [(500,), (50, 5), (5, 6, 7)]: input_vals = [rand(shape, dtype) for dtype in [dtype1, dtype2, dtype1, dtype2]] gpu_vals = [gpu_ndarray.GpuNdArrayObject(i) for i in input_vals] assert all([numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals)]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = MyGpuNdArray.adds(*gpu_vals) assert numpy.allclose(to_cpu(out), reduce(numpy.add, input_vals)) out = MyGpuNdArray.multiplys(*gpu_vals) assert all_close(to_cpu(out), reduce(numpy.multiply, input_vals)) #print " Test broadcasting" for shapes in [((1, 5), (4, 5)), ((33, 10), (33, 1)), ((33, 1, 5), (33, 10, 1)), ((33, 1, 5), (33, 10, 1), ((1, 10, 5))), ]: input_vals = [rand(shape, dtype) for shape, dtype in zip(shapes, [dtype1, dtype2])] gpu_vals = [gpu_ndarray.GpuNdArrayObject(i) for i in input_vals] assert all([numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals)]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = MyGpuNdArray.adds(*gpu_vals) assert numpy.allclose(to_cpu(out), reduce(numpy.add, input_vals)) out = MyGpuNdArray.multiplys(*gpu_vals) assert all_close(to_cpu(out), reduce(numpy.multiply, input_vals))
def test_elemwise_mixed_dtype(): to_cpu = numpy.asarray for dtype1 in ["int16", "float32", "int8"]: for dtype2 in ["int16", "float32", "int8"]: dtypeo = str((numpy.zeros(1, dtype=dtype1) + numpy.zeros(1, dtype=dtype2)).dtype) #print "dtypes", dtype1, dtype2, "o dtype", dtypeo #print " Test inside a wrapping python object 2 inputs" for shape in [(500, ), (50, 5), (5, 6, 7)]: input_vals = [rand(shape, dtype) for dtype in [dtype1, dtype2]] del dtype gpu_vals = [ gpu_ndarray.GpuNdArrayObject(i) for i in input_vals ] assert all([ numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals) ]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = gpu_vals[0] + gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] + input_vals[1]) out = gpu_vals[0] - gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] - input_vals[1]) out = gpu_vals[0] * gpu_vals[1] assert all_close(to_cpu(out), input_vals[0] * input_vals[1]) if dtypeo.startswith("float"): # TODO: execute for all dtype out = gpu_vals[0] / gpu_vals[1] assert numpy.allclose(to_cpu(out), input_vals[0] / input_vals[1]) nb_in = 4 #print " Test inside a wrapping python object %d inputs"%nb_in for shape in [(500, ), (50, 5), (5, 6, 7)]: input_vals = [ rand(shape, dtype) for dtype in [dtype1, dtype2, dtype1, dtype2] ] gpu_vals = [ gpu_ndarray.GpuNdArrayObject(i) for i in input_vals ] assert all([ numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals) ]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = MyGpuNdArray.adds(*gpu_vals) assert numpy.allclose(to_cpu(out), reduce(numpy.add, input_vals)) out = MyGpuNdArray.multiplys(*gpu_vals) assert all_close(to_cpu(out), reduce(numpy.multiply, input_vals)) #print " Test broadcasting" for shapes in [ ((1, 5), (4, 5)), ((33, 10), (33, 1)), ((33, 1, 5), (33, 10, 1)), ((33, 1, 5), (33, 10, 1), ((1, 10, 5))), ]: input_vals = [ rand(shape, dtype) for shape, dtype in zip(shapes, [dtype1, dtype2]) ] gpu_vals = [ gpu_ndarray.GpuNdArrayObject(i) for i in input_vals ] assert all([ numpy.allclose(to_cpu(ig), i) for ig, i in zip(gpu_vals, input_vals) ]) gpu_vals = [MyGpuNdArray(x) for x in gpu_vals] out = MyGpuNdArray.adds(*gpu_vals) assert numpy.allclose(to_cpu(out), reduce(numpy.add, input_vals)) out = MyGpuNdArray.multiplys(*gpu_vals) assert all_close(to_cpu(out), reduce(numpy.multiply, input_vals))