def perform(self, node, inp, out): A, alpha, x, y = inp inplace = self.destructive if inplace and not A.flags.forc: inplace = False outputs[0][0] = blas.ger(alpha, x, y, A, overwrite_a=inplace)
def ger(m, n, dtype, order, sliced_x, sliced_y, init_res, overwrite=False): cX, gX = gen_gpuarray((m,), dtype, order, sliced=sliced_x, ctx=context) cY, gY = gen_gpuarray((n,), dtype, order, sliced=sliced_y, ctx=context) if init_res: cA, gA = gen_gpuarray((m, n), dtype, order, ctx=context) else: cA, gA = None, None if dtype == 'float32': cr = fblas.sger(1.0, cX, cY, a=cA, overwrite_a=overwrite) else: cr = fblas.dger(1.0, cX, cY, a=cA, overwrite_a=overwrite) gr = gblas.ger(1.0, gX, gY, gA, overwrite_a=overwrite) numpy.testing.assert_allclose(cr, numpy.asarray(gr), rtol=1e-6)
def ger(m, n, dtype, order, sliced_x, sliced_y, init_res, overwrite=False): cX, gX = gen_gpuarray((m, ), dtype, order, sliced=sliced_x, ctx=context) cY, gY = gen_gpuarray((n, ), dtype, order, sliced=sliced_y, ctx=context) if init_res: cA, gA = gen_gpuarray((m, n), dtype, order, ctx=context) else: cA, gA = None, None if dtype == 'float32': cr = fblas.sger(1.0, cX, cY, a=cA, overwrite_a=overwrite) else: cr = fblas.dger(1.0, cX, cY, a=cA, overwrite_a=overwrite) gr = gblas.ger(1.0, gX, gY, gA, overwrite_a=overwrite) numpy.testing.assert_allclose(cr, numpy.asarray(gr), rtol=1e-6)