\input zb-basic \input zb-ioport \iteman{io-port 05730082} \itemau{Ferrer, Roger; Duran, Alejandro; Martorell, Xavier; Ayguad\'e, Eduard} \itemti{Unrolling loops containing task parallelism.} \itemso{Gao, Guang R. (ed.) et al., Languages and compilers for parallel computing. 22nd international workshop, LCPC 2009, Newark, DE, USA, October 8--10, 2009. Revised selected papers. Berlin: Springer (ISBN 978-3-642-13373-2/pbk). Lecture Notes in Computer Science 5898, 416-423 (2010).} \itemab Summary: Classic loop unrolling allows to increase the performance of sequential loops by reducing the overheads of the non-computational parts of the loop. Unfortunately, when the loop contains parallelism inside most compilers will ignore it or perform a na{\"\i}ve transformation. We propose to extend the semantics of the loop unrolling transformation to cover loops that contain task parallelism. In these cases, the transformation will try to aggregate the multiple tasks that appear after a classic unrolling phase to reduce the overheads per iteration. We present an implementation of such extended loop unrolling for OpenMP tasks with two phases: a classical unroll followed by a task aggregation phase. Our aggregation technique covers the special cases where task parallelism appears inside branches or where the loop is uncountable. Our experimental results show that using this extended unroll allows loops with fine-grained tasks to reduce the overheads associated with task creation and obtain a much better scaling. \itemrv{~} \itemcc{} \itemut{} \itemli{doi:10.1007/978-3-642-13374-9\_30} \end