Um compilador paralelizante com detecção de paralelismo na linguagem intermediária - Hsiang, Hsueh Tsung (1994)
Os avanços nos vários campos da ciência tem exigidos níveis de desempenho dos computadores cada vez mais altos. Por isso, o objetivo desta pesquisa foi o desenvolvimento de um compilador paralelizante portável que suporta diferentes tipos de máquinas e é capaz de extrair o paralelismo de programas sequênciais. O compilador paralelizante foi projetado tendo em vista as portabilidades do front-end e do back-end, e a geração de código executável paralelo eficiente. Por isso, escolheu-se o compilador GNU gcc como o compilador-base. A detecção de paralelismo no nível da linguagem intermediária traz grandes vantagens sobre as abordagens tradicionais que, em geral, realizam toda a detecção ou no nível do código fonte ou em representações intermediárias de nível mais alto. Portanto, neste compilador paralelizante toda a detecção de paralelismo e as transformações de código são aplicadas sobre a linguagem de transferência de registradores, a linguagem intermediária do GNU gcc. O esquema de auto-escalonamento uniforme é uma técnica desenvolvida durante esta pesquisa, que oferece balanceamento de carga melhorado com baixo overhead. Além disso, ela permite a exploração do paralelismo aninhado encontrado em blocos e laços paralelos.