def main(args, devices): # load reddit data data = RedditDataset(self_loop=True) n_classes = data.num_classes g = data[0] features = g.ndata['feat'] in_feats = features.shape[1] labels = g.ndata['label'] train_mask = g.ndata['train_mask'] val_mask = g.ndata['val_mask'] test_mask = g.ndata['test_mask'] g.ndata['features'] = features g.create_formats_() # Pack data data = train_mask, val_mask, test_mask, in_feats, labels, n_classes, g n_gpus = len(devices) if devices[0] == -1: run(0, 0, args, ['cpu'], data) elif n_gpus == 1: run(0, n_gpus, args, devices, data) else: procs = [] for proc_id in range(n_gpus): p = mp.Process(target=thread_wrapped_func(run), args=(proc_id, n_gpus, args, devices, data)) p.start() procs.append(p) for p in procs: p.join()
def main(args, devices): # load reddit data data = RedditDataset(self_loop=True) train_mask = data.train_mask val_mask = data.val_mask test_mask = data.test_mask features = th.Tensor(data.features) in_feats = features.shape[1] labels = th.LongTensor(data.labels) n_classes = data.num_labels # Construct graph g = dgl.graph(data.graph.all_edges()) g.ndata['features'] = features # Pack data data = train_mask, val_mask, test_mask, in_feats, labels, n_classes, g n_gpus = len(devices) if devices[0] == -1: run(0, 0, args, ['cpu'], data) if n_gpus == 1: run(0, n_gpus, args, devices, data) else: procs = [] for proc_id in range(n_gpus): p = mp.Process(target=thread_wrapped_func(run), args=(proc_id, n_gpus, args, devices, data)) p.start() procs.append(p) for p in procs: p.join() run(args, device, data)
def main(args, devices): # load reddit data data = RedditDataset(self_loop=False) n_classes = data.num_classes g = data[0] train_mask = g.ndata['train_mask'] val_mask = g.ndata['val_mask'] test_mask = g.ndata['test_mask'] # Create csr/coo/csc formats before launching training processes with multi-gpu. # This avoids creating certain formats in each sub-process, which saves momory and CPU. g.create_formats_() # Pack data data = train_mask, val_mask, test_mask, n_classes, g n_gpus = len(devices) if devices[0] == -1: run(0, 0, args, ['cpu'], data) elif n_gpus == 1: run(0, n_gpus, args, devices, data) else: procs = [] for proc_id in range(n_gpus): p = mp.Process(target=thread_wrapped_func(run), args=(proc_id, n_gpus, args, devices, data)) p.start() procs.append(p) for p in procs: p.join()
devices = list(map(int, args.gpu.split(','))) n_gpus = len(devices) g, n_classes = load_reddit() # Construct graph g = dgl.as_heterograph(g) in_feats = g.ndata['features'].shape[1] if args.inductive: train_g, val_g, test_g = inductive_split(g) else: train_g = val_g = test_g = g prepare_mp(train_g) prepare_mp(val_g) prepare_mp(test_g) # Pack data data = in_feats, n_classes, train_g, val_g, test_g if n_gpus == 1: run(0, n_gpus, args, devices, data) else: procs = [] for proc_id in range(n_gpus): p = mp.Process(target=thread_wrapped_func(run), args=(proc_id, n_gpus, args, devices, data)) p.start() procs.append(p) for p in procs: p.join()
g, n_classes = load_reddit() # Construct graph g = dgl.as_heterograph(g) in_feats = g.ndata["features"].shape[1] if args.inductive: train_g, val_g, test_g = inductive_split(g) else: train_g = val_g = test_g = g prepare_mp(train_g) prepare_mp(val_g) prepare_mp(test_g) # Pack data data = in_feats, n_classes, train_g, val_g, test_g if n_gpus == 1: run(0, n_gpus, args, devices, data) else: procs = [] for proc_id in range(n_gpus): p = mp.Process( target=thread_wrapped_func(run), args=(proc_id, n_gpus, args, devices, data), ) p.start() procs.append(p) for p in procs: p.join()
print("make sure the number of gpus greater than 1!") sys.exit() dataset = MAG240MDataset(root=args.rootdir) print('Loading graph') (g, ), _ = dgl.load_graphs(args.graph_path) g = g.formats(['csc']) print('Loading features') paper_offset = dataset.num_authors + dataset.num_institutions num_nodes = paper_offset + dataset.num_papers num_features = dataset.num_paper_features feats = np.memmap(args.full_feature_path, mode='r', dtype='float16', shape=(num_nodes, num_features)) procs = [] for proc_id in range(n_gpus): p = mp.Process(target=thread_wrapped_func(train), args=(proc_id, n_gpus, args, dataset, g, feats, paper_offset)) p.start() procs.append(p) for p in procs: p.join() test(args, dataset, g, feats, paper_offset)