4 ms·
There is an ‘unroll’ parameter in scan that lets you control how many iterations of the loop are fused into a single kernel.
by catgary 3y ago
There is an ‘unroll’ parameter in scan that lets you control how many iterations of the loop are fused into a single kernel.
- cl3misch 3y agoYes, but is it really the same? Afaik the `unroll=n` parameter translates `n` iterations into a vanilla `for` loop which is then unrolled into sequential statements (in contrast to a JAX `fori` loop). There still is no loop on the accelerator, strictly speaking?
- marmaduke 3y agoI think this is up to XLA to handle not Jax. The whole selling point in TF of the tf.function decorator (which uses XLA underneath as well) is that it fuses arithmetic to lower launch count.
- marmaduke 3y agothere's a paper about it that I just found, enjoy https://arxiv.org/pdf/2301.13062 https://arxiv.org/pdf/2301.13062