def retained_parallel
stelliferous@0.0.2.0 · kernel_band_planning.bend:133
import stelliferous@0.0.2.0/kernel_band_planning.bend as KernelBandPlanning
import Base
import stelliferous@0.0.2.0/kernel_cost.bend as Cost
import stelliferous@0.0.2.0/tensor_band.bend as Bands
import stelliferous@0.0.2.0/tensor_band_window.bend as BandWindow
133def retained_parallel(window: BandWindow.Geometry,workers: U32,config: Cost.Configuration,cost: Movement) -> Bool:
134 BandWindow.Geometry{Bands.Geometry{+batch,channels,height,width},kernel,stride,padding,oh,ow} = window
135 Cost.Configuration{mac,byte_ns,operation_ns,grain,wake} = config
136 Movement{+total,+span,+open,+settled,preparation,minimum,+leaves} = cost
137 +workers = U32.max(1,U32.min(workers,858993459))
138 U32.is_lt(1,workers) && Nat.is_le(U32.to_nat(leaves),Nat.mul(U32.to_nat(batch),U32.to_nat((workers * 5 : U32)))) &&
139 F32.is_le(grain,total) && F32.is_lt((parallel_ns(workers,span,open,settled) + 2.0 * U32.to_f32(batch) * wake : F32),total)