> here's a snippet. if it attack you put your hand in front of it and > say "down!". it's just the intro it's not even the area i'm working on
# ==> i think work ended up in the read_many function despite the read_many_tensors function existing # ==> basically, one outputs partial tensors unless there is a region of all-cached or all-uncached # ==> the special cases are for runs of 0s on the left and right and can be ignored to start def read_many(self, offset_lengths, progress, validate_sorted=True): if validate_sorted: sorted_offset_lengths = list(offset_lengths) sorted_offset_lengths.sort() assert sorted_offset_lengths == offset_lengths OP_FETCH, OP_PLACE, OP_OUTPUT = 1, 2, 4 offset_length_tail_idx_ops = torch.zeros([offset_lengths.shape[0]*2, 5]) OFFSET, LENGTH, TAIL, IDX, OP = range(offset_length_tail_ops.shape[-1]) op_ct = 0 tails = (offset_lengths[:,0] + offset_lengths[:,1]).clamp(max=len(self.mmap)) aligned_offsets = offset_lengths[:,0] // self.blksize; aligned_offsets *= self.blksize aligned_tails = (tails - 1); aligned_tails //= self.blksize; aligned_tails += 1; aligned_tails *= self.blksize; torch.clamp(aligned_tails, max=self.size(), out=aligned_tails) cls = type(self.fetchers) avail_disk_space = (psutil.disk_usage(self.fn).free + cls.sparse_usage) * self.fetchers.usage_frac - cls.sparse_usage min_hole = 0 pbar = range(len(offset_lengths)) if progress: pbar = tqdm.tqdm(pbar, total=len(offset_lengths), desc=progress, leave=False, unit='rd') idx = 0 while idx < len(offset_lengths):