taichi-dev/taichi
Voir sur GitHub[Lang] Make `@ti.func` callable from Python-scope, or `@ti.kfunc` if we're afraid of breaking API
Open
#1 379 ouverte le 2 juil. 2020
feature requestgood first issuepython
Métriques du dépôt
- Stars
- (28 195 stars)
- Métriques de merge PR
- (Aucune PR mergée en 30 j)
Description
Concisely describe the proposed feature It would be convenient to unify these two concepts, both for API clarity and reducing user learning obstacle. This issue will be just a begining of this refactor.
Describe the solution you'd like (if any)
We may first add @ti.kfunc as a experimental one, then replace @ti.func when it's mature and battle-tested.
- When
@ti.funccalled from Python-scope will be translated into a minimal kernel that executes it, and exit. - Add
@ti.kfuncthat create both a@ti.funcand@ti.kernel, when called from corresponding scope, call func/kernel.
def kfunc(foo):
func_foo = ti.func(foo)
kernel_foo = ti.kernel(foo)
@functools.wraps(foo)
def wrapped(*args, **kwargs):
if impl.inside_kernel():
func_foo(*args, **kwargs)
else:
kernel_foo(*args, **kwargs)
Additional comments @yuanming-hu @k-ye WDYT? Inputs are welcome!