Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/38014

TítuloParallel programming by transformation
Outro(s) título(s)Programação paralela por transformação
Autor(es)Gonçalves, Rui Carlos Araújo
Orientador(es)Sobral, João Luís Ferreira
Batory, Don
Data27-Abr-2015
Resumo(s)The development of efficient software requires the selection of algorithms and optimizations tailored for each target hardware platform. Alternatively, performance portability may be obtained through the use of optimized libraries. However, currently all the invaluable knowledge used to build optimized libraries is lost during the development process, limiting its reuse by other developers when implementing new operations or porting the software to a new hardware platform. To answer these challenges, we propose a model-driven approach and framework to encode and systematize the domain knowledge used by experts when building optimized libraries and program implementations. This knowledge is encoded by relating the domain operations with their implementations, capturing the fundamental equivalences of the domain, and defining how programs can be transformed by refinement (adding more implementation details), optimization (removing inefficiencies), and extension (adding features). These transformations enable the incremental derivation of efficient and correct by construction program implementations from abstract program specifications. Additionally, we designed an interpretations mechanism to associate different kinds of behavior to domain knowledge, allowing developers to animate programs and predict their properties (such as performance costs) during their derivation. We developed a tool to support the proposed framework, ReFlO, which we use to illustrate how knowledge is encoded and used to incrementally— and mechanically—derive efficient parallel program implementations in different application domains. The proposed approach is an important step to make the process of developing optimized software more systematic, and therefore more understandable and reusable. The knowledge systematization is also the first step to enable the automation of the development process.
O desenvolvimento de software eficiente requer uma selecção de algoritmos e optimizações apropriados para cada plataforma de hardware alvo. Em alternativa, a portabilidade de desempenho pode ser obtida através do uso de bibliotecas optimizadas. Contudo, o conhecimento usado para construir as bibliotecas optimizadas é perdido durante o processo de desenvolvimento, limitando a sua reutilização por outros programadores para implementar novas operações ou portar o software para novas plataformas de hardware. Para responder a estes desafios, propomos uma abordagem baseada em modelos para codificar e sistematizar o conhecimento do domínio que é utilizado pelos especialistas no desenvolvimento de software optimizado. Este conhecimento é codificado relacionando as operações do domínio com as suas possíveis implementações, definindo como programas podem ser transformados por refinamento (adicionando mais detalhes de implementação), optimização (removendo ineficiências), e extensão (adicionando funcionalidades). Estas transformações permitem a derivação incremental de implementações eficientes de programas a partir de especificações abstractas. Adicionalmente, desenhamos um mecanismo de interpretações para associar diferentes tipos de comportamento ao conhecimento de domínio, permitindo aos utilizadores animar programas e prever as suas propriedades (e.g., desempenho) durante a sua derivação. Desenvolvemos uma ferramenta que implementa os conceitos propostos, ReFlO, que usamos para ilustrar como o conhecimento pode ser codificado e usado para incrementalmente derivar implementações paralelas eficientes de programas de diferentes domínios de aplicação. A abordagem proposta é um passo importante para tornar o processo de desenvolvimento de software mais sistemático, e consequentemente, mais perceptível e reutilizável. A sistematização do conhecimento é também o primeiro passo para permitir a automação do processo de desenvolvimento de software.
TipoTese de doutoramento
DescriçãoThe MAP-i Doctoral Program.
URIhttps://hdl.handle.net/1822/38014
AcessoAcesso aberto
Aparece nas coleções:BUM - Teses de Doutoramento
HASLab - Teses de Doutoramento
DI/CCTC - Teses de Doutoramento (phd thesis)

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Rui Carlos Araújo Gonçalves.pdf6,59 MBAdobe PDFVer/Abrir

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID