]>Multiloop Parallelisation Using Unrolling and Fission : Algorithm 1
( 1 ) 𝑢 𝑠 𝑒 𝑑 _ 𝑓 𝑝 𝑔 𝑎 _ 𝑎 𝑟 𝑒 𝑎 0
( 2 ) 𝑢 𝑐 b e s t = { 𝑢 𝑓 𝑖 } , where 𝑢 𝑓 𝑖 = 1 for 1 𝑖 𝑛
( 3 ) 𝑞 𝑠 b e s t 0
( 4 ) while   𝑢 𝑠 𝑒 𝑑 _ 𝑓 𝑝 𝑔 𝑎 _ 𝑎 𝑟 𝑒 𝑎 < 𝑡 𝑜 𝑡 𝑎 𝑙 _ 𝑓 𝑝 𝑔 𝑎 _ 𝑎 𝑟 𝑒 𝑎   do
( 5 )  for  all loops 𝑙 𝑝 𝑖   do
( 6 )    𝑢 𝑐 𝑖 [ 𝑢 𝑓 𝑖 ] = 𝑢 𝑐 [ 𝑢 𝑓 𝑖 ] + 1
( 7 )  end for
( 8 )  for all unrolling configurations 𝑢 𝑐 𝑖   do
( 9 )   for all loops 𝑙 𝑝 𝑖   do
( 1 0 )   unroll 𝑙 𝑝 𝑖 for 𝑢 𝑓 𝑖 iterations, where 𝑢 𝑓 𝑖 𝑢 𝑐 𝑖
( 1 1 )   loop fission
( 1 2 )  end for
( 1 3 )  generate new task graph
( 1 4 )  generate complete mapping/scheduling 𝑚 𝑠 𝑖
( 1 5 )  calculate quality score 𝑞 𝑠 𝑖 for 𝑚 𝑠 𝑖
( 1 6 )   𝑞 𝑖 𝑖 𝑞 𝑠 𝑖 𝑞 𝑠 b e s t
( 1 7 ) end for
( 1 8 ) find loop 𝑖 with maximum 𝑞 𝑖
( 1 9 )  𝑞 𝑖 b e s t 𝑞 𝑖 𝑖
( 2 0 )  𝑞 𝑠 b e s t 𝑞 𝑠 𝑖
(21)  𝑚 𝑠 b e s t 𝑚 𝑠 𝑖
( 2 2 )  𝑢 𝑐 b e s t 𝑢 𝑐 𝑖
( 2 3 ) update 𝑢 𝑠 𝑒 𝑑 _ 𝑓 𝑝 𝑔 𝑎 _ 𝑎 𝑟 𝑒 𝑎
( 2 4 ) end while
( 2 5 ) return   𝑢 𝑐 b e s t and 𝑚 𝑠 b e s t
Algorithm 1: Search the best unrolling configuration.