-
Notifications
You must be signed in to change notification settings - Fork 699
Graph Partitioning #2298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This was referenced Feb 6, 2019
[Graph Partitioning] Add optimization to minimize communication cost and number of partitions.
#2359
Merged
facebook-github-bot
pushed a commit
that referenced
this issue
Jun 19, 2019
Summary: Refactoring the way to calculate the memory usage of a node set -- update the memory usage by adding node to the nodes set one by one. Will polish the the usage in following PR. Documentation: #2298 [Optional Fixes #issue] Pull Request resolved: #3062 Test Plan: Added unnitest. Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Differential Revision: D15884632 Pulled By: beicy fbshipit-source-id: 82b434518632d0b5286fc452c08c183fa3f0be5c
facebook-github-bot
pushed a commit
that referenced
this issue
Jul 18, 2019
Summary: This PR added user-defined partition flow. Basically, a struct "PartitionConfig" containing the partition info is passed into Partitioner to enable this flow. Now we let users have the full control of how to do the partitioning. To use this flow, users can write their helper function to generate PartitionConfig, and call Partitioner directly. In the following PR, we will add passing PartitionConfig through HostManager from a yaml file. Related to #2298 Documentation: [Optional Fixes #issue] Pull Request resolved: #3237 Test Plan: Added unittest. ninja test. Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Differential Revision: D16345755 Pulled By: beicy fbshipit-source-id: 64f601004880e1702f5f6eba19d4f5b7749f0864
facebook-github-bot
pushed a commit
that referenced
this issue
Jul 26, 2019
Summary: This PR is the first step of Partitioner refactoring: 1) Move the types used in Partitioner from Partitioner.h to PartitionerTypes.h 2) Move the partition optimizations from Partitioner class to a separate file PartitionerOptimization.cpp 3) Move the partition validation from Partitioner class to a separate file PartitionerValidation.cpp. Documentation: [Optional Fixes #issue] #2298 Pull Request resolved: #3293 Test Plan: current test. Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Reviewed By: bertmaher Differential Revision: D16465488 Pulled By: beicy fbshipit-source-id: e464481df20d2a171b51e82da5eaaf0c2bb0661d
facebook-github-bot
pushed a commit
that referenced
this issue
Jul 30, 2019
Summary: In this PR, the following methods are updated ( the way of how to calculate the memory usage/computation for each node is not changed) : 1. In previous version, Partitioner had a map to store the node and its memory usage. Now this one is removed, and a function `uint64_t getNodeMemUsage(const Node *node) ` is added in to PartitionerUtils.cpp. That is, instead of pre-calculating all nodes' memory usage and storing it in a map, we calculate it when it is necessary. This function is now only called in `loadBalancedPartitioning`, and for each node, it is only called once. So no need to store the value in a map. 2. In previous version, Partitioner had a map to store the node and its computation time. Similar as the above memory usage refactoring, a function `float getNodeComputeTime(const Node *node, const BackendInfo backendInfo)` is added to return the computation time of a node when it is necessary. Now the backendInfo is added as a param in this function for different type of backends. Documentation: #2298 [Optional Fixes #issue] Pull Request resolved: #3318 Test Plan: ninja test. Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Reviewed By: gcatron, nickgg Differential Revision: D16558869 Pulled By: beicy fbshipit-source-id: 69111ba02f041a85dd230319fb2e68516c4db87d
facebook-github-bot
pushed a commit
that referenced
this issue
Aug 12, 2019
Summary: In this PR: 1. Added `class ParititionerBase` which contains interfaces and common functions used for partitioner. and the `class Partitioner` is now derived from `class ParititionerBase` . 2. In `class Partitioner`, we have 3 partition approaches: ``` llvm::Error HeterogeneousPartition(CompilationContext &cctx); llvm::Error QuantizationProfilingPartition(CompilationContext &cctx); llvm::Error PartitionFromConfig(PartitionConfig &partitionConfig); ```` The above 3 method can be called directly by users, or chosen by `llvm::Error Partition(CompilationContext &cctx)` Note: `loadBalancedPartitioning` is still included in `HeterogeneousPartition` since it uses the result of current partitioner approach. Will take it from `HeterogeneousPartition` in next PR and make it as the 4th partition approach. Documentation: [Optional Fixes #issue] #2298 Pull Request resolved: #3384 Test Plan: Ninja test, ./tests/image/run.sh Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Differential Revision: D16685598 Pulled By: beicy fbshipit-source-id: 91f3725b928f7376a9aef12fd1d1d65471506f6b
facebook-github-bot
pushed a commit
that referenced
this issue
Aug 14, 2019
Summary: This is the last main parts of Partitioner refactoring: 1) Rewrote the load-balanced partition as a separate partition flow instead of an optimization pass since this one only uses the number of partitions generated by auto partition and overwrites the partition results. 2) Added unittest for load-balanced partition. 3) Abstract some common code as functions. Documentation: [Optional Fixes #issue] #2298 Pull Request resolved: #3409 Test Plan: added unnitest, ninja test, ./tests/images/run.sh Please see a detailed explanation of how to fill out the fields in the relevant sections in PULL_REQUEST.md. Differential Revision: D16791977 Pulled By: beicy fbshipit-source-id: 2a3042764820c1dfc64d47352629704682fcb058
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This issue is created to track Graph Partitioning work. It is also related to #2045.
Current Plan:
Error Handling:
If there is one node who requires memory exceeds the given available memory, Partitioner will report an error.
Related issue #2687
The text was updated successfully, but these errors were encountered: