test_matmul.py 773 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, SparseTensor
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
    index, value = spspmm(*A, *B)
    out = SparseTensor(index, value, torch.Size([3, 2]))
    assert out.to_dense().tolist() == [[8, 0], [0, 6], [0, 8]]
rusty1s's avatar
rusty1s committed
23

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