
Este artigo apresenta uma nova biblioteca que utiliza e estende o padrão MPI, capaz de agregar servidores e clusters localizados em múltiplos domínios, como também recursos da nuvem. A plataforma de execução é criada e entregue à aplicação MPI de forma transparente sem que seja necessário recompilar o código. A solução também provê funções de provisionamento, adição e remoção de nós em tempo de execução trazendo elasticidade à aplicação. Através de benchmarks, comparou-se seu desempenho com a execução nativa da aplicação utilizando a Biblioteca MPI. Foi, também, desenvolvido um protótipo de aplicação elástica com resultados otimistas e dentro do esperado.
A partir da popularização das arquiteturas paralelas, surgiram várias interfaces de programação a fim de facilitar a exploração de tais arquiteturas e aumentar a produtividade dos desenvolvedores. Entretanto, desenvolver aplicações paralelas ainda é uma tarefa complexa para desenvolvedores com pouca experiência. Neste trabalho, realizamos uma pesquisa para descobrir a opinião de desenvolvedores de aplicações paralelas sobre os fatores que impedem a produtividade. Nossos resultados mostraram que a experiência dos desenvolvedores é uma das principais razões para a baixa produtividade. Além disso, os resultados indicaram formas para contornar este problema, como melhorar e incentivar o ensino de programação paralela em cursos de graduação.
O balanceamento de carga é uma função essencial na computação em nuvem, e os balanceadores de carga de camada 4, notadamente, são amplamente utilizados para esse fim. Contudo, esse tipo de balanceador apresenta duas limitações típicas: 1) a impossibilidade de balanceamento baseado no conteúdo do tráfego; 2) generalização, não apresentando funções importantes para protocolos específicos. Neste trabalho nós apresentamos o Statera, um balanceador de carga flexível e específico para o protocolo HTTP, cujo objetivo é promover escalabilidade e sanar as limitações dos balanceadores de carga de camada 4. Ao longo do texto, nós expomos em detalhes a arquitetura do Statera e apresentamos resultados obtidos em diferentes cenários.
To meet ever increasing capacity and performance requirements of emerging data-intensive applications, parallel file systems (PFSs) have been employed in large-scale computing environments. In such complex storage systems, the load distribution on PFS data servers compose a major source of input/output (I/O) performance variability. Albeit mitigating such variability is desirable, understanding its sources and behavior remains a challenging task. In this research work, a differentiated approach for evaluating the parallel I/O performance variability perceived by large-scale applications is proposed. The Parallel I/O and Storage System (PIOSS) simulation model represents main components and mechanisms observed in typical PFS implementations and enables fast evaluations of large and complex scenarios. Experimental results presented in this paper demonstrate PIOSS can accurately reproduce the load balance on PFS data servers, with a confidence level of 95%.
Approximate Computing is a paradigm used by researchers as alternative to the diminishing of the evolution of hardware performance in the ongoing race for computational throughput in HPC. Precision reduction and mixed precision are the most studied among the existing techniques. In addition, some NVIDIA GPUs have Tensor Core architecture to speed up some classes of algorithms, such as matrix multiplication. This study aims to apply Approximate Computing techniques, like mixed precision, in matrix multiplication and stencil algorithms using OpenACC directives and cuTensor library to analyze performance gains versus accuracy losses. Results showed that it was possible to obtain a speedup of 16.60× with an optimized matrix multiplication algorithm present in the matmul intrinsic function using 16-bit floating-point data with Tensor Core, compared to a naive version using 64-bit floating-point. For this same case, accuracy loss went from 10−26 up to 10−1, approximately. For the stencil algorithm, it was possible to obtain a gain of 1.60× by only reducing variables precision from 64-bit to 16-bit floating-point, with accuracy loss from 0 to 10−9, for 300 iterations.
Processing-In-Memory (PIM) devices usually implement vector instructions to efficiently utilize the large main memory bandwidth. One possible way to vectorize applications for such PIM systems is to convert CPU instructions into PIM vector instructions dynamically. In this work, we present a study on the feasibility of the dynamic conversion between these instructions for the Vector-In-Memory Architecture (VIMA). Our results show that 24 % of the loops from some SPEC-CPU 2017 applications are suitable for this conversion. Furthermore, we conclude that dynamic conversion mechanisms must to be able to efficiently deal with memory access conflicts, a problem present in 99 % of all possible conversions to VIMA.
As aplicações científicas demandam ambientes de Processamento de Alto Desempenho (PAD). Essas aplicações possuem diversos componentes advindos de bibliotecas e diferentes ambientes, tornando a pilha de software a ser gerenciada no momento da implantação e execução nada trivial. Essa complexidade aumenta caso o usuário necessite acoplar serviços de captura de dados de proveniência à sua aplicação. Este artigo apresenta o ProvDeploy para auxiliar o usuário na configuração de contêineres para sua aplicação com captura de proveniência. O ProvDeploy foi avaliado com uma aplicação intensiva em dados da área de Bioinformática, explorando alternativas de conteinerização em dois ambientes de PAD.
Serviços da nuvem oferecem facilidades computacionais bem estabelecidas. Na busca de eficiência para executar aplicações do tipo MapReduce, que lidam com grandes volumes de dados, baixos custos monetários também são almejados. Para delinear os benefícios de diferentes serviços cloud, realizamos uma análise exploratória dos tempos e custos para a execução de uma aplicação MapReduce na nuvem pública da Amazon, a AWS. A partir de implementações com os frameworks Spark e MARLA sob os serviços EC2 e Lambda, respectivamente, apresentamos os impactos associados às quantidades e tipos de recursos escolhidos. Os resultados sugeriram o ambiente MARLA Lambda como o mais rápido e o Spark EC2 como o mais econômico.
As the number of cores increases, more cores and threads share the Last-Level Cache (LLC), which consumes a large portion of the chip’s total power and area. Therefore, sophisticated solutions must guarantee the best resource usage addressing cache conflicts and cache pollution problems. This work exploits the knowledge that many applications present poor temporal and spatial locality. Thus, an adaptive cache mechanism can benefit such applications, improving general system performance and decreasing energy consumption. In this paper, we propose an online and application-aware predictor to adapt the use of LLC. As a result, DyCa shows up to 22% and 21% performance increases in single and multi-program workloads, respectively.
Caches são elementos fundamentais para reduzir a carga nos servidores e o atraso dos usuários nas redes de entrega de conteúdo (CDNs). Este trabalho apresenta e avalia estratégias de cache proativo para aumentar a eficiência do cache em uma CDN distribuída geograficamente, com dois algoritmos para selecionar mídias a serem armazenadas em cache. O primeiro se aproveita do clássico problema das mochilas (knapsack), e acopla todos os servidores de cada PoP ao determinar como preencher cada mochila. O segundo preestabelece os servidores candidatos a servir cada mídia, por meio do uso de hashes e, então, aplica o problema da mochila em cada servidor alvo. As duas soluções foram testadas na infraestrutura da Globo, na qual foi possível aumentar o número de visualizações dos vídeos servidos em cache em 80,1%.
No presente artigo é apresentado uma avaliação de desempenho de um Framework de Redes Filogenéticas no ambiente do supercomputador Santos Dumont. O trabalho reforça os benefícios de paralelizar o framework usando abordagens paralelas baseadas em Computação de Alta Vazão (CAV), e Computação de Alto Desempenho (CAD). Os resultados da execução paralela do framework proposto, demonstram que este tipo de experimento da bioinformática é apropriado para ser executado em ambientes de CAD; apesar de que nem todas as tarefas e programas componentes do framework tenham sido criados para usufruir de escalabilidade em ambientes de CAD, ou de técnicas de paralelismo em diferentes níveis. A análise comparativa da execução dos cinco pipelines de forma sequencial (como desenhado e usado originalmente por bioinformatas) apresentou um tempo estimado de 81, 67 minutos. Já a execução do mesmo experimento por meio do framework executa os cinco pipelines de forma paralela e usufruindo de um melhor gerenciamento das tarefas, gerando um tempo total de execução de 38,73 minutos. Essa melhora é de aproximadamente 2, 11 vezes em tempo de execução sugere que a utilização de um framework otimizado leva à diminuição do tempo computacional, à melhora de alocação de recursos e ao tempo de espera na alocação.
A computação na nuvem emerge como uma plataforma alternativa para a execução de aplicações de alto desempenho. Simultaneamente, a atualização de nodos computacionais nestes sistemas pode levar a uma heterogeneidade de recursos. Neste sentido, o desafio de executar aplicações paralelas na nuvem não está apenas relacionado a definição do melhor número de threads para a aplicação, mas também, a escolha ideal da arquitetura que irá executar tal aplicação. No entanto, as características de grau de paralelismo e capacidade computacional têm sido pouco exploradas para fazer a alocação de aplicações numa nuvem heterogênea. Portanto, neste artigo, mostramos que ao considerar o grau de paralelismo de uma aplicação e as características do nodo computacional, ganhos significativos de desempenho e consumo de energia podem ser obtidos quando comparado a maneira padrão com que aplicações são escalonadas num ambiente de nuvem heterogênea.
Em bioinformática, existem vários programas disponíveis para análise de sequências de DNA. Esta é geralmente uma tarefa muito demorada, uma vez que essas sequências de DNA podem ser muito longas e complexas. O montador Velvet foi projetado para montar dados de sequenciamento de leitura curta e longa em sequências genômicas mais longas. A última versão do Velvet foi desenvolvida para funcionar com várias threads usando programação paralela com OpenMP. Aqui apresentamos uma nova versão do Velvet que explora multiprocessamento e unidades de processamento gráfico (GPU) por meio de diretivas OpenACC. Nossos testes demonstram que essa extensão do Velvet permite um desempenho mais rápido e uso de memória mais eficiente.
Cloud Computing, enabled by technological enhancements and the trend for reduction of investments in IT’s physical infrastructure, is the major computing infrastructure nowadays. However, its heterogeneity makes difficult to know if the use of a given environment is efficient or not. In this context, the performance evaluation of cloud systems is useful both to clients, who need to find the best resource configuration for their applications, and to providers, who need to evaluate which scheduling and allocation policies of resources and virtual machines are most cost effective. Simulation is a good approach for this evaluation since it can be done offline. The known cloud computing simulators have issues related to their usability and modeling capability. This work extends the iconic approach for modeling and simulation offered by iSPD to cloud computing, adding icons for virtual machines and VMMs. Our results show that iSPD is faster than Cloudsim with equivalent accuracy, while providing an easier interface to model and simulate IaaS and PaaS environments.
Gateways científicos trazem enormes benefícios para usuários finais, simplificando o acesso e ocultando a complexidade da infraestrutura de computação distribuída subjacente. O gateway científico de bioinformática, BioinfoPortal, por meio do seu middleware CSGrid, usufrui dos recursos heterogêneos do Santos Dumont. No entanto, a submissão de tarefas ainda exige um esforço significativo, no que tange à decisão da melhor configuração que leve a uma execução eficiente. O framework de aprendizado de máquina, em desenvolvimento, ao ser integrado ao gateway, viabilizará essa decisão. No presente trabalho apresentamos um estudo de desempenho com caso de estudo da bioinformática visando analisar o comportamento de variáveis de saída do slurm/sacct dado valores das variáveis de entrada obtidas da configuração de tarefas do SDumont, o que pôde ser realizado pela modelagem deste cenário como uma tarefa de classificação binária. Os nossos resultados indicam ser possível extrair regras e avaliar a influência das variáveis de entrada Bootstrap, Nó e Thread, sendo Bootstrap a mais significativa e aquela com mais peso para o sistema de recomendação de alocação de recursos no BioinfoPortal.
Na área da saúde, a prevenção é uma forma eficaz de evitar a progressão de doenças, muitas das quais podem ser tratadas quando diagnosticadas precocemente. A procura por exames preventivos tem aumentado e não se consegue atender essa procura com eficiência. Logo, existe a necessidade de automatizar e aumentar a eficiência de exames de triagem. Entretanto, a captura de dados para estes sistemas geralmente utiliza vários dispositivos de hardware sob condições ambientais diversas, induzindo ruído nos dados. Portanto, antes da fase de triagem, a seleção de uma estrutura de pré-processamento eficaz é fundamental. Neste artigo, é discutido o desenvolvimento de uma aplicação para pré-processamento de imagens de retinas para uso eficiente em sistemas de triagem e o impacto que o pré-processamento causa na interconexão de rede. Foi reduzido em até ≈ 73% o tempo de execução com a versão paralela. Também foi reduzido em ≈ 11,5× a largura de banda utilizada, alcançando taxa de transferência acima de 5 imagens/segundo com pré-processamento na Borda, 2,57× maior do que na Nuvem.
A presente pesquisa tem por objetivo propor um sistema de Web Scraping, baseado na nuvem computacional da AWS, utilizando as máquinas EC2 burstable. O framework define um cluster misto, com instâncias burstable fixas e temporárias, que pode variar o número de instâncias, adicionando ou removendo VMs, para garantir o SLA das mensagens e minimização dos custos. O framework proposto foi avaliado na nuvem AWS, comparado a uma abordagem apenas com instâncias on-demand não expansíveis e também a outra solução baseada em Function as a Service (FaaS). Os resultados mostraram que todos os testes atendem o SLA definido, alcançando uma redução de 96% de custo financeiro, em seu melhor caso quando comparado à abordagem FaaS, e redução de 95,59%, em seu melhor caso quando comparado à abordagem on-demand. Além disso, houve redução de custos de no mínimo 93,26% em todos os demais casos de teste, mostrando que máquinas burstable podem ser um ótimo recurso para esse problema.
The cloud computing paradigm democratized compute infrastructure access to millions of resource-strained organizations, applying economics of scale to massively reduce infrastructure costs. In the High Performance Computing (HPC) context, the benefits of using public cloud resources make it an attractive alternative to expensive on-premises clusters, however there are several challenges and limitations. In this paper, we present HPC@Cloud: a provideragnostic software framework that comprises a set of key software tools to assist in the migration, test and execution of HPC applications in public clouds. HPC@Cloud allows the HPC community to benefit from readily available public cloud resources with minimum efforts and features an empirical approach for estimating cloud infrastructure costs for HPC workloads. We also provide an experimental analysis of HPC@Cloud on two public clouds: Amazon AWS and Vultr Cloud.
Data replication is the main fault tolerance mechanism implemented by the HDFS. The placement of the replicated data across the nodes directly influences replica balancing and data locality, which are essential to ensure high reliability and data availability. The HDFS Balancer is the official solution to perform replica balancing through data redistribution. In this work, we conducted a practical experiment to evaluate different policies for replica rearrangement, namely: datanode, blockpool, and custom. The evaluation results underline the behavior and the effectiveness of each policy. In addition, we investigated the cost of the HDFS Balancer operation and the performance and availability improvements promoted by a balanced replica distribution.
Cloud computing services providers offer on-demand computing resources to applications. Finding the best cloud resource allocation that fits the users’ budget, meets application performance and constraints are still a research challenge. The cloud resource allocation problem is quite akin to the Design Space Exploration (DSE) problem once they both have to find suitable hardware configurations in an ample design space, having incompatible objectives subject to several constraints. This work presents a solution to the cloud resource allocation problem by applying a design space exploration technique. We have designed and developed a software extension, MultiExplorer-VM, from a DSE tool, MultiExplorer, that has a workflow to provide virtual machine configurations according to the users’ requirements and application constraints. A comprehensive set of experiments has been performed to evaluate and validate the proposed tool. We have also compared solutions from our proposal to other existing research work focused on the cloud resource allocation problem based on the Paramount Interaction (PI) technique. The results show that the MultiExplorer-VM achieves significant (better) results than the PI technique. The cost results brought by the MultiExplorer-VM were up to 8.8 times lower compared to the PI technique. The experiments also reveal that for most of the applications, MultiExplorer-VM achieved the optimal cloud configuration.