test_matmul.py 905 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
5
6
import torch
from torch_sparse import spspmm

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

devices = [torch.device('cuda')]
dtypes = [torch.float]

rusty1s's avatar
rusty1s committed
12

rusty1s's avatar
to csr  
rusty1s committed
13
14
15
16
@pytest.mark.parametrize('dtype,device', product(dtypes, devices))
def test_spspmm(dtype, device):
    e1 = torch.tensor([[0, 0, 1, 2, 2], [1, 2, 0, 0, 1]], device=device)
    v1 = tensor([1, 2, 3, 4, 5], dtype, device)
rusty1s's avatar
rusty1s committed
17
18
    matrix1 = (e1, v1, torch.Size([3, 3]))

rusty1s's avatar
to csr  
rusty1s committed
19
20
    e2 = torch.tensor([[0, 2], [1, 0]], device=device)
    v2 = tensor([2, 4], dtype, device)
rusty1s's avatar
rusty1s committed
21
22
23
    matrix2 = (e2, v2, torch.Size([3, 2]))

    index, value = spspmm(*matrix1, *matrix2)
rusty1s's avatar
to csr  
rusty1s committed
24
25
26
27
28
29
    print(index)
    print(value)
    # out = torch.sparse_coo_tensor(index, value, torch.Size([3, 2]), dtype)
    # out = out.to_dense()
    # print(out)
    # assert out.tolist() == [[8, 0], [0, 6], [0, 8]]
rusty1s's avatar
rusty1s committed
30

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