跳转至

Python pkg

inspect

用于查看源代码、函数签名等

inspect.signature

@triton.jit
def add_kernel(
    x_ptr, 
    y_ptr, 
    z_ptr,
    n_elem,
    block_size: tl.constexpr
):
    pass

def add(x: torch.Tensor, y: torch.Tensor, useless: str = 'hi'):
    pass

ik = inspect.signature(add_kernel)
ik_params = ik.parameters
for name, params in ik_params.items():
    print(name, params.default, params.annotation, params.kind)
print()

i = inspect.signature(add)
i_params = i.parameters
for name, params in i_params.items():
    print(name, params.default, params.annotation, params.kind)
print()

print(ik)
print(i)

# ------output-------
args <class 'inspect._empty'> <class 'inspect._empty'> VAR_POSITIONAL
kwargs <class 'inspect._empty'> <class 'inspect._empty'> VAR_KEYWORD

x <class 'inspect._empty'> <class 'torch.Tensor'> POSITIONAL_OR_KEYWORD
y <class 'inspect._empty'> <class 'torch.Tensor'> POSITIONAL_OR_KEYWORD
useless hi <class 'str'> POSITIONAL_OR_KEYWORD

(*args, **kwargs)
(x: torch.Tensor, y: torch.Tensor, useless: str = 'hi')