in graphlearn_torch/python/sampler/neighbor_sampler.py [0:0]
def lazy_init_sampler(self):
if not self.is_sampler_initialized:
with self._sampler_lock:
if self._sampler is None:
if self._g_cls == 'homo':
if self.device.type == 'cuda':
self._sampler = pywrap.CUDARandomSampler(self.graph.graph_handler)
elif self.with_weight == False:
self._sampler = pywrap.CPURandomSampler(self.graph.graph_handler)
else:
self._sampler = pywrap.CPUWeightedSampler(self.graph.graph_handler)
self.is_sampler_initialized = True
else: # hetero
self._sampler = {}
for etype, g in self.graph.items():
if self.device != torch.device('cpu'):
self._sampler[etype] = pywrap.CUDARandomSampler(g.graph_handler)
elif self.with_weight == False:
self._sampler[etype] = pywrap.CPURandomSampler(g.graph_handler)
else:
self._sampler[etype] = pywrap.CPUWeightedSampler(g.graph_handler)
self.is_sampler_initialized = True