(self, loader: DataLoader)
| 563 | |
| 564 | class _BaseDataLoaderIter: |
| 565 | def __init__(self, loader: DataLoader) -> None: |
| 566 | self._dataset = loader.dataset |
| 567 | self._shared_seed = None |
| 568 | self._pg = None |
| 569 | if isinstance(self._dataset, IterDataPipe): |
| 570 | if dist.is_available() and dist.is_initialized(): |
| 571 | self._pg = dist.new_group(backend="gloo") |
| 572 | self._shared_seed = _share_dist_seed(loader.generator, self._pg) |
| 573 | shared_rng = torch.Generator() |
| 574 | shared_rng.manual_seed(self._shared_seed) |
| 575 | self._dataset = torch.utils.data.graph_settings.apply_random_seed(self._dataset, shared_rng) |
| 576 | self._dataset_kind = loader._dataset_kind |
| 577 | self._IterableDataset_len_called = loader._IterableDataset_len_called |
| 578 | self._auto_collation = loader._auto_collation |
| 579 | self._drop_last = loader.drop_last |
| 580 | self._index_sampler = loader._index_sampler |
| 581 | self._num_workers = loader.num_workers |
| 582 | ws, rank = _get_distributed_settings() |
| 583 | self._world_size = ws |
| 584 | self._rank = rank |
| 585 | # for other backends, pin_memory_device need to set. if not set |
| 586 | # default behaviour is CUDA device. if pin_memory_device is selected |
| 587 | # and pin_memory is not set, the default behaviour false. |
| 588 | if (len(loader.pin_memory_device) == 0): |
| 589 | self._pin_memory = loader.pin_memory and torch.cuda.is_available() |
| 590 | self._pin_memory_device = None |
| 591 | else: |
| 592 | if not loader.pin_memory: |
| 593 | warn_msg = ("pin memory device is set and pin_memory flag is not used then device pinned memory won't be used" |
| 594 | "please set pin_memory to true, if you need to use the device pin memory") |
| 595 | warnings.warn(warn_msg) |
| 596 | |
| 597 | self._pin_memory = loader.pin_memory |
| 598 | self._pin_memory_device = loader.pin_memory_device |
| 599 | self._timeout = loader.timeout |
| 600 | self._collate_fn = loader.collate_fn |
| 601 | self._sampler_iter = iter(self._index_sampler) |
| 602 | self._base_seed = torch.empty((), dtype=torch.int64).random_(generator=loader.generator).item() |
| 603 | self._persistent_workers = loader.persistent_workers |
| 604 | self._num_yielded = 0 |
| 605 | self._profile_name = f"enumerate(DataLoader)#{self.__class__.__name__}.__next__" |
| 606 | |
| 607 | def __iter__(self) -> '_BaseDataLoaderIter': |
| 608 | return self |
nothing calls this directly
no test coverage detected