@techreport{TR-IC-PFG-16-19, number = {IC-PFG-16-19}, author = {Lucas Henrique Morais e Guido Costa Souza de Araújo}, title = {{Construindo um Runtime OpenMP 4.0 com suporte a offload de resolução de dependências para acelerador em FPGA}}, month = {December}, year = {2016}, institution = {Institute of Computing, University of Campinas}, note = {In Portuguese, 10 pages. \par\selectlanguage{brazil}\textbf{Resumo} As barreiras tecnológicas para a implementação de processadores unicore que mantivessem o ritmo de avanço de performance das últimas décadas deram ensejo para o surgimento das arquiteturas multicore que os desenvolvedores de hoje devem aprender a utilizar. A natural dificuldade de se desenvolverem sistemas destinados a tais arquiteturas levaram ao surgimento de diversos frameworks de programação paralela que procuram, cada um a seu modo, tornar tal tipo de desenvolvimento mais eficiente e menos propenso a erros. Nesse contexto surge o conceito de Task Parallelism, capaz de encapsular chamadas de função e pequenos trechos de código em entidades chamadas Tasks, que, sendo um análogo macroscópico das intruções de processador, podem ser escalonadas em paralelo nas diversas unidades de processamento disponíveis desde que suas relações de dependência - inferidas a partir do modo como cada uma acessa os seus dados - sejam respeitadas, numa lógica muito próxima à que rege o escalonamento de instruções para as diversas ALUs disponíveis em um processador superescalar. Atualmente, a especificação OpenMP dá amplo suporte a Task Parallelism, o que criou ocasião para o presente trabalho: o desenvolvimento de um runtime com suporte a OpenMP 4.0 capaz de acelerar task-scheduling por meio de offload de computação relativa à inferência de dependências de dados para um acelerador em FPGA. } }