Software pipelining for graphic processing unit acceleration: Partition, scheduling and granularity. (May 2016)