CERCIRAS: Connecting Education and Research Communities for an Innovative Resource Aware Society
Time Jan/2022 - Present
Funding:
Abstract: Parallel computing platforms have revolutionised the hardware landscape by providing high-performance, low-energy, and specialized (viz. heterogeneous) processing capabilities to a variety of application domains, including mobile, embedded, data-centre and high-performance computing. However, to leverage their potential, system designers must strike a difficult balance in the apportionment of resources to the application components, striving to avoid under- or over-provisions against worst-case utilisation profiles. The entanglement of hardware components in the emerging platforms and the complex behaviour of parallel applications raise conflicting resource requirements, more so in smart, (self-)adaptive and autonomous systems. This scenario presents the hard challenge of understanding and controlling, statically and dynamically, the trade-offs in the usage of system resources, (time, space, energy, and data), also from the perspective of the development and maintenance efforts. Making resource-usage trade-offs at specification, design, implementation, and run time requires profound awareness of the local and global impact caused by parallel threads of applications on individual resources. Such awareness is crucial for academic researchers and industrial practitioners across all European and COST member countries, and, therefore, a strategic priority. Reaching this goal requires acting at two levels: (1) networking otherwise fragmented research efforts towards more holistic views of the problem and the solution; (2) leveraging appropriate educational and technology assets to improve the understanding and management of resources by the academia and industry of underperforming economies, in order to promote cooperation inside Europe and achieve economical and societal benefits.
Project Team
Query Management Through Machine Learning
Time Jan/2022 - Present
Funding:
Abstract: When human translators work on texts to be translated from a source language, the translation of domain-specific terms becomes complex if the original text is incomplete, badly written or ambiguous, contains unknown abbreviations, or placeholders, has low translatability, or is in the wrong source language. The human translator must know beforehand which are the terms and their specific translations to apply them. A way to mitigate the problem is to open a communication channel between the translators and the domain-specific experts to define the correct translation of terms. However, such communication can fail when we do not process correctly these interactions. Multiple questions about the same terms can be made, overloading the experts with questions already answered. In order to reduce the need for human communication in these situations and thus improve the translator's productivity, we can try to manipulate the content of these questions to identify those already answered. To do so, we can compute the similarity between questions by converting their text and metadata into semantic embeddings. Furthermore, using machine learning methods, we can improve on that and obtain scores that indicate how similar are two pieces of text in terms of their meanings. In this way, we can identify duplicates and similarities in questions, improving the way it is currently done. This project will contribute to the evaluation of existing approaches for query management, review the state-of-the-art on neural language models, and development of machine learning models.
Project Team
Ciência de Dados Eficiente com Rust
Time Jan/2022 - Present
Funding:
Abstract: Ciências de dados é uma área bastante interdisciplinar que permite revolucionar indústria, agricultura, monitoramento, etc. Muitas atividades neste contexto demandam o uso de linguagens de programação para análise e processamento de dados. A aplicação da ciência nos dados também demanda de linguagens eficientes, que permitam executar algoritmos de mais rapidamente nas arquiteturas de computadores atuais (paralelos). Nesse contexto, Rust é uma linguagem de programação promissora. O desafio deste projeto considera investigar a linguagem Rust para uso em ciência de dados. A pesquisa consiste na exploração das soluções do estado-da-arte e implementação de aplicações reais, avaliando os comportamentos e situações recorrentes na área de ciência de dados.
Project Team
Resilient Data Pipelines
Time Jan/2022 - Present
Funding:
Abstract: The programming concept of data pipelines is analogous to data-flow or a directed graph of components (mostly known as operators) that exchange information (messages or events) over established connections in a producer/consumer relationship. An operator represents an asynchronous process that is executed in a data-driven model. Operators can be grouped to execute together in one execution environment (for instance, within the same container). A group of operators can be configured to run with a dedicated multiplicity, that is, the group can be replicated into multiple instances, each of which runs in its own execution environment. An executable data pipeline is viewed as a single application entity from a user perspective and the distributed data pipeline engine concerns are hidden from users, such as data communication and synchronization, and automatic recovery from unexpected failures of a group during execution or within communications between groups. Capturing a fine-grain (record-level) data lineage of a data pipeline execution helps investigate the root cause of an error. In this sense, data lineage queries could be expressed to forward/backward ask which output/input records contributed to a given outcome. Our main motivation in this project is to support rollback recovery protocol and fine-grain data lineage together for data pipeline executions. The contributions of this project are the implementation and evaluation of rollback recovery protocol and data lineage.
Project Team
Automated Planning for Optimal Data Pipeline Instantiation
Time Jan/2021 - Sep/2022
Funding:
Abstract: The project aims to model Data Pipelines described in a graph language as an automated planning problem to optimize pipeline deployment in a kubernetes infrastructure. The project deals with challenges in basic research such as numeric planning heuristics, as well as technical challenges such as the integration of the resulting plans into the optimization of such pipelines. The project also aims to apply planning algorithms to automatically debug such pipelines.
Project Team
Ciência de dados aplicada à biodiversidade: integração de dados moleculares e análises ecológicas em grande escala para monitorar a biodiversidade do CPCN Pró-Mata
Time Jan/2021 - Present
Funding:
Abstract: A biodiversidade do planeta Terra é imensamente complexa e ainda pouco compreendida. A maior parte das espécies que a compõem é ainda desconhecida e, dentre as já descritas para a ciência, sabe-se pouco sobre seus papeis ecológicos, sua relevância para a manutenção funcional dos ecossistemas e sua resiliência frente à atual crise ambiental induzida pelos impactos humanos. Isto é particularmente relevante no caso de biomas megadiversos e altamente impactados, como a Mata Atlântica. Nesse contexto, o desenvolvimento e a aplicação integrada de novas tecnologias para gerar e analisar dados em grande escala sobre a biodiversidade são passos cruciais para acelerar nossa compreensão sobre este tema, bem como embasar estratégias eficazes de proteção e monitoramento ambiental. O presente projeto tem por objetivo contribuir neste sentido, desenvolvendo abordagens que promovam a integração entre dados de eDNA metabarcoding (que permite o inventário simultâneo de milhares de espécies presentes em uma amostra ambiental), análises de redes ecológicas complexas e técnicas computacionais de processamento e análise de ?big data?. O projeto terá como foco uma área de Mata Atlântica (RPPN Pró-Mata, PUCRS, Rio Grande do Sul) contendo um mosaico ecossistemas complexos, nos quais já foram registrados níveis muito altos de biodiversidade. A partir de amostras de água e solo coletadas em diferentes ambientes e ao longo de diferentes janelas de tempo, sequências de DNA (eDNA metabarcodes) serão geradas com conjuntos de marcadores de ampla capacidade de detecção de organismos procariotos e eucariotos. Os dados serão inicialmente analisados utilizando métodos computacionais básicos de descrição de biodiversidade, e a seguir empregando abordagens que caracterizam redes complexas de co-ocorrência de táxons e sua interação com variáveis abióticas. Ao longo do estudo, novos métodos computacionais serão desenvolvidos com a finalidade de identificar e caracterizar padrões relativos à dinâmica espaço-temporal da biodiversidade em ecossistemas complexos.
Project Team
Conjunto de Aplicações IoT com Processamento Paralelo para Avaliação de Hardware e Software
Time Jan/2021 - Present
Funding:
Abstract: É comum uma grande parte dos aparelhos eletrônicos comunicarem-se entre si ou com a internet. Tudo está interligado, constituindo o que chamamos de IoT (Internet das Coisas). Há uma interconexão entre o mundo digital e o físico, tornando-o mais interativo e responsivo. O objetivo é automatizar, otimizar e adicionar inteligência aos processos. Por isso, essas são tecnologias habilitadoras empregadas em conjunto com diversas outras áreas (agricultura, saúde, indústria e cidades inteligentes). Essas soluções requerem cada vez mais de hardware/software paralelos. Há uma grande carência de Benchmarks (conjunto de aplicações) para validar e avaliar as novas soluções que estão e serão desenvolvidas. O objetivo deste projeto é criar uma suíte de benchmarks com aplicações paralelas realísticas encontradas em dispositivos IoT. Assim, possibilitando a avaliação sistemática de soluções de hardware/software para este domínio.
Project Team
Avaliação do Esforço de Programação de Aplicações Paralelas
Time Jan/2021 - Present
Funding:
Abstract: As interfaces de programação de aplicações (APIs) paralelas surgiram a partir da popularização das arquiteturas com múltiplos núcleos de processamento, ajudando a abstrair a complexidade de programação para essas arquiteturas. Com muitas APIs disponíveis aos programadores, surgiu a necessidade de avaliá-las. Além do desempenho, um fator que deve ser considerado é o esforço para desenvolver aplicações paralelas utilizando tais APIs. Porém, essa não é uma tarefa fácil, pois envolve a condução de experimentos empíricos com pessoas. Acreditamos que as métricas de codificação comumente usadas na avaliação de software tradicional podem dar úteis indicadores sobre o esforço de programação de aplicações paralelas, embora não considerem características do ciclo de desenvolvimento de tais aplicações. Logo, este projeto tem por objetivo investigar as possíveis melhorias a serem implementadas nas métricas de codificação de modo a torná-las mais adequadas para avaliar aplicações paralelas.
Project Team
Desenvolvimento de uma Ferramenta para a Análise Preditiva de Risco em Sífilis Congênita: Interação entre Ciência de Dados e Saúde Pública
Time Jan/2021 - Present
Funding:
Abstract: A sífilis é a segunda causa infecciosa mais comum de natimortos em todo o mundo, apesar de ser uma condição evitável. O Brasil dispõe de um sistema de informações que possibilita um diagnóstico clínico-social dos problemas de saúde e a integração entre a ciência de dados e a área da saúde pode criar soluções factíveis para problemas de saúde como a alta incidência de sífilis congênita. Sendo assim, o objetivo desse trabalho é desenvolver uma ferramenta de predição de risco que auxilie na diminuição do número de casos e da gravidade da sífilis congênita.
Project Team
SPar4.0: Paralelismo de Stream nas Tecnologias 4.0
Time Jan/2020 - Present
Funding:
Abstract: Com as evoluções tecnológicas recentes, surgiu o movimento da quarta revolução industrial. Seus conceitos e ideias estão sendo adaptados e incorporados em outros setores tais como Agricultura e Saúde. Assim, dando espaço ao termo Tecnologias 4.0 para se referir às tecnologias habilitadoras dos conceitos e ideias da quarta revolução industrial. As aplicações das chamadas Tecnologias 4.0 executam em sistemas computacionais de pequena, média e larga escala, os quais vêm apresentando um alto grau de paralelismo e heterogeneidade no hardware. Também, a maior parte dessas aplicações podem ser caracterizadas como entidades ou sistemas de processamento de fluxo contínuo de dados (stream processing), pois os sistemas computacionais estão continuamente comunicando uns com os outros e tendo que processar assim que os dados chegam. As interfaces de programação paralela existentes para exploração do paralelismo em aplicações de processamento de stream, ainda são muito complexas e limitantes. Elas têm sido desenvolvidas para sistemas computacionais de larga (clusters/cloud) ou média escala (servidores) e não fornecem mecanismos que lidam com autoadaptatividade para atender níveis de qualidade de serviço exigidos (latência, vazão ou consumo de energia). Esse projeto irá concentrar seus esforços para contribuir com o processo de desenvolvimento de software paralelo em sistemas computacionais constituídos de hardware embarcado com processadores de múltiplos núcleos. Visando acelerar o processo de entrega de novas soluções de software para o contexto das Tecnologias 4.0, os objetivos principais deste projeto são: tornar a exploração do paralelismo de stream mais produtiva e simples; fornecer abstrações de software para lidar com a implementação de estratégias autoadaptativas nas aplicações; e criar algoritmos para atender os requisitos de qualidade de serviço em tempo de execução.
Project Team
Benchmarks para Processamento Paralelo de Stream
Time Jan/2020 - Present
Funding:
Abstract: Este projeto busca estudar, compreender e avaliar benchmarks para processamento paralelo de stream. Existem diversos benchmarks que incluem aplicações para processamento de stream, porém, são poucos os que exploram paralelismo nessas aplicações. O objetivo deste projeto é investigar o estado-da-arte para mapear as linguagens, técnicas, paradigmas e aplicações mais utilizadas nesse domínio. Com isso, comparar os resultados com os benchmarks para verificar se eles são representativos o suficiente e quais lacunas ainda não foram preenchidas. Dessa forma, poderemos melhorar algumas aplicações desenvolvidas dentro do Grupo de Modelagem de Aplicações Paralelas (GMAP) para preencher essas lacunas. Os resultados esperados são um mapa do estado da arte para guiar a construção de um benchmark representativo utilizando o conjunto inicial de aplicações melhoradas.
Project Team
Análise Visual de Grandes Conjuntos de Dados Multivariados no Contexto Geoespacial
Time Jan/2019 - Present
Funding:
Abstract: Com a popularidade dos telefones celulares, GPS e outras tecnologias, houve um aumento na quantidade de dados multivariados geoespaciais gerados, como dados abertos do governo, dados meteorológicos e dados de redes sociais. A visualização destes dados facilita na análise de como diferentes atributos se correlacionam geograficamente, mas esta não é uma tarefa trivial, sobretudo quando o volume de dados gerado é maior que a capacidade de processamento. Por isso, soluções e alternativas de computação de alto desempenho são necessárias. O objetivo deste projeto é integrar dois sistemas para oferecer uma solução mais robusta e completa: GeoMultiVis (permite a análise visual de dados multivariados geoespaciais) e GMaVis (permite processar um grande volume de dados geoespaciais de forma simplificada). Contribuições esperadas: identificar o estado da arte nesta área; desenvolver um protótipo para visualização de grandes volumes de dados multivariados geoespaciais e usá-lo em um estudo de caso.
Project Team
SParCloud: Stream Parallelism in the Cloud
Time Jan/2020 - Present
Funding:
Abstract: O processamento de fluxos de dados contínuo (stream) é um dos paradigmas mais usados nos sistemas computacionais modernos. o aumento da popularidade da internet das coisas (Internet of Things - IoT) e a explosão do grande volume de dados (Big Data) têm tornado o processamento de stream um tópico de tendência em pesquisa e desenvolvimento. Existem milhões de fontes de dados na Internet que estão gerando, coletando ou trocando informações através de diferentes dispositivos (computador pessoal, celulares, sensores, etc.). Nesse cenário, cresce rapidamente o número de aplicações de stream que necessitam explorar técnicas de computação paralela para conseguir atender à demanda por alta vazão no processamento dos dados e baixa latência na resposta aos usuários. Este projeto tem por objetivo o aperfeiçoamento e consolidação de um framework para permitir que aplicações de stream sejam paralelizadas de forma mais produtiva através de uma interface de programação própria de mais alto nível de abstração, atendendo a exploração do paralelismo em diferentes arquiteturas (e.g., clusters e GPUs).
Project Team
Explorando Paralelismo de Stream em Aplicações de Internet das Coisas
Time Jan/2019 - Present
Funding:
Abstract: Este projeto aborda a exploração do paralelismo de stream em aplicações de Internet da Coisas (Internet of Things - IoT). Existe uma grande quantidade de aplicações de processamento de stream emergindo no contexto de IoT que demandam de processamento paralelo para atender uma Qualidade de Serviço (Quality of Service - QoS) adequada. O objetivo é usar a linguagem de domínio específico criada pelo proponente em sua Tese de Doutorado, que se chama SPar. Além disso, usar outras interfaces de programação paralela do estado-da-arte para permitir uma análise comparativa de desempenho e usabilidade em aplicações de IoT. Os resultados esperados são um conjunto de aplicações de IoT paralelizadas e uma análise comparativa do desempenho e usabilidade.
Project Team
SParCloud: Stream Parallelism in the Cloud
Time Jan/2019 - Present
Funding:
Abstract: The class of stream processing applications represents different important processing domains (e.g., image, video, audio, and unstructured data produced by sensors). The project challenge is to enable these applications to run in cloud computing environments rather than running in traditional high-performance processing centers. The cloud computing model enables greater control over the resources and the user can pay-per-use. The elasticity (increase and decrease the use of computational resources) of these environments allows users to save money when stream processing applications support the proper on-demand resource provisioning. This scenario is quite interesting and appropriate to be investigated in these applications since the intensity of the data flow varies and the computational cost of the operation is often irregular for each item/task being processed. Our goal in this project is to investigate different ways of exploiting parallelism and automatic elasticity. In addition, we intend to provide efficient stream parallelism support for a set of applications from this domain in the cloud.
Project Team
Paralelismo de Dados Automático em Aplicações de Processamento de Stream
Time Jan/2019 - Present
Funding:
Abstract: Aplicações de processamento de stream são responsáveis por atender uma demanda relativamente grande de usuários na internet e serviços em larga escala. Dada a importância deste domínio de aplicação, a busca por obter melhores indicadores de desempenho nas arquiteturas de computadores atuais é incessante. Este projeto tem como objetivo investigar e criar uma solução que permite identificar regiões em aplicações de processamento de stream que possam explorar o paralelismo de dados de forma totalmente automática, ou seja, sem a necessidade de intrusão de código extra. Também de forma automática, o objetivo é analisar a melhor opção de padrão para gerar código paralelo que combine o paralelismo de dado com o paralelismo de stream já existente através da SPar. Espera-se que o conjunto de soluções a serem criadas possa acelerar as aplicações de processamento de stream em arquiteturas com processadores multi-core sem a necessidade de intervenção do desenvolvedor de software.
Project Team
Programação Paralela em GPU para Aplicações de Processamento de Stream
Time Jan/2018 - Jan/2020
Funding:
Abstract: Arquiteturas paralelas heterogêneas estão cada vez mais presentes nos sistemas computacionais atuais. Isso vai desde servidores até celulares, aonde existe pelo menos um processador de propósito geral (multi-core) e outro co-processador de propósito específico para o processamento gráfico e matemático (many-core). Tal cenário proporciona um paralelismo massivo e um alto poder computacional. No entanto, é um desafio para programadores explorarem todo este paralelismo disponível de maneira eficiente. Tratando-se de arquiteturas heterogêneas, a complexidade é ainda maior, pois envolve dois paradigmas de programação paralela, ou seja, duas formas diferentes de programar e modelar o paralelismo no código fonte. O objetivo deste projeto é aliar a SPar à programação paralela para GPUs (Graphics Processing Unit). A SPar é uma linguagem específica de domínio criada recentemente pelo Grupo de Modelagem de Aplicações Paralelas (GMAP) com suporte as arquiteturas multi-core (CPU) para simplificar a programação paralela em aplicações de streaming. Este projeto visa explorar soluções de programação paralela do estado da arte para arquiteturas many-core (GPUs) a fim de explorar o paralelismo das duas arquiteturas ao mesmo tempo em aplicações de processamento de extit{stream}. Além de proporcionar ao bolsista conhecimentos na temática do projeto, os resultados e a implementação do paralelismo em aplicações reais irão colaborar para propor uma abstração da programação paralela em GPUs junto da SPar futuramente.
Project Team
ParaElastic: Provendo e Abstraindo o Paralelismo e a Elasticidade Automática em Aplicações de Streaming
Time Jan/2018 - Jan/2020
Funding:
Abstract: Aplicações de streaming estão cada vez mais presentes em nossos sistemas atendendo diversos tipos de usuários. Com os recentes avanços tecnológicos, elas vêm sendo exploradas e desafiadas a resolverem problemas importantes para a humanidade em áreas como a medicina (análise de imagens médicas para descoberta de doenças), transporte (carro autônomo e monitoramento de tráfego), agricultura (monitoramento de pragas e otimização no uso de pesticidas) e segurança (para monitoramento e detecção de indivíduos). Um dos desafios nestas aplicações é a exploração do paralelismo para atender uma determinada qualidade de serviço associada a vazão e a latência. A característica básica de uma aplicação de stream é ter um conjunto contínuo de itens/instruções/tarefas (em sua maioria infinito) que fluem naturalmente através de uma sequência de operações, computando sobre cada elemento do stream. Sem este fim determinado, os dados não podem ser simplesmente particionados e mapeados para unidades de processamento paralelas. Além disso, também existe uma dependência entre as operações, onde cada operação consome uma entrada de dados produzida pela operação anterior e produz na saída o resultado do processamento para a próxima operação, assemelhando-se a uma linha de produção. Outro desafio é permitir que estas aplicações possam executar em ambientes de nuvens computacionais ao invés de executar nos tradicionais centros de processamento de alto desempenho. O modelo de computação em nuvem permite um controle maior sobre os recursos e o usuário pode pagar somente pelo que usa. Ao mesmo tempo, é possível ter acesso instantaneamente a um grande poder computacional sem mesmo ter que adquirir o hardware. A elasticidade (aumentar e diminuir o uso de recursos computacionais) destes ambientes possibilita a diminuição dos custos quando as aplicações de streaming são preparadas para fazer a utilização adequada e sob demanda dos recursos. Este cenário é bem favorável e apropriado para ser explorado nestas aplicações, uma vez que a intensidade do fluxo contínuo de dados varia e o custo computacional da operação muitas vezes é irregular para cada item/tarefa a ser processada. Ciente destes desafios, o projeto tem como objetivo investigar diferentes formas de explorar o paralelismo e a elasticidade automática, bem como fornecer o suporte eficiente a um conjunto de aplicações de streaming aliando estas duas propriedades importantes.
Project Team
DDPE: A DSL for the Dot-Product Engine
Time Jan/2018 - Jan/2019
Funding:
Abstract: Este projeto tem como motivação a criação de uma linguagem específica de domínio (Domain-Specific Language - DSL) para o acelerador de hardware Dot-Product Engine (DPE). O DPE é um acelerador recentemente projetado pela HP para aplicações que realizam operação de soma de produtos com grande frequência. Estas operações são realizadas em programas desenvolvidos no domínio de Machine Learning e Deep Learning, os quais são importantes por diversas razões. Por exemplo, estas aplicações são desenvolvidas para melhorar a vida das pessoas em diversos segmentos da sociedade (e.g., saúde, segurança, financeiro, conforto, acessibilidade, etc.). A realização deste projeto permitirá oferecer uma DSL de mais alto nível para explorar/usar os recursos do acelerador DPE. Isso será de suma importância para que novas e sofisticadas aplicações possam ser desenvolvidas, visto que o principal limitador da linguagem DPE atualmente disponível é o baixo nível de abstração (muito atrelado às propriedades arquiteturais) e as restrições quanto a expressividade de operações para aplicações de Machine Learning e Deep Learning.
Project Team
Programação Paralela e Distribuída para Aplicações de Processamento de Stream
Time Jan/2018 - Jan/2019
Funding:
Abstract: Aplicações baseadas em stream se tornaram amplamente utilizadas nos últimos anos. A grande maioria delas necessita de respostas imediatas com alta vazão no processamento dos elementos do stream. Alguns exemplos são processamento de vídeo e imagem, análise de dados em tempo real, aplicações de rede, simulações e sistemas reativos. Neste contexto, apresentamos a SPar que é uma linguagem específica de domínio embarcada na linguagem C++ para realizar o paralelismo de stream. Ela apresenta uma nova abordagem, permitindo que usuários com pouco conhecimento em programação paralela possam, usando apenas cinco atributos e dois tipos de anotações, anotar e identificar no código sequencial a região de paralelismo. Além disso, o compilador da SPar é usado para gerar um código paralelo que suporta os sistemas multicore. No entanto, ainda é necessário implementar neste compilador a geração automática para arquiteturas multi-computador, como clusters e grids, cujas regras de transformações já foram definidas. Em vista disso, o objetivo deste projeto é de implementar a geração de código paralelo para este tipo de arquitetura utilizando bibliotecas de troca de mensagem como MPI e suas variações. As principais contribuições esperadas são: (I) validação das regras de transformação propostas através de um gerador automático de código; (II) portabilidade de código entre arquiteturas multicore e clusters/grids; (III) um compilador que poderá ser utilizado pela comunidade científica para paralelização de aplicações baseadas em stream.
Project Team
Exploração do Paralelismo em Aplicações de Processamento de Stream Relevantes para a Indústria Tecnológica
Time Jan/2017 - Jan/2018
Funding:
Abstract: Grande parte das aplicações do mundo real podem ser caracterizadas como um fluxo contínuo de processamento. São as chamadas aplicações de processamento de stream. Elas estão presentes em diversos segmentos da indústria tecnológica, colaborando para o surgimento de soluções inovadoras que agregam valor aos produtos que têm alto impacto na vida cotidiana das pessoas. De modo geral, as que mais precisam da exploração do paralelismo podem ser categorizadas em: I) aplicações de processamento de imagem, video e áudio que normalmente realizam operações de codificação, reprodução, filtro, captura, etc.; II) aplicações de backup, compressão e deduplicação em dados armazenados e recebidos de diferentes fontes (sensores e aparelhos mobile, monitoramento de pacientes e sistemas, registros de log, etc.); e III) aprendizado de máquina profundo (Deep Learning) que envolve o reconhecimento de padrões e informações em vídeos, áudio, imagens e em outras bases de dados. Dentro deste contexto, algumas aplicações requerem uma latência baixa e uma alta vazão. Na maior parte das aplicações de stream, estes requisitos só podem ser atendidos através da exploração do paralelismo. Diante disso, o projeto tem como objetivo a exploração do paralelismo em um conjunto de aplicações de processamento de stream do mundo real usando a linguagem específica de domínio SPar. Ela foi criada pela equipe do grupo de pesquisa GMAP da PUCRS com a finalidade de simplificar a exploração do paralelismo em aplicações de stream. Além de contribuir para melhorar o desempenho das aplicações de stream, este projeto ajudará a validar a SPar em um ambiente real.
Project Team
Uma DSL para Aplicações MapReduce em Sistemas Multi-Core Baseada em Anotações
Time Jan/2017 - Jan/2018
Funding:
Abstract: A programação paralela tem sido um grande desafio para muitos desenvolvedores de aplicação. Uma forma de explorar o paralelismo de dados é usar o padrão MapReduce, do qual surge o termo aplicações MapReduce. A popularidade deste padrão cresceu com o aumento massivo de dados e ele tem sido amplamente usado, especialmente em ambientes distribuídos nesta última década. Mais recentemente, a utilização do MapReduce também começou a ser explorada em ambientes de memória compartilhada (multi-core). O maior desafio neste cenário é o suporte de abstrações de alto nível para este tipo de aplicação. Enquanto que as soluções do estado da arte atual abstraem detalhes para o programador de sistemas, os desenvolvedores de aplicação possuem dificuldade em lidar com detalhes atrelados à programação paralela. Podemos destacar a implementação do próprio padrão MapReduce, do balanceamento de carga e das customizações orientadas a otimização do desempenho para arquitetura alvo. Outro problema é a utilização de diretivas de compilação ou extensões de linguagem que não são parte da linguagem hospedeira padrão, pois possuem uma sintaxe própria e pouco familiar ao que o desenvolvedor de aplicação está acostumado a trabalhar. O objetivo deste projeto é propor uma abordagem de abstração diferente e especializada. Para isso, a proposta é a criação de uma linguagem específica de domínio interna baseada em anotações do padrão C++17, apoiando desenvolvedores de aplicações MapReduce com abstrações de mais alto nível e familiares ao seu ambiente de desenvolvimento.
Project Team
Avaliação de uma Linguagem Específica de Domínio para Paralelismo de Stream
Time Jan/2016 - Jan/2017
Funding:
Abstract: Aplicações baseadas em stream se tornaram amplamente utilizadas nos últimos anos. A grande maioria delas necessita de respostas imediatas com alta vazão no processamento dos elementos do stream. Alguns exemplos são processamento de vídeo e imagem, análise de dados em tempo real, aplicações de rede, simulações e sistemas reativos. Neste contexto, apresentamos a SPar que é uma linguagem específica de domínio embarcada na linguagem C++ para realizar o paralelismo de stream. Ela apresenta uma nova abordagem, permitindo que usuários com pouco conhecimento em programação paralela possam, usando apenas cinco atributos e dois tipos de anotações, anotar e identificar no código sequencial a região de paralelismo. Além disso, o compilador da SPar é usado para gerar um código paralelo que suporta os sistemas multicore. No entanto, ainda é necessário realizar uma avaliação mais ampla do seu desempenho em aplicações reais, bem como experimentos de software para medir o esforço de programação em relação aos frameworks do estado da arte. Em vista disso, o objetivo deste projeto é implementar diferentes tipos de aplicações e comparar com os demais frameworks o esforço e o desempenho da SPar. As contribuições esperadas são: (I) novos resultados do desempenho da SPar para otimização da geração de código; (II) informações sobre o esforço necessário com o intuito de melhorar a interface com o programador; (III) descoberta de novas aplicações de stream e limitações da SPar.
Project Team
Um Compilador para Geração Automática de Código Paralelo em Aplicações MapReduce
Time Jan/2016 - Jan/2017
Funding:
Abstract: Visando melhoria de performance, simplicidade e escalabilidade no processamento de dados amplos, o Google propôs o padrão paralelo MapReduce. Este padrão tem sido implementado de variadas formas para diferentes níveis de arquitetura, alcançando resultados significativos com respeito a computação de alto desempenho. No entanto, desenvolver código otimizado com tais soluções requer conhecimento especializado na interface e na linguagem de programação de cada solução. Durante a dissertação de mestrado de um membro do GMAP (Grupo de Modelagem de Aplicações Paralelas) foi criada uma interface unificada de programação MapReduce que ofereceu regras de transformação de código que permitem partir de uma linguagem de alto nível e gerar soluções otimizadas para arquiteturas de memória compartilhada e distribuída. A interface proposta é capaz de evitar perdas de performance uma vez que a geração através das regras apresentou resultados similares à aplicações paralelizadas manualmente, enquanto alcança uma redução de código e esforço de programação que aumenta a produtividade do desenvolvedor. Este projeto tem como objetivo dar continuidade a esta pesquisa a partir do desenvolvimento de um gerador de código para realizar automaticamente as transformações e realizar melhorias na interface através do estudo de outras ferramentas atuais como Spark, Storm e Flink.
Project Team
Uma Linguagem Específica de Domínio para Visualização de Grandes Volumes de Dados
Time Jan/2015 - Jan/2016
Funding:
Abstract: Na última década a produção de dados em todo o planeta cresceu de forma exponencial . Estes dados, possuem uma origem muito diversificada posto que a quantidade de agentes produtores de dados cresce com o uso da tecnologia. Exemplos de produtores de quantidades massivas de dados são redes sociais, simulações, sensores, registro de ligações telefônicas e informações sobre atividades de clientes. A análise destes dados pode fornecer informações para construção de conhecimento sobre tendências e comportamentos e auxiliar nas tomadas de decisões, no ambiente corporativo, científico e acadêmico. Ocorre que a análise destes dados em forma bruta é complexa, e em alguns casos inviável devido ao grande volume. Neste contexto, a utilização de técnicas de visualização torna-se uma alternativa para auxiliar na percepção destes dados. O uso de diferentes formas de visualização fornece ao analisador um modo de apresentação dos dados que favorece a percepção, já que utiliza gráficos e imagens para representar os dados. É comprovado que a utilização de imagens e formas de representação visual facilitam a percepção humana. Neste caso o processamento de imagens é realizado em paralelo pelo sistema de percepção humana, ao contrário de dados em forma de texto, que ficam limitados ao processo sequencial de leitura. Existem visualizações que possuem um processo de criação complexo, pois necessitam de programação. A visualização quando aplicada sobre uma quantidade massiva de dados acrescenta a complexidade de paralelização ou otimização, tanto na sua geração como para suportar interações. Isso se torna uma tarefa difícil para usuários, cientistas de áreas pouco contempladas pela computação e leigos no desenvolvimento de visualizações já que é necessário se preocupar com o gerenciamento de uma grande quantidade de dados, além da visualização e da programação em si. Linguagens Específicas de Domínio (ou Domain-Specific Languages - DSL) são linguagens que procuram resolver um domínio de problema particular. As DSLs vêm sendo utilizadas no contexto da aplicação ou para a geração de técnicas de visualização. Já que permitem a criação simplificada, fornecem uma interface de alto nível que abstrai detalhes de programação e, algumas, incluem o paralelismo. Isso reduz o esforço e o tempo necessário para a geração de uma visualização. No entanto, fica aberta em aberto a possibilidade de criação de uma DSL que atenda aos seguintes requisitos: possuir uma interface de fácil utilização pelo usuário que não possui conhecimentos avançados em programação; permitir a criação de visualizações de maneira rápida e fácil; utilize grandes volumes de dados. Este projeto visa abordar o processamento de grande volume de dados em paralelo e a inserção de diferentes tipos de visualizações na DSL. O objetivo é de identificar e desenvolver visualizações que podem ser adicionadas na linguagem fazendo um estudo dos tipos de visualizações disponíveis e mais utilizados. Com isso, será possível a validação da linguagem proposta, avaliando o tempo de processamento dos dados e o esforço de programação.
Project Team
Elasticidade Automática em Aplicações MapReduce para Nuvens Computacionais
Time Jan/2016 - Jan/2018
Funding:
Abstract: Com a facilidade de acesso à internet, a quantidade de dados produzida tem aumentado significativamente, principalmente nos últimos 10 anos. The Zettabyte Era, é uma pesquisa realizada pela Cisco, que mostra um estudo e projeção sobre os dados criados na internet. O histórico abordado pela pesquisa, mostra que em 1992, 100GB de dados eram criados por dia. Em 2013, essa quantidade era em torno de 28,875 GB por segundo. E para 2018, a projeção para a quantidade de dados criadas é de 50,000 GB por segundos. Esse aumento de dados é uma ideia que já está amadurecida na área da computação, por isso, empresas e diversos grupos de pesquisas vem trabalhando com o objetivo de criar mecanismos para entender e coletar maiores informações que são geradas na internet. Atualmente, o padrão MapReduce é um destes mecanismos utilizados para processamento de grandes volumes de dados. Na maioria dos casos, os mecanismos como MapReduce necessitam de um grande poder computacional, e empresas necessitam investir financeiramente nestes recursos. Com objetivo de evitar esse alto custo financeiro, as empresas têm um olhar positivo para a computação em nuvem, sendo um modelo de oferta de serviço bem exercido no meio comercial. O modelo de computação em nuvem permite que os recursos computacionais provisionados sejam selecionados pelo usuário de acordo com a sua necessidade. A cobrança por utilizar este serviço é realizada de acordo com o uso, sendo pela demanda ou necessidade da aplicação utilizada. Uma característica importante nos ambientes de nuvem é a possibilidade de aplicar elasticidade, podendo aumentar ou diminuir os recursos de acordo com a demanda. Este aspecto motiva a proposta de criação de um mecanismo, que forneça elasticidade automática em tempo de execução para aplicações MapReduce. Dessa forma, os recursos podem ser provisionados dinamicamente de acordo com a necessidade do usuário, permitindo um processamento mais eficiente comuso inteligente da infraestrutura do provedor de serviços e pagando somente pelo o que foi usado. Isso facilitará para o cliente do serviço de nuvem executar suas aplicações MapReduce sem precisar se preocupar com a alocação de recursos, que será realizada por uma middleware. Este middleware proposto realizará uma análise dos recursos necessários e fará a alocação automaticamente, sem necessitar de intervenção do usuário, facilitando não só a execução do software, mas também o processo de desenvolvimento, considerando que atualmente o cliente precisa utilizar as APIs do OpenStack para poder usufruir da elasticidade que as nuvens oferecem. O projeto está propondo a criação de um middleware que forneça o aprovisionamento automático de recursos computacionais (memória, armazenamento e processamento) para aplicações MapReduce na ferramenta de computação em nuvem OpenStack.
Project Team
Avaliação Comparativa do Desempenho de uma Interface de Programação Paralela Orientada a Padrões
Time Jan/2014 - Jan/2015
Funding:
Abstract: Com o objetivo de abstrair detalhes de programação paralela e orientar desenvolvedores ao uso de padrões para o modelagem das aplicações, foi criada uma linguagem específica de domínio nomeada DSL-POPP. O principal objetivo é aumentar a produtividade dos programadores e reduzir o esforço na paralelização de aplicações para arquiteturas multi-core. Outro fator importante é o desempenho, o qual também não pode ser comprometido significativamente neste cenário. Neste sentido, esta pesquisa buscou realizar uma avaliação e um comparativo do desempenho da DSL-POPP em relação as tradicionais interfaces de programação paralela para arquiteturas multi-core. Por exemplo, Pthreads, OpenMP, FastFlow, TBB e Cilk. Diferentemente, a interface foi construída para fornecer esqueletos relativos aos padrões Mestre/Escravo e Pipeline. Assim, o usuário apenas escolhe o padrão adequado para modelar sua aplicação e os preenche com código sequencial. Ao compilar o programa com o compilador da DSL-POPP, código paralelo é automaticamente gerado. A avaliação do desempenho foi realizada usando aplicações de diferentes domínios. Cada uma delas foi implementada a partir da sua versão sequencial e posteriormente executada em uma máquina com processador multi-core. Os resultados de desempenho mostraram que a DSL-POPP não teve perdas significativas, mostrando que a geração de códio e a abstração criada são eficientes. Mesmo que as perdas foram pequenas, o resultado é positivo, pois avaliações anteriores sobre o esforço demostram um ganho significativo.
Project Team
Programação Paralela e Alto Desempenho Voltados para Ambientes de Computação em Nuvem
Time Jan/2014 - Jan/2015
Funding:
Abstract: As características essenciais da computação em nuvem são a virtualização e a abstração. A virtualização é a principal facilitadora no gerenciamento de computação em nuvem e possibilita que um único hardware execute vários sistemas operacionais simultaneamente. Existem vários métodos de operação de virtualização: emulação, virtualização completa, paravirtualização e virtualização a nível de sistema operacional. Na construção dos ambientes de computação em nuvem é possível formar ecossistemas que determinam os modelos de serviços de uma nuvem, que são os modelos IaaS (Infrastructure as a Service), PaaS (Platform as a Service) e SaaS (Software as a Service). Os objetivos do projeto são abordar a programação paralela no cenário de computação em nuvem e verificar se o desempenho de aplicações que rodam em um determinado hardware é mantido ao migrar para um ambiente em nuvem. Para isso, foi implantada uma nuvem privada com a ferramenta OpenNebula sobre o virtualizador KVM. As instâncias virtuais foram criadas com o sistema operacional ubuntu server. Posteriormente, foram executadas as suítes do NPB (Nasa Parallel Benchmark) que exploraram os cenários de memória compartilhada e distribuída nos ambientes de nuvem e nativo. Após a coleta dos logs de execução, foi utilizada a abordagem estatística para analisar o quão foram significativas as diferenças entre os ambientes. Os resultados demostraram que o desempenho das aplicações paralelas é significativamente afetado quando as aplicações paralelas são migradas para a nuvem.
Project Team
DSL-POPP: Uma Linguagem Específica de Domínio Voltada para Padrões de Programação Paralela
Time Jan/2012 - Jan/2013
Funding:
Abstract: Este projeto tem por finalidade colaborar no desenvolvimento da DSL-POPP. Esta é uma Linguagem Específica de Domínio para Programação Orientada a Padrões Paralelos, a qual oferece ao programador uma interface de alto nível. A principal contribuição é a avaliação do esforço e desempenho em diferentes aplicações sintéticas. Os resultados demonstraram que a DSL-POPP reduziu o esforço na paralelização de aplicações sem comprometer o desempenho.
Project Team
GREEN-GRID: Computação de Alto Desempenho Sustentável
Time Jan/2010 - Jan/2014
Funding:
Abstract: A recente conscientização da importância do custo energético dos sistemas computacionais não condiz com a crescente demanda por recursos computacionais cada vez mais poderosos. Se de um lado diferentes segmentos da sociedade da informação necessitam de tratamento automatizado de seus processos, por outro, o aumento da frequência de relógio das CPUs está se tornando impossível devido ao custo de energia associado ao seu incremento. A solução que tem sido proposta pelos fabricantes é a introdução do paralelismo nas próprias CPUs (chips multi-cores, e em breve many-cores), bem como o uso de recursos computacionais voluntários (volunteer computing) ou agregados por meio de Grades Computacionais. Ambas soluções permitem maximizar a taxa de utilização dos seus recursos de hardware, aumentando assim a capacidade de processamento sem aumentar o custo energético. Este contexto de processamento consciente do custo energético está associado ao Green Computing, ou Computação Sustentável. O projeto reúne um grupo de trabalho em Computação Sustentável formado por quatro grupos de trabalho distribuídos em quatro Instituições de Ensino Superior do Estado do Rio Grande do Sul, a saber: a Universidade Federal do Rio Grande do Sul, a Universidade Federal de Pelotas, a Universidade Federal de Santa Maria e a Pontifícia Universidade Católica do Rio Grande do Sul. Os parceiros propõem unir suas competências para a criação de uma infra-estrutura de Grade Computacional para Computação Sustentável, baseada na exploração de recursos sub-utilizados (e.g., laboratórios ociosos nos turnos noturnos) e em processadores multi-cores de baixo custo energético. As atenções da pesquisa estarão voltadas às questões relacionadas ao suporte de execução de aplicações sobre esta infra-estrutura, havendo também preocupação de desenvolvimento de ferramentas de apoio ao desenvolvimento de aplicações para esta infra-estrutura considerando o requisito de computação sustentada.
Project Team
Computação de Alto Desempenho com Programação Híbrida para Aplicações Reais
Time Jan/2010 - Jan/2012
Funding:
Abstract: Diversas áreas do conhecimento apresentam cada vez mais aplicações que necessitam de respostas rápidas extraídas da computação de um grande volume de dados. Podem ser citadas como exemplo áreas como Meteorologia (previsão do tempo), Física (simulações com alta carga computacional), Bioinformática (data-mining de cadeia de proteínas), Computação Gráfica (representação de volumes tridimensionais), etc. O processamento paralelo aparece como alternativa viável para melhorar o desempenho de tais aplicações, fato este proporcionado pelo custo relativamente pequeno para a aquisição de um ambiente paralelo com poder computacional elevado. Este poder computacional aumenta significativamente na medida em que cresce a utilização de clusters de máquinas multiprocessadas (arquitetura híbrida). No entanto, a utilização de técnicas convencionais de programação paralela não é suficiente para que seja extraído todo poder de processamento deste tipo de arquitetura. Nesse cenário, este projeto justifica-se pela necessidade de investigação de novas metodologias para programação adequada de ambientes de alto desempenho híbridos, abrangendo práticas de programação, análise de características da aplicação alvo e formas de avaliar a qualidade da implementação híbrida. Com isto, pesquisadores de diversas áreas do conhecimento serão beneficiados, uma vez que pesquisar e conhecer todos estes aspectos trata-se de uma fase que, geralmente, despende tempo nas implementações.
Project Team
Resolução de Sistemas Lineares Esparsos com Computação Verificada em Ambientes de Alto Desempenho
Time Jan/2010 - Jan/2012
Funding:
Abstract: A presente proposta de pesquisa está focada na utilização de técnicas de computação de alto desempenho para acelerar a resolução de Sistemas de Equações Lineares (SELAS) esparsos de grande porte que utilizem a Computação Verificada para garantir a correta representação numérica dos resultados obtidos.
Project Team
HPVC - Computação Verificada de Alto Desempenho
Time Jan/2008 - Jan/2009
Funding:
Abstract: Em problemas científicos e tecnológicos, a confiabilidade vem se tornando um requisito cada vez mais importante. Exemplos extremamente simples mostram que, devido à representação finita dos números, os resultados numéricos usando aritmética tradicional de ponto-flutuante podem estar completamente errados. A matemática intervalar permite a captura de incertezas na modelagem e formulação dos problemas, na estimativa dos parâmetros, em operações de arredondamento e na interpretação de modelos. Na resolução de sistemas de equações lineares, o controle sobre o erro gerado na computação apresenta-se como um requisito indispensável para obtenção de resultados corretos da solução dos problemas. A construção de solvers para tratamento de matrizes esparsas e de grande porte, representando um conjunto de equações lineares, utilizando computação verificada em ambientes de alto desempenho permite a resolução de problemas advindos das mais diferentes áreas do conhecimento, e que ainda necessitam alto poder de processamento e alta acurácia em seus resultados. Desta forma, a computação de alto desempenho juntamente com a verificação automática dos resultados apresenta-se como uma ferramenta chave para aplicações críticas oriundas de campos como a tecnologia espacial, bioinformática, engenharia automotiva ou validação de plantas nucleares sem experimentos físicos reais. Com intuito de tratar não somente problemas acadêmicos longe das restrições impostas pelas necessidades industriais, softwares de alta confiabilidade e eficiência devem ser desenvolvidos para arquiteturas paralelas. O principal resultado científico almejado, após a execução deste projeto, está focado em uma metodologia que possibilite a resolução de sistemas de equações lineares esparsos de grande porte com computação verificada em plataformas de alto desempenho. Esta metodologia representará uma ferramenta importante para pesquisadores de diferentes áreas científicas.
Project Team
PROPRIO - Análise de Perfil para Instrumentação de Rasterização Paralela Otimizada
Time Jan/2008 - Jan/2009
Funding:
Abstract: O objetivo deste projeto é de investigar novas técnicas de otimização que permitam acelerar o processo de rasterização de documentos previamente renderizados através do desenvolvimento de estratégias para alocar um conjunto de RIPs baseada na análise do perfil de jobs com conteúdo PDF (Portable Document Format). As principais dificuldades estão relacionadas à identificação de uma estratégia para assegurar o processamento dos jobs tirando o máximo proveito da capacidade do ambiente de impressão distribuído através de políticas de escalonamento de jobs. É necessário ainda assegurar que a prioridade dos jobs seja mantida e que o Provedor de Serviços de Impressão tenha flexibilidade para submeter pequenos jobs durante o processamento de jobs maiores.
Project Team
FOP/MAUI - Alto Desempenho na Composição de Layouts para Impressão de Dados Variáveis de Perfil para Instrumentação de Rasterização Paralela Otimizada
Time Jan/2007 - Dec/2007
Funding:
Abstract: Este projeto pretende investigar a utilização de técnicas de alto desempenho para acelerar o processo de composição de layouts para impressão de dados variáveis. O maior desafio da pesquisa proposta neste projeto é conseguir produzir uma ferramenta auto-configurável capaz de identificar o melhor ambiente para renderização de um documento em função de suas características descritas no seu formato.
Project Team
ADR-VDP - Técnicas de Alto Desempenho para a Renderização de Documentos XSL-FO para VDP
Time Jan/2006 - Dec/2006
Funding:
Abstract: O principal objetivo deste projeto está diretamente relacionado à criação de uma ferramenta robusta, portável, escalável e com boa usabilidade para a renderização em paralelo de documentos VDP em ambientes de impressão industrial, (i.e., ambientes que precisem de alta vazão na renderização de documentos). A utilização de técnicas de construção de programas de alto desempenho dentro do contexto da área de Engenharia de Documentos pode ser considerada um segundo aspecto inovador desta pesquisa. O maior desafio da pesquisa proposta neste projeto é conseguir conduzir o processo de refinamento e investigação das otimizações a serem feitas na ferramenta FOP paralela de forma eficiente para que a mesma resulte em um produto concluído, testado e com desempenho satisfatório.
Project Team
SDE-FED - Simulação da Dinâmica de Elétrons em um Dispositivo FED Utilizando o Método de Elementos de Contorno
Time Jan/2005 - Dec/2005
Funding:
Abstract: Este projeto visa o desenvolvimento de um software de alto desempenho para simulação da dinâmica de elétrons em dispositivos FED que seja robusto e que forneça principalmente dados em uma boa concordância com os resultados experimentais obtidos. O principal objetivo é permitir o entendimento de características desejáveis para o dispositivo final auxiliando na modelagem de novas geometrias para a construção destes dispositivos.
Project Team
CAP - Centro de Pesquisa e Desenvolvimento de Aplicações Paralelas
Time Jan/2003 - Jan/2006
Funding:
Abstract: The Research and Development Center of Parallel Applications (CAP - PUCRS/HP Brazil) is dedicated to the study of high performance computing techniques and methodologies applied on the development of solutions for computational intensive applications. The CAP project has two main research lines: (a) support techniques for parallel programs design and (b) development of high performance applications for distributed memory architectures. (a) Support techniques for the design of parallel programs are not directly related to the parallel solution of a given problem, but they offer alternatives to simplify and optimize the process of developing parallel programs. In this scenario, the CAP team is interested in research topics like: (i) Analytical modeling of parallel programs using Stochastic Automata Networks (SAN); (ii) Formal verification of parallel and distributed programs properties using Objects-Based Graph Grammars (GGBO); (iii) Load-balancing algorithms for dynamic irregular applications over distributed memory platforms; (iv) Structural test methodologies for parallel programs. (b) The development of parallel applications for different categories of distributed memory architectures, such as heterogeneous clusters or computational grids, is another major research line of the CAP team. Our focus is the development of new high performance algorithms and/or programs for scientific or industrial problems using the message passing programming paradigm. Recently, the CAP group has been working on parallel solutions for the following applications: (i) Documents rendering tool for high speed printers (FOP - Formatting Objects Processor); (ii) Visualization of medical data for image-based diagnosis; (iii) Simulation of electrons trajectory on Field Emission Displays.