Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace = "FlexFlow"
name = "dynamic_layer_guid_t"
type = "variant"
features = [
"eq",
"hash",
"fmt",
]

includes = [
"pcg/layer_guid_t.dtg.h",
"pcg/parallel_computation_graph/parallel_layer_guid_t.dtg.h",
]

[[values]]
name = "layer_guid"
type = "::FlexFlow::layer_guid_t"

[[values]]
name = "pcg_layer_guid"
type = "::FlexFlow::parallel_layer_guid_t"
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ includes = [
"pcg/machine_space_coordinate.dtg.h",
"pcg/mapped_parallel_computation_graph/mapped_operator_task_group.h",
"op-attrs/pcg_operator_attrs.dtg.h",
"pcg/parallel_computation_graph/parallel_layer_guid_t.dtg.h",
"task-spec/dynamic_graph/dynamic_layer_guid_t.dtg.h",
"task-spec/device_specific_per_device_op_state.dtg.h",
]

Expand All @@ -38,8 +38,8 @@ name = "op_attrs"
type = "std::optional<::FlexFlow::PCGOperatorAttrs>"

[[fields]]
name = "pcg_layer_guid"
type = "::FlexFlow::parallel_layer_guid_t"
name = "layer_guid"
type = "::FlexFlow::dynamic_layer_guid_t"

[[fields]]
name = "per_device_op_state"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace = "FlexFlow"
name = "dynamic_tensor_guid_t"
type = "variant"
features = [
"eq",
"hash",
"fmt",
]

includes = [
"pcg/tensor_guid_t.dtg.h",
"pcg/parallel_computation_graph/parallel_tensor_guid_t.dtg.h",
]

[[values]]
name = "tensor_guid"
type = "::FlexFlow::tensor_guid_t"

[[values]]
name = "pcg_tensor_guid"
type = "::FlexFlow::parallel_tensor_guid_t"
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ features = [

includes = [
"<optional>",
"task-spec/dynamic_graph/dynamic_tensor_guid_t.dtg.h",
"op-attrs/parallel_tensor_shape.dtg.h",
"kernels/accessor.h",
"pcg/parallel_computation_graph/parallel_tensor_guid_t.dtg.h",
Expand All @@ -21,8 +22,8 @@ src_includes = [
]

[[fields]]
name = "pcg_tensor_guid"
type = "::FlexFlow::parallel_tensor_guid_t"
name = "tensor_guid"
type = "::FlexFlow::dynamic_tensor_guid_t"

[[fields]]
name = "parallel_tensor_shape"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#ifndef _FLEXFLOW_LIB_TASK_SPEC_INCLUDE_TASK_SPEC_DYNAMIC_GRAPH_DYNAMIC_OPEN_DATAFLOW_GRAPH_FROM_CG_H
#define _FLEXFLOW_LIB_TASK_SPEC_INCLUDE_TASK_SPEC_DYNAMIC_GRAPH_DYNAMIC_OPEN_DATAFLOW_GRAPH_FROM_CG_H

#include "pcg/computation_graph.dtg.h"
#include "task-spec/dynamic_graph/dynamic_open_dataflow_graph.dtg.h"

namespace FlexFlow {

DynamicOpenDataflowGraph
make_dynamic_open_dataflow_graph_from_cg(ComputationGraph const &);

} // namespace FlexFlow

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#include "task-spec/dynamic_graph/make_dynamic_open_dataflow_graph_from_cg.h"
#include "op-attrs/pcg_operator_attrs.h"
#include "pcg/computation_graph.h"
#include "task-spec/dynamic_graph/dynamic_layer_guid_t.dtg.h"
#include "task-spec/dynamic_graph/dynamic_open_dataflow_graph.h"
#include "task-spec/dynamic_graph/dynamic_tensor_role.h"
#include "utils/containers/generate_map.h"
#include <optional>
#include <unordered_map>
#include <utility>

namespace FlexFlow {

DynamicOpenDataflowGraph
make_dynamic_open_dataflow_graph_from_cg(ComputationGraph const &cg) {
DynamicOpenDataflowGraph result = make_empty_dynamic_open_dataflow_graph();

for (auto const &[layer, attrs] : get_layer_attrs_mapping(cg)) {
DynamicNodeAttrs result_attrs{
/*task_type=*/std::nullopt,
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/pcg_op_attrs_from_compgraph_op_attrs(attrs.op_attrs),
/*pcg_layer_guid=*/dynamic_layer_guid_t{layer},
/*per_device_op_state=*/std::nullopt,
};

std::unordered_map<DynamicTensorSlot, DynamicValueAttrs> result_inputs =
transform(
get_incoming_tensors(cg, layer),
[](TensorSlotName const &slot_name, tensor_guid_t const &tensor) {
return std::pair<DynamicTensorSlot, DynamicValueAttrs>{
DynamicTensorSlot{
/*slot_name=*/slot_name,
/*slot_tensor_role=*/std::nullopt,
},
DynamicValueAttrs{
/*tensor_guid=*/dynamic_tensor_guid_t{tensor},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
/*role=*/std::nullopt,
},
};
});
std::unordered_map<DynamicTensorSlot, DynamicValueAttrs> result_outputs =
transform(
get_outgoing_tensors(cg, layer),
[](TensorSlotName const &slot_name, tensor_guid_t const &tensor) {
return std::pair<DynamicTensorSlot, DynamicValueAttrs>{
DynamicTensorSlot{
/*slot_name=*/slot_name,
/*slot_tensor_role=*/std::nullopt,
},
DynamicValueAttrs{
/*tensor_guid=*/dynamic_tensor_guid_t{tensor},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
/*role=*/std::nullopt,
},
};
});

result.invocations.emplace(result_outputs, result_attrs, result_outputs);
}

return result;
}

} // namespace FlexFlow
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,38 @@ using namespace ::FlexFlow;
TEST_SUITE(FF_TEST_SUITE) {
TEST_CASE("dynamic_op_dataflow_graph_from_invocation_set") {
DynamicValueAttrs value_1 = DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput{
Node{1},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
/*tensor_type=*/std::nullopt,
};

DynamicValueAttrs value_2 = DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput{
Node{2},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
/*tensor_type=*/std::nullopt,
};

DynamicValueAttrs value_3 = DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput{
Node{3},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
Expand All @@ -50,7 +50,7 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/parallel_layer_guid_t{Node{4}},
/*layer_guid=*/dynamic_layer_guid_t{parallel_layer_guid_t{Node{4}}},
/*per_device_op_state=*/std::nullopt,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ TEST_SUITE(FF_TEST_SUITE) {
std::optional<ParallelTensorSpaceCoordinate> const &shard_coord)
-> DynamicValueAttrs {
return DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput<TensorSlotName>{
Node{src_node_id},
src_slot_name,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/shard_coord,
/*accessor=*/std::nullopt,
Expand Down Expand Up @@ -114,7 +114,8 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/mc2,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/parallel_layer_guid_t{Node{invocation1_id}},
/*layer_guid=*/
dynamic_layer_guid_t{parallel_layer_guid_t{Node{invocation1_id}}},
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand All @@ -140,7 +141,8 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/mc1,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/parallel_layer_guid_t{Node{invocation2_id}},
/*layer_guid=*/
dynamic_layer_guid_t{parallel_layer_guid_t{Node{invocation2_id}}},
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand Down Expand Up @@ -173,7 +175,8 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/mc2,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/parallel_layer_guid_t{Node{invocation3_id}},
/*layer_guid=*/
dynamic_layer_guid_t{parallel_layer_guid_t{Node{invocation3_id}}},
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand Down
27 changes: 14 additions & 13 deletions lib/task-spec/test/src/task-spec/dynamic_graph/pass_expansion.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ TEST_SUITE(FF_TEST_SUITE) {
[](size_t node_id, std::optional<DynamicTensorRole> const &tensor_role)
-> DynamicValueAttrs {
return DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput<TensorSlotName>{
Node{node_id},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
Expand All @@ -33,7 +33,7 @@ TEST_SUITE(FF_TEST_SUITE) {
};
};

parallel_layer_guid_t pcg_layer_guid = parallel_layer_guid_t{Node{20}};
dynamic_layer_guid_t layer_guid{parallel_layer_guid_t{Node{20}}};

DynamicNodeInvocation invocation = [&]() -> DynamicNodeInvocation {
DynamicValueAttrs v1 = mk_value_attrs(0, std::nullopt);
Expand All @@ -53,7 +53,7 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/pcg_layer_guid,
/*layer_guid=*/layer_guid,
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand Down Expand Up @@ -86,7 +86,7 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/pcg_layer_guid,
/*layer_guid=*/layer_guid,
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand All @@ -104,12 +104,12 @@ TEST_SUITE(FF_TEST_SUITE) {
[](size_t node_id, std::optional<DynamicTensorRole> const &tensor_role)
-> DynamicValueAttrs {
return DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput<TensorSlotName>{
Node{node_id},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
Expand All @@ -126,7 +126,7 @@ TEST_SUITE(FF_TEST_SUITE) {
};
};

parallel_layer_guid_t pcg_layer_guid = parallel_layer_guid_t{Node{20}};
dynamic_layer_guid_t layer_guid{parallel_layer_guid_t{Node{20}}};

DynamicNodeInvocation invocation = [&]() -> DynamicNodeInvocation {
DynamicValueAttrs v1 = mk_value_attrs(0, std::nullopt);
Expand All @@ -146,7 +146,7 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/pcg_layer_guid,
/*layer_guid=*/layer_guid,
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand Down Expand Up @@ -185,7 +185,7 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/pcg_layer_guid,
/*layer_guid=*/layer_guid,
/*per_device_op_state=*/std::nullopt,
},
/*outputs=*/
Expand All @@ -210,7 +210,8 @@ TEST_SUITE(FF_TEST_SUITE) {
/*device_coord=*/std::nullopt,
/*mapping=*/std::nullopt,
/*op_attrs=*/std::nullopt,
/*pcg_layer_guid=*/parallel_layer_guid_t{Node{layer_id}},
/*layer_guid=*/
dynamic_layer_guid_t{parallel_layer_guid_t{Node{layer_id}}},
/*per_device_op_state=*/std::nullopt,
};
};
Expand All @@ -219,12 +220,12 @@ TEST_SUITE(FF_TEST_SUITE) {
[](size_t node_id, std::optional<DynamicTensorRole> const &tensor_type)
-> DynamicValueAttrs {
return DynamicValueAttrs{
/*pcg_tensor_guid=*/parallel_tensor_guid_t{
/*tensor_guid=*/dynamic_tensor_guid_t{parallel_tensor_guid_t{
KwargDataflowOutput{
Node{node_id},
TensorSlotName::OUTPUT,
},
},
}},
/*parallel_tensor_shape=*/std::nullopt,
/*shard_coord=*/std::nullopt,
/*accessor=*/std::nullopt,
Expand Down
Loading
Loading