def _impl_test_add_diag(self, dtype): x = np.asarray(np.random.rand(4, 4), dtype) d = np.asarray(np.random.rand(1, 4), dtype).reshape(-1) x_gpu = gpuarray.to_gpu(x) d_gpu = gpuarray.to_gpu(d) res_cpu = x + np.diag(d) res_gpu = linalg.add_diag(d_gpu, x_gpu, overwrite=False) assert np.allclose(res_cpu, res_gpu.get(), atol=1e-5) assert res_gpu is not x_gpu res_gpu = linalg.add_diag(d_gpu, x_gpu, overwrite=True) assert np.allclose(res_cpu, res_gpu.get(), atol=1e-5) assert res_gpu is x_gpu
def impl_test_add_diag(self, dtype): x = np.asarray(np.random.rand(4, 4), dtype) d = np.asarray(np.random.rand(1, 4), dtype).reshape(-1) x_gpu = gpuarray.to_gpu(x) d_gpu = gpuarray.to_gpu(d) res_cpu = x + np.diag(d) res_gpu = linalg.add_diag(d_gpu, x_gpu, overwrite=False) assert np.allclose(res_cpu, res_gpu.get(), atol=1e-5) assert res_gpu is not x_gpu res_gpu = linalg.add_diag(d_gpu, x_gpu, overwrite=True) assert np.allclose(res_cpu, res_gpu.get(), atol=1e-5) assert res_gpu is x_gpu
def calculate_H_gpu(X, W, P): WPW = la.add_diag(P, la.dot(W, W, "t", "n")) tmp = la.dot(W, la.inv(WPW, overwrite=True)) H = la.dot(X, tmp, "n", "t") H = gpu.maximum(H, 0) H = to_unit_variance(H) return H, tmp