Exemple #1
0
def test_node_group_inverse_projection_fork_inside(device):
    float_dtype = get_float(device)

    graph = Topology(device)

    source_node = ConstantNode(shape=(2, 4), constant=0)
    fork_node = ForkNode(dim=1, split_sizes=[1, 3])
    join_node = JoinNode(dim=1, n_inputs=2)
    group_node = graph.create_generic_node_group('group', 1, 2)

    graph.add_node(source_node)
    group_node.add_node(fork_node)
    graph.add_node(join_node)

    Connector.connect(source_node.outputs.output, group_node.inputs[0])

    Connector.connect(group_node.inputs[0].output, fork_node.inputs.input)

    Connector.connect(fork_node.outputs[0], group_node.outputs[0].input)
    Connector.connect(fork_node.outputs[1], group_node.outputs[1].input)

    Connector.connect(group_node.outputs[0], join_node.inputs[0])
    Connector.connect(group_node.outputs[1], join_node.inputs[1])

    graph.step()

    output_tensor = torch.rand((2, 4), device=device, dtype=float_dtype)
    inverse_pass_packet = InversePassOutputPacket(output_tensor, join_node.outputs.output)
    results = join_node.recursive_inverse_projection_from_output(inverse_pass_packet)

    assert 1 == len(results)
    assert same(results[0].tensor, output_tensor)
Exemple #2
0
def test_node_group_empty():
    graph = Topology('cpu')

    source_node = create_source_node()
    group_node = graph.create_generic_node_group('group', 1, 1)

    Connector.connect(source_node.outputs[0], group_node.inputs[0])

    graph.add_node(source_node)
    graph.step()
Exemple #3
0
def test_node_group_pass_through():
    graph = Topology('cpu')

    source_node = create_source_node()
    group_node = graph.create_generic_node_group('group', 1, 1)
    destination_node = create_pass_through_node('destination')

    Connector.connect(group_node.inputs[0].output, group_node.outputs[0].input)

    Connector.connect(source_node.outputs[0], group_node.inputs[0])
    Connector.connect(group_node.outputs[0], destination_node.inputs[0])

    graph.add_node(source_node)
    graph.add_node(destination_node)

    graph.step()

    assert 1 == destination_node.outputs[0].tensor[0]
Exemple #4
0
def test_node_group_no_data_on_output():
    graph = Topology('cpu')

    source_node = create_source_node()
    destination_node = create_pass_through_node('destination')

    group_node = graph.create_generic_node_group('group', 1, 1)
    pass_through_node = create_pass_through_node()
    group_node.add_node(pass_through_node)

    Connector.connect(group_node.inputs[0].output, pass_through_node.inputs[0])

    Connector.connect(source_node.outputs[0], group_node.inputs[0])
    Connector.connect(group_node.outputs[0], destination_node.inputs[0])

    graph.add_node(source_node)
    graph.add_node(destination_node)

    # This should fail because the node output does not have anything connected to it from the inside.
    with pytest.raises(TypeError):
        graph.step()