Automatic parallelization: Difference between revisions

Content deleted Content added
Servalo (talk | contribs)
Removed a misleading assertion and its palliative
Servalo (talk | contribs)
Cleaning up intro
Line 4:
}}
 
'''Automatic parallelization''', also '''auto parallelization''', or '''autoparallelization''' refers to converting sequential [[source code|code]] into [[multi-threaded]] and/or [[Automatic vectorization|vectorized]] (or even both) code in order to utilizeuse multiple processors simultaneously in a shared-memory [[multiprocessor]] ([[Symmetric multiprocessing|SMP]]) machine. The goal of automatic parallelization is to relieve programmers from the hectic and error-prone manual parallelization process.<ref>[http://u.cs.biu.ac.il/~wiseman/para2001.pdf "{{cite journal|last=Yehezkael|first=Rafael|title=Experiments in Separating Computational Algorithm from Program Distribution and Communication|journal=Lecture Notes in Computer Science of Springer Verlag |year=2000|volume=1947|pages=268–278|doi=10.1007/3-540-70734-4_32|series=Lecture Notes in Computer Science|isbn=978-3-540-41729-3}}"]</ref> Though the quality of automatic parallelization has improved in the past several decades, fullyFully automatic parallelization of sequential programs by compilers remainsis a grand challenge due tochallenging itsbecause needit forrequires complex [[program analysis (computer science)|program analysis]] and because the unknownbest factorsapproach (suchmay asdepend inputupon dataparameter range)values duringthat are not known at compilation time.<ref name="pcworks">{{cite book | last = Fox | first = Geoffrey |author2=Roy Williams |author3=Paul Messina | title = Parallel Computing Works! | year = 1994 | publisher = Morgan Kaufmann | pages = 575, 593 | isbn = 978-1-55860-253-3 }}</ref>
 
The programming control structures on which autoparallelization places the most focus are [[Control flow#Loops|loop]]s, because, in general, most of the [[Run time (program lifecycle phase)|execution time]] of a program takes place inside some form of loop.