
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
updated this line to: # ==> the special cases are for disk exhaustion and 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):
i'm guessing that basically this code is mostly implemented at this point and mostly needs to be cleaned up, fuzzed, and extensively further cleaned up and fixed, to address how it was made maybe i should assume the ops are placed, write the lines that use them, and then fuzz it, and then i can continue by rote. assuming all the logical problems have somehow been solved and i can reconstruct the solutions when encountering mistakes