
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.