Gonçalves, Ricardo, and José Júlio Alferes. "
Deontic logic programs."
International conference on Autonomous Agents and Multi-Agent Systems, AAMAS '13. IFAAMAS, 2013. 1333-1334.
Abstract
Alexandre, Fernando, Ricardo Marques, and Hervé Paulino. "
Esqueletos Algorítmicos para Paralelismo de Tarefas em Sistemas Multi-GPU."
INForum 2013 - Atas do 5º Simpósio de Informática. Eds. João Cachopo, and Beatriz Sousa Santos. Évora, Portugal: Escola de Ciências e Tecnologia da Universidade de Évora, 2013. 238-249.
AbstractA crescente utilização de Unidades de Processamento Gráfico (GPUs) na computação de caráter geral levanta questões de desempenho e de escalabilidade. Para responder a estes requisitos de forma efetiva, cada vez mais se recorre à utilização colaborativa de vários GPUs num só sistema. Esta abordagem introduz, no entanto, novos desafios, tal como a decomposição do domínio do problema e a gestão da possível heterogeneidade dos dispositivos. Neste contexto assume particular relevância a proposta de abstrações que escondam a complexidade da programação destes sistemas. Existe já algum trabalho na área, mas este restringe-se ao paralelismo de dados. Por conseguinte, neste artigo abordamos a utilização de uma biblioteca de esqueletos algorítmicos, Marrow, para a exploração de paralelismo de tarefas em sistemas computacionais com estas características. Os resultados são promissores, apresentado a escalabilidade esperada nos sistemas testados.
Silva, João, Tiago Vale, João M. Lourenço, and Hervé Paulino. "
Replicação Parcial com Memória Transacional Distribuída."
INForum 2013 - Atas do 5º Simpósio de Informática. Eds. João Cachopo, and Beatriz Sousa Santos. Évora, Portugal: Escola de Ciências e Tecnologia da Universidade de Évora, 2013. 310-321.
AbstractOs sistemas de memória transacional distribuída atuais recorrem essencialmente à distribuição ou à replicação total para distribuir os seus dados pelos múltiplos nós do sistema. No entanto, estas estratégias de replicação de dados apresentam limitações. A distribuição não oferece tolerância a falhas e a replicação total limita a capacidade de armazenamento do sistema. Nesse contexto, a replicação parcial de dados surge como uma solução intermédia, que combina o melhor das duas anteriores com o intuito de mitigar as suas desvantagens. Esta estratégia tem sido explorada no contexto das bases de dados distribuídas, mas tem sido pouco abordada no contexto da memória transacional e, tanto quanto sabemos, nunca antes tinha sido incorporada num sistema de memória transacional distribuída para uma linguagem de propósito geral. Assim, neste artigo propomos e avaliamos uma infraestrutura para replicação parcial de dados para programas Java bytecode, que foi desenvolvida com base num sistema já existente de memória transacional distribuída. A modularidade da infraestrutura que apresentamos permite a implementação de múltiplos algoritmos e, por conseguinte, avaliar em que contextos de utilização (workloads, número de nós, etc.) a replicação parcial se apresenta como uma alternativa viável a outras estratégias de replicação de dados.
Parreira, Daniel, and Hervé Paulino. "
Uma Abordagem Alto Nível ao Controlo de Concorrência Componível Centrado nos Dados."
INForum 2013 - Atas do 5º Simpósio de Informática. Eds. João Cachopo, and Beatriz Sousa Santos. Évora, Portugal: Escola de Ciências e Tecnologia da Universidade de Évora, 2013. 298-309.
AbstractO controlo da concorrência no acesso a estado partilhado assume actualmente um papel de destaque no desenvolvimento de software. Trabalhos recentes propõem que tal gestão seja expressa ao nível dos dados, em alternativa à usual centralidade no código. A principal vantagem é o acoplamento da gestão da concorrência com a declaração dos dados, eliminando desse modo a descentralização dos erros de concorrência, facilitando a sua correção. No entanto, as abordagens centradas nos dados existentes pecam por não garantirem a ausência de deadlocks em todos os cenários e/ou exigirem do programador a agregação explícita dos recursos que devem ser avaliados atomicamente. A nossa proposta colmata ambas estas limitações. O programador anota isoladamente que zonas de memória requerem acesso exclusivo, sendo que uma análise estática infere quais dessas devem ser agrupadas e adquiridas atomicamente, e garante que o código gerado é ausente de deadlocks. De modo a aferir-se a eficiência da nossa solução, comparamos o seu desempenho e a sua produtividade relativamente à memória transacional e outras abordagens centrada nos dados.
Delgado, Nuno, and Hervé Paulino. "
Uma Abordagem Sistema para o Paralelismo Hierárquico em Arquitecturas Multi-core."
INForum 2013 - Atas do 5º Simpósio de Informática. Eds. João Cachopo, and Beatriz Sousa Santos. Évora, Portugal: Escola de Ciências e Tecnologia da Universidade de Évora, 2013. 274-285.
AbstractA decomposição correta de um problema paralelo com base na hierarquia de memória onde irá executar pode levar a ganhos de desempenho significativos durante execução do mesmo. No entanto, os subsistemas de memória das arquiteturas multicore modernas apresentam variadas configurações, em termos das suas organizações hierárquicas e da capacidade dos seus diversos níveis de memória. Existem diversas abordagens que permitem adequar a execução de uma aplicação à estratificação hierárquica da memória,. Contudo estas exigem do programador um conhecimento profundo da arquitetura alvo e de programação paralela em geral. A abordagem apresentada neste artigo contrasta com as demais, transpondo esta responsabilidade para o sistema de execução, colocando sobre a sua alçada a decomposição hierárquica da computação. Nessa medida, ao programador cabe apenas expressar de forma genérica os algoritmos de subdivisão do domínio do problema. Avaliamos o desempenho da nossa abordagem relativamente a outra baseada na usual decomposição horizontal do domínio do problema. Os resultados são bons, apresentando ganhos de performance em aplicações que usufruem do tipo de otimização efetuada e desempenhos equiparáveis nas restantes.
Marques, Ricardo, Hervé Paulino, Fernando Alexandre, and Pedro D. Medeiros. "
Algorithmic Skeleton Framework for the Orchestration of GPU Computations."
Euro-Par 2013 Parallel Processing - 19th International Conference, Euro-Par 2013, Aachen, Germany, August 26-30, 2013. Proceedings. Ed. Dieter Mey an Felix Wolf, Bernd Mohr. Lecture Notes in Computer Science. Aachen, Germany: Springer-Verlag, 2013. 874-885.
AbstractThe Graphics Processing Unit (GPU) is gaining popular- ity as a co-processor to the Central Processing Unit (CPU). However, harnessing its capabilities is a non-trivial exercise that requires good knowledge of parallel programming, more so when the complexity of these applications is increasingly rising. Languages such as StreamIt [1] and Lime [2] have addressed the offloading of composed computations to GPUs. However, to the best of our knowledge, no support exists at library level. To this extent, we propose Marrow, an algorithmic skeleton frame- work for the orchestration of OpenCL computations. Marrow expands the set of skeletons currently available for GPU computing, and enables their combination, through nesting, into complex structures. Moreover, it introduces optimizations that overlap communication and computa- tion, thus conjoining programming simplicity with performance gains in many application scenarios. We evaluated the framework from a perfor- mance perspective, comparing it against hand-tuned OpenCL programs. The results are favourable, indicating that Marrow’s skeletons are both flexible and efficient in the context of GPU computing.