* [Dist] enable to chunk node/edge data into arbitrary number of chunks
* [Dist] enable to split node/edge data into arbitrary parts
* refine code
* Format boolean to uint8 forcely to avoid dist.scatter failure
* convert boolean to int8 before scatter and revert it after scatter
* refine code
* fix test
* refine code
* move test utilities into utils.py
* update comment
* fix empty data
* update
* update
* fix empty data issue
* release unnecessary mem
* release unnecessary mem
* release unnecessary mem
* release unnecessary mem
* release unnecessary mem
* remove unnecessary shuffle data
* separate array_split into standalone utility
* add example
Co-authored-by: xiang song(charlie.song) <classicxsong@gmail.com>
* Flexible pipeline - Initial commit
1. Implementation of flexible pipeline feature.
2. With this implementation, the pipeline now supports multiple partitions per process. And also assumes that num_partitions is always a multiple of num_processes.
* Update test_dist_part.py
* Code changes to address review comments
* Code refactoring of exchange_features function into two functions for better readability
* Upadting test_dist_part to fix merge issues with the master branch
* corrected variable names...
* Fixed code refactoring issues.
* Provide missing function arguments to exchange_feature function
* Providing the missing function argument to fix error.
* Provide missing function argument to 'get_shuffle_nids' function.
* Repositioned a variable within its scope.
* Removed tab space which is causing the indentation problem
* Fix issue with the CI test framework, which is the root cause for the failure of the CI tests.
1. Now we read files specific to the partition-id and store this data separately, identified by the local_part_id, in the local process.
2. Similarly as above, we also differentiate the node and edge features type_ids with the same keys as above.
3. These above two changes will help up to get the appropriate feature data during the feature exchange and send to the destination process correctly.
* Correct the parametrization for the CI unit test cases.
* Addressing Rui's code review comments.
* Addressing code review comments.
* Send out the message to the distributed lookup service in batches.
* Update function signature for allgather_sizes function call.
* Removed the unnecessary if statement .
* Removed logging.info message, which is not needed.
* Alltoall Fix to bypass gloo - alltoallv bug which is preventing further testing
1. Replaced alltoallv gloo wrapper call with alltoall message.
2. All the messages are padded to be of same length
3. Receiving side unpads the messages and continues processing.
* Code changes to address CI comments
1. Removed unused functions from gloo_wrapper.py
2. Changed the function signature of alltoallv_cpu_data as suggested.
3. Added docstring to include more description of the functionality inside alltoallv_cpu_data. Included more asserts to validate the assumptions.
* Changed the function name appropriately
Changed the function name from "alltoallv_cpu_data" to alltoallv_cpu which I believe is appropriate because underlying functionality is providing alltoallv which is basically alltoall_cpu + padding
* Added code and text to address the review comments.
1. Changed the function name to indicate the local use of this function.
2. Changed docstring to indicate the assumptions made by alltoallv_cpu function.
* Removed unused function from import statement
Removed unused/removed function from import statement.
* Added code to support multiple-file-support feature and removed single-file-support code
1. Added code to read dataset in multiple-file-format
2. Removed code for single-file format
* added files missing in the previous commit
This commit includes dataset_utils.py, which reads the dataset in multiple-file-format, gloo_wrapper function calls to support exchanging dictionaries as objects and helper functions in utils.py
* Update convert_partition.py
Updated function call "create_metadata_json" file to include partition_id so that each rank only creates its own metadata object and later on these are accumulated on rank-0 to create graph-level metadata json file.
* addressing code review comments during the CI process
code changes resulting from the code review comments received during the CI process.
* Code reorganization
Addressing CI comments and code reorganization for easier understanding.
* Removed commented out line
removed commented out line.
* Initial implementation of Distributed data processing step in the Distributed Training pipeline
Implemented the following:
1) Read the output of parmetis (node-id to partition-id mappings)
2) Read the original graph files
3) Shuffle the node/edge metadata and features
4) output the partition specific files in DGL format using convert_partition.py functionality
5) Graph meta data is serialized in json format on rank-0 machine.
* Bug Fixes identified during verification of the dataset
1. When sending out global-id lookups for non-local nodes, in the msg_alltoall.py, conditional filter was used to identify the indices in node_data which is incorrect. Replaced the conditional filter with intersect1d to find out the common node ids and appropriate indices which are later used to identify the needed information to communicate.
2. When writing the graph level json file in distributed processing, the edge_offset on non-rank-0 machines was starting from 0 instead of the appropriate offset. Now added code to start the edge(s) from correct starting offset instead of 0 always.
* Restructuring and consolidation of code
1) Fixed issue when running verify_mag_dataset.py, Now we read xxx_removed_edges.txt and add these edges to `edge_data`. This will ensure that the self-loops and duplicate edges are handling appropriately when compared to the original dataset.
2) Consolidated code into a fewer files and changed code to following the python naming convention.
* Code changes addressing code review comments
Following changes are made in this commit.
1) Naming convention is defined and code is changed accordingly. Definition of various global_ids are defined and how to read them is mentioned.
2) All the code review comments are addressed
3)Files are moved to a new directory with dgl/tools directory as per suggestion
4) README.md file is include and it contains detailed information about the Naming convention adopted by the code, high level overview of the algorithm used in data-shuffling, example command-line to use on a single machine.
* addressing github review comments
Made code changes addressing all the review comments from GitHub.
* Addressing latest code review comments
Addressed all the latest code reviewing comments. One of the major changes is treating the node and edge metadata as dictionary objects and removing all the python lists with numpy arrays.
* Update README.md
Text rendering corrections
* Addressed code review comments
Addressed code review comments for the latest code review
Co-authored-by: xiang song(charlie.song) <classicxsong@gmail.com>