test_matmul.py 817 Bytes
Newer Older
rusty1s's avatar
to csr  
rusty1s committed
1
2
3
from itertools import product

import pytest
rusty1s's avatar
rusty1s committed
4
import torch
rusty1s's avatar
rusty1s committed
5
from torch_sparse import spspmm
rusty1s's avatar
rusty1s committed
6

rusty1s's avatar
to csr  
rusty1s committed
7
8
from .utils import dtypes, devices, tensor

rusty1s's avatar
rusty1s committed
9

rusty1s's avatar
to csr  
rusty1s committed
10
11
@pytest.mark.parametrize('dtype,device', product(dtypes, devices))
def test_spspmm(dtype, device):
rusty1s's avatar
rusty1s committed
12
13
14
    index = torch.tensor([[0, 0, 1, 2, 2], [1, 2, 0, 0, 1]], device=device)
    value = tensor([1, 2, 3, 4, 5], dtype, device)
    A = (index, value, torch.Size([3, 3]))
rusty1s's avatar
rusty1s committed
15

rusty1s's avatar
rusty1s committed
16
17
18
    index = torch.tensor([[0, 2], [1, 0]], device=device)
    value = tensor([2, 4], dtype, device)
    B = (index, value, torch.Size([3, 2]))
rusty1s's avatar
rusty1s committed
19

rusty1s's avatar
rusty1s committed
20
21
22
23
24
25
26
    index, value, size = spspmm(*A, *B)
    print(index)
    print(value)
    print(size)

    # out = torch.sparse_coo_tensor(index, value, size)
    # assert out.to_dense().tolist() == [[8, 0], [0, 6], [0, 8]]
rusty1s's avatar
rusty1s committed
27

rusty1s's avatar
to csr  
rusty1s committed
28
    # TODO TEST backward
rusty1s's avatar
rusty1s committed
29
    # value.sum().backward()