在 GCN_GPU_NEIGHBOR.hpp 中使用:
754行调用:进入 MetisPartition.hpp :
在 MetisPartitionGraph()函数中调用 MetisPartition() :
MetisPartition() 中调用METIS的API,将METIS分割成的子图存放在 part这个可变参数中:
bool MetisPartition(FullyRepGraph* whole_graph, vector<idx_t>& part, int k, bool obj_cut)
METIS划分好子图后,part[i]=x 含义是节点i被分在了第x子图
因此: MetisPartitionGraph() 在调用 MetisPartition() 后,用 partition_id 承接子图划分后的结果
并且将各个METIS子图所包含的节点ID 按顺序 线性存放在 metis_partition_id 中
而真正将 线性存放的各个METIS子图节点 以 一个METIS子图一个vector<VertexId> 形式组织的是:train_sampler->update_metis_data() 函数做的事情:
train_sampler->update_metis_data()代码执行完,属于 Sampler类 全局的vector<vector<VertexId>>batch_nodes 属性的值就已经被正确安排上 对应METISbatch中的节点ID了