| # RUN: %PYTHON %s | FileCheck %s |
| |
| import torch |
| import numpy as np |
| |
| from mpact.mpactbackend import mpact_jit |
| |
| from mpact.models.kernels import Normalization |
| |
| net = Normalization() |
| |
| # Construct adjacency matrix. |
| V = 8 |
| edges = np.array([[0, 1], [0, 4], [1, 4], [3, 4], [4, 3]], dtype=np.int32) |
| E = edges.shape[0] |
| adj_mat = torch.sparse_coo_tensor(edges.T, torch.ones(E), (V, V), dtype=torch.int64) |
| adj_mat = ( |
| torch.eye(V) + adj_mat |
| ) # Add self-loops to the adjacency matrix (becomes dense) |
| |
| # |
| # CHECK: pytorch |
| # CHECK: tensor({{\[}}[0.1111, 0.1667, 0.0000, 0.0000, 0.1667, 0.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.2500, 0.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 0.0000, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 0.0000, 0.2500, 0.2500, 0.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000], |
| # CHECK: [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000]{{\]}}) |
| # |
| # TODO: first row? |
| # |
| # CHECK: mpact |
| # CHECK: {{\[}}[0. 0. 0. 0. 0. 0. 0. 0. ] |
| # CHECK: [0. 0.25 0. 0. 0.25 0. 0. 0. ] |
| # CHECK: [0. 0. 1. 0. 0. 0. 0. 0. ] |
| # CHECK: [0. 0. 0. 0.25 0.25 0. 0. 0. ] |
| # CHECK: [0. 0. 0. 0.25 0.25 0. 0. 0. ] |
| # CHECK: [0. 0. 0. 0. 0. 1. 0. 0. ] |
| # CHECK: [0. 0. 0. 0. 0. 0. 1. 0. ] |
| # CHECK: [0. 0. 0. 0. 0. 0. 0. 1. ]{{\]}} |
| # |
| |
| # Run it with PyTorch. |
| print("pytorch") |
| res = net(adj_mat) |
| print(res) |
| |
| # Run it with MPACT. |
| print("mpact") |
| res = mpact_jit(net, adj_mat) |
| print(res) |