def test_elementwise_inc(inc, use_alpha, ctx, rng, allclose): Xsizes = [(3, 3), (32, 64), (457, 342), (1, 100)] Asizes = [(3, 3), (1, 1), (457, 342), (100, 1)] A = [rng.normal(size=size).astype(np.float32) for size in Asizes] X = [rng.normal(size=size).astype(np.float32) for size in Xsizes] AX = [a * x for a, x in zip(A, X)] if use_alpha: alpha = rng.normal(size=len(Xsizes)).astype(np.float32) AX = [alph * ax for alph, ax in zip(alpha, AX)] else: alpha = None Y = [rng.normal(size=ax.shape).astype(np.float32) for ax in AX] if inc: Yref = [y + ax for y, ax in zip(Y, AX)] else: Yref = AX queue = cl.CommandQueue(ctx) clA = CLRA(queue, RA(A)) clX = CLRA(queue, RA(X)) clY = CLRA(queue, RA(Y)) # compute on device plan = plan_elementwise_inc(queue, clA, clX, clY, alpha=alpha, inc=inc) plan() # check result for k, (yref, y) in enumerate(zip(Yref, clY.to_host())): assert allclose(y, yref, atol=2e-7), "Array %d not close" % k
def plan_ElementwiseInc(self, ops): A = self.all_data[[self.sidx[op.A] for op in ops]] X = self.all_data[[self.sidx[op.X] for op in ops]] Y = self.all_data[[self.sidx[op.Y] for op in ops]] clip_type = self.Array([op.clip_type for op in ops]) decay_factor = self.Array([op.decay_factor for op in ops]) print("Zpre", [(op.tag, op.clip_type, op.decay_factor) for op in ops]) return [ plan_elementwise_inc(self.queue, A, X, Y, clip_type, decay_factor) ]
def test_elementwise_inc(rng): Xsizes = [(3, 3), (32, 64), (457, 342), (1, 100)] Asizes = [(3, 3), (1, 1), (457, 342), (100, 1)] A = RA([rng.normal(size=size) for size in Asizes]) X = RA([rng.normal(size=size) for size in Xsizes]) Y = RA([a * x for a, x in zip(A, X)]) queue = cl.CommandQueue(ctx) clA = CLRA(queue, A) clX = CLRA(queue, X) clY = CLRA(queue, RA([np.zeros_like(y) for y in Y])) # compute on device plan = plan_elementwise_inc(queue, clA, clX, clY) plan() # check result for y, yy in zip(Y, clY.to_host()): assert np.allclose(y, yy)
def test_elementwise_inc(ctx, rng): Xsizes = [(3, 3), (32, 64), (457, 342), (1, 100)] Asizes = [(3, 3), (1, 1), (457, 342), (100, 1)] A = RA([rng.normal(size=size) for size in Asizes]) X = RA([rng.normal(size=size) for size in Xsizes]) Y = RA([a * x for a, x in zip(A, X)]) queue = cl.CommandQueue(ctx) clA = CLRA(queue, A) clX = CLRA(queue, X) clY = CLRA(queue, RA([np.zeros_like(y) for y in Y])) # compute on device plan = plan_elementwise_inc(queue, clA, clX, clY) plan() # check result for y, yy in zip(Y, clY.to_host()): assert np.allclose(y, yy)
def test_elementwise_inc_outer(ctx, rng): Xsizes = [3, 9, 15, 432] Asizes = [9, 42, 10, 124] alpha = rng.normal(size=len(Xsizes)).astype(np.float32) A = RA([rng.normal(size=size).astype(np.float32) for size in Asizes]) X = RA([rng.normal(size=size).astype(np.float32) for size in Xsizes]) AX = RA([alph * np.outer(a, x) for alph, a, x in zip(alpha, A, X)]) Y = RA([rng.normal(size=ax.shape) for ax in AX]) Yref = RA([y + ax for y, ax in zip(Y, AX)]) queue = cl.CommandQueue(ctx) clA = CLRA(queue, A) clX = CLRA(queue, X) clY = CLRA(queue, Y) # compute on device plan = plan_elementwise_inc(queue, clA, clX, clY, alpha=alpha, outer=True) plan() # check result for yref, y in zip(Yref, clY.to_host()): assert np.allclose(y, yref, atol=2e-7)
def plan_ElementwiseInc(self, ops): A = self.all_data[[self.sidx[op.A] for op in ops]] X = self.all_data[[self.sidx[op.X] for op in ops]] Y = self.all_data[[self.sidx[op.Y] for op in ops]] return [plan_elementwise_inc(self.queue, A, X, Y)]