Amos Robinson University of New South Wales Rate inference for flow fusion ------------------------------ Our recent work on flow fusion is able to completely fuse a 'kernel' of combinators into a single loop, provided the combinators conform to restrictions such as all input vectors having the same size, and the output of folds not being used as input to subsequent combinators. A real program, however, is unlikely to adhere to such strict restrictions, and thus require multiple loops. The aim of rate inference is to convert a group of combinators into a minimal list of kernels that can each be completely fused by flow fusion. This method of fusion, in contrast to local methods of shortcut fusion such as stream fusion, makes it simpler to ensure that all available fusion will occur without relying on inlining and other optimisations. We are also able to emit compiler warnings when fusion cannot be performed, which helps save the programmer from having to inspect the compiler's core output. Rate inference starts by generating length constraints for vectors from the combinators, such as groups of vectors having equal lengths, and which vectors are shorter than others. The generated constraints are also checked for validity, and warnings are issued if they are inconsistent. After the vectors are partitioned into equivalence classes based on length, typed fusion is performed and combinators that can be assured to have the same length are fused together. In this talk, I will explain the details of rate inference, and explore potential problems when there are multiple 'best' solutions.