Example #1
0
def test_type_tracking():

    pip = scalar_pipeline.with_steps(
        steps.step_parse,
        steps.step_infer,
        steps.step_specialize,
        steps.step_simplify_types,
        LocalPassOptimizer(opt_ok1, opt_ok2, opt_err1),
        steps.step_validate,
    )

    def fn_ok1(x, y):
        return x + y

    pip(input=fn_ok1, argspec=(to_abstract_test(i64), to_abstract_test(i64)))

    def fn_ok2(x):
        return -x

    pip(input=fn_ok2, argspec=(to_abstract_test(i64),))

    def fn_err1(x, y):
        return x - y

    with pytest.raises(ValidationError):
        pip(
            input=fn_err1,
            argspec=(to_abstract_test(i64), to_abstract_test(i64)),
        )
Example #2
0
def test_forward_reference():
    def g():
        return h()

    # No resolve
    parse2 = (scalar_pipeline.with_steps(steps.step_parse).configure(
        preresolve=False).make_transformer("input", "graph"))

    parse2(g)

    def h():
        return 2 + 2
Example #3
0
def test_type_tracking_2():

    pip = scalar_pipeline.with_steps(
        steps.step_parse,
        steps.step_infer,
        steps.step_specialize,
        steps.step_simplify_types,
        LocalPassOptimizer(opt_ok1, opt_ok2, opt_err1),
        steps.step_validate,
    )

    def fn_err3(x, y):
        return x - y + x

    with pytest.raises(InferenceError):
        pip(
            input=fn_err3,
            argspec=(to_abstract_test(i64), to_abstract_test(i64)),
        )
Example #4
0
import pytest

from myia.abstract import AbstractFunction, TypedPrimitive
from myia.operations import partial, primitives as P
from myia.pipeline import scalar_parse, scalar_pipeline, steps
from myia.testing.common import Point, i64, to_abstract_test
from myia.validate import ValidationError, validate, validate_abstract

Point_a = Point(i64, i64)

pip = scalar_pipeline.with_steps(
    steps.step_parse,
    steps.step_infer,
    steps.step_specialize,
    steps.step_validate,
)

pip_ec = scalar_pipeline.with_steps(
    steps.step_parse,
    steps.step_infer,
    steps.step_specialize,
    steps.step_simplify_types,
    steps.step_validate,
)


def run(pip, fn, types):
    res = pip(input=fn, argspec=[to_abstract_test(t) for t in types])
    return res["graph"]

Example #5
0
from myia.opt import RemoveUnusedParameters
from myia.pipeline import scalar_parse, scalar_pipeline, steps

###################################
# Test removing unused parameters #
###################################


def step_rmunused(resources):
    while RemoveUnusedParameters(resources.opt_manager).run():
        pass


rmunused = scalar_pipeline.with_steps(
    steps.step_parse,
    steps.step_copy,
    step_rmunused,
).make_transformer("input", "graph")


def test_rmunused_simple():
    @rmunused
    def f1(x, y):
        def g(z):
            return x

        return g(y)

    @scalar_parse
    def f2(x, y):
        def g():