File size: 1,873 Bytes
6d8c66f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Copyright (c) 2024 NVIDIA CORPORATION.
#   Licensed under the MIT license.

import math
import torch
import alias_free_cuda
from alias_free_cuda import activation1d
from activations import Snake, SnakeBeta

def test_load_fused_kernels():
    try:
        import alias_free_cuda
        import torch
        print("[Success] load_fused_kernels")
    except ImportError as e:
        print("[Fail] load_fused_kernels")
        raise e

def test_anti_alias_activation():
    data = torch.rand((10, 10, 50000), device='cuda')

    # check activations.Snake cuda vs. torch
    fused_anti_alias_activation = activation1d.Activation1d(activation=Snake(10), fused=True).cuda()
    fused_activation_output = fused_anti_alias_activation(data)

    torch_anti_alias_activation = activation1d.Activation1d(activation=Snake(10), fused=False).cuda()
    torch_activation_output = torch_anti_alias_activation(data)

    test_result = (fused_activation_output - torch_activation_output).abs()
    
    while test_result.dim() != 1:
        test_result = test_result.mean(dim=-1)

    diff = test_result.mean(dim=-1)

    if diff <= 1e-3:
        print(
            f"\n[Success] test_fused_anti_alias_activation"
            f"\n > mean_difference={diff}"
            f"\n > fused_values={fused_activation_output[-1][-1][-100:].tolist()}"
            f"\n > torch_values={torch_activation_output[-1][-1][-100:].tolist()}"
        )
    else:
        print(
            f"\n[Fail] test_fused_anti_alias_activation"
            f"\n > mean_difference={diff}, "
            f"\n > fused_values={fused_activation_output[-1][-1][-30:].tolist()}, "
            f"\n > torch_values={torch_activation_output[-1][-1][-30:].tolist()}"
        )
        
if __name__ == "__main__":
    from alias_free_cuda import load
    load.load()
    test_load_fused_kernels()
    test_anti_alias_activation()