[docs]defensure_divisibility(numerator:int,denominator:int):"""Ensure that numerator is divisible by the denominator."""assertnumerator%denominator==0,f"{numerator} is not divisible by {denominator}"
[docs]defdivide(numerator:int,denominator:int)->int:"""Ensure that numerator is divisible by the denominator and return the division value."""ensure_divisibility(numerator,denominator)returnnumerator//denominator
[docs]classGlobalMemoryBuffer:""" Global buffer to avoid dynamic memory allocations. Note: Caller should ensure that buffers of the same name are not used concurrently. """def__init__(self):self.buffer={}
[docs]defassert_viewless_tensor(tensor):"""Assert that a tensor is not a view."""ifisinstance(tensor,list):[assert_viewless_tensor(t)fortintensor]returntensorifnotisinstance(tensor,torch.Tensor):returntensorasserttensor._baseisNone,"Ensure tensor._base is None before setting tensor.data"returntensor
[docs]defsafely_set_viewless_tensor_data(tensor,new_data_tensor):"""Safely set tensor's `.data` field."""assert_viewless_tensor(tensor)tensor.data=new_data_tensor