bm_rasterize_meshes.py 2.26 KB
Newer Older
facebook-github-bot's avatar
facebook-github-bot committed
1
2
3
4
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.


from itertools import product
5

facebook-github-bot's avatar
facebook-github-bot committed
6
7
8
9
import torch
from fvcore.common.benchmark import benchmark
from test_rasterize_meshes import TestRasterizeMeshes

10

facebook-github-bot's avatar
facebook-github-bot committed
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
# ico levels:
# 0: (12 verts, 20 faces)
# 1: (42 verts, 80 faces)
# 3: (642 verts, 1280 faces)
# 4: (2562 verts, 5120 faces)


def bm_rasterize_meshes() -> None:
    kwargs_list = [
        {
            "num_meshes": 1,
            "ico_level": 0,
            "image_size": 10,  # very slow with large image size
            "blur_radius": 0.0,
        }
    ]
    benchmark(
        TestRasterizeMeshes.rasterize_meshes_python_with_init,
        "RASTERIZE_MESHES",
        kwargs_list,
        warmup_iters=1,
    )

    kwargs_list = []
    num_meshes = [1]
    ico_level = [1]
    image_size = [64, 128]
    blur = [0.0, 1e-8, 1e-4]
    test_cases = product(num_meshes, ico_level, image_size, blur)
    for case in test_cases:
        n, ic, im, b = case
        kwargs_list.append(
43
            {"num_meshes": n, "ico_level": ic, "image_size": im, "blur_radius": b}
facebook-github-bot's avatar
facebook-github-bot committed
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
        )
    benchmark(
        TestRasterizeMeshes.rasterize_meshes_cpu_with_init,
        "RASTERIZE_MESHES",
        kwargs_list,
        warmup_iters=1,
    )

    if torch.cuda.is_available():
        kwargs_list = []
        num_meshes = [1, 8]
        ico_level = [0, 1, 3, 4]
        image_size = [64, 128, 512]
        blur = [0.0, 1e-8, 1e-4]
        bin_size = [0, 8, 32]
        test_cases = product(num_meshes, ico_level, image_size, blur, bin_size)
        # only keep cases where bin_size == 0 or image_size / bin_size < 16
        test_cases = [
62
            elem for elem in test_cases if (elem[-1] == 0 or elem[-3] / elem[-1] < 16)
facebook-github-bot's avatar
facebook-github-bot committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
        ]
        for case in test_cases:
            n, ic, im, b, bn = case
            kwargs_list.append(
                {
                    "num_meshes": n,
                    "ico_level": ic,
                    "image_size": im,
                    "blur_radius": b,
                    "bin_size": bn,
                    "max_faces_per_bin": 200,
                }
            )
        benchmark(
            TestRasterizeMeshes.rasterize_meshes_cuda_with_init,
            "RASTERIZE_MESHES_CUDA",
            kwargs_list,
            warmup_iters=1,
        )