Automatic parallelization: Difference between revisions

Content deleted Content added
Servalo (talk | contribs)
No edit summary
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 5 templates: hyphenate params (5×);
Line 93:
inserting the appropriate code to forward the output of one processor to the next processor.
 
Recent research focuses on using the power of GPU's<ref>J Anantpur, R Govindarajan, Runtime dependence computation and execution of loops on heterogeneous systems {{cite web|url=http://hpc.serc.iisc.ernet.in/~jayvant/papers/CGO-2013.pdf |title=Archived copy |accessdateaccess-date=2015-10-05 |url-status=dead |archiveurlarchive-url=https://web.archive.org/web/20151006123251/http://hpc.serc.iisc.ernet.in/~jayvant/papers/CGO-2013.pdf |archivedatearchive-date=2015-10-06 }}</ref> and multicore systems<ref>X. Zhuang, A. E. Eichenberger, Y. Luo, Kevin O’Brien, Kathryn, [https://www.researchgate.net/profile/Alexandre_Eichenberger/publication/220884771_Exploiting_Parallelism_with_Dependence-Aware_Scheduling/links/09e415028c831aa41f000000/Exploiting-Parallelism-with-Dependence-Aware-Scheduling.pdf Exploiting Parallelism with Dependence-Aware Scheduling]</ref> to compute such independent code blocks( or simply independent iterations of a loop) at runtime.
The memory accessed (whether direct or indirect) can be simply marked for different iterations of a loop and can be compared for dependency detection. Using this information, the iterations are grouped into levels such that iterations belonging to the same level are independent of each other, and can be executed in parallel.
 
==Difficulties==
Automatic parallelization by compilers or tools is very difficult due to the following reasons:<ref>{{cite web|url=http://blitzprog.org/posts/automatic-parallelism-and-data-dependency |title=Automatic parallelism and data dependency |url-status=dead |archiveurlarchive-url=https://web.archive.org/web/20140714111836/http://blitzprog.org/posts/automatic-parallelism-and-data-dependency |archivedatearchive-date=2014-07-14 }}</ref>
* dependence analysis is hard for code that uses indirect addressing, pointers, recursion, or indirect function calls because it is difficult to detect such dependencies at compile time;
* loops have an unknown number of iterations;