Domain-specific language & support tools for high-level stream parallelism
Autor(a) principal: | |
---|---|
Data de Publicação: | 2016 |
Tipo de documento: | Tese |
Idioma: | eng |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da PUC_RS |
Texto Completo: | http://tede2.pucrs.br/tede2/handle/tede/6776 |
Resumo: | Stream-based systems are representative of several application domains including video, audio, networking, graphic processing, etc. Stream programs may run on different kinds of parallel architectures (desktop, servers, cell phones, and supercomputers) and represent significant workloads on our current computing systems. Nevertheless, most of them are still not parallelized. Moreover, when new software has to be developed, programmers often face a trade-off between coding productivity, code portability, and performance. To solve this problem, we provide a new Domain-Specific Language (DSL) that naturally/on-the-fly captures and represents parallelism for stream-based applications. The aim is to offer a set of attributes (through annotations) that preserves the program’s source code and is not architecture-dependent for annotating parallelism. We used the C++ attribute mechanism to design a “de-facto” standard C++ embedded DSL named SPar. However, the implementation of DSLs using compiler-based tools is difficult, complicated, and usually requires a significant learning curve. This is even harder for those who are not familiar with compiler technology. Therefore, our motivation is to simplify this path for other researchers (experts in their domain) with support tools (our tool is CINCLE) to create high-level and productive DSLs through powerful and aggressive source-to-source transformations. In fact, parallel programmers can use their expertise without having to design and implement low-level code. The main goal of this thesis was to create a DSL and support tools for high-level stream parallelism in the context of a programming framework that is compiler-based and domain-oriented. Thus, we implemented SPar using CINCLE. SPar supports the software developer with productivity, performance, and code portability while CINCLE provides sufficient support to generate new DSLs. Also, SPar targets source-to-source transformation producing parallel pattern code built on top of FastFlow and MPI. Finally, we provide a full set of experiments showing that SPar provides better coding productivity without significant performance degradation in multi-core systems as well as transformation rules that are able to achieve code portability (for cluster architectures) through its generalized attributes. |
id |
P_RS_73fc0aaff639eb407bbb4d9520c7246e |
---|---|
oai_identifier_str |
oai:tede2.pucrs.br:tede/6776 |
network_acronym_str |
P_RS |
network_name_str |
Biblioteca Digital de Teses e Dissertações da PUC_RS |
repository_id_str |
|
spelling |
Fernandes, Luiz Gustavo Leão571.500.100-59http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4784653A5Danelutto, Marco022.188.220-08http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4425308Y3Griebler, Dalvan Jair2016-06-20T20:03:42Z2016-03-30http://tede2.pucrs.br/tede2/handle/tede/6776Stream-based systems are representative of several application domains including video, audio, networking, graphic processing, etc. Stream programs may run on different kinds of parallel architectures (desktop, servers, cell phones, and supercomputers) and represent significant workloads on our current computing systems. Nevertheless, most of them are still not parallelized. Moreover, when new software has to be developed, programmers often face a trade-off between coding productivity, code portability, and performance. To solve this problem, we provide a new Domain-Specific Language (DSL) that naturally/on-the-fly captures and represents parallelism for stream-based applications. The aim is to offer a set of attributes (through annotations) that preserves the program’s source code and is not architecture-dependent for annotating parallelism. We used the C++ attribute mechanism to design a “de-facto” standard C++ embedded DSL named SPar. However, the implementation of DSLs using compiler-based tools is difficult, complicated, and usually requires a significant learning curve. This is even harder for those who are not familiar with compiler technology. Therefore, our motivation is to simplify this path for other researchers (experts in their domain) with support tools (our tool is CINCLE) to create high-level and productive DSLs through powerful and aggressive source-to-source transformations. In fact, parallel programmers can use their expertise without having to design and implement low-level code. The main goal of this thesis was to create a DSL and support tools for high-level stream parallelism in the context of a programming framework that is compiler-based and domain-oriented. Thus, we implemented SPar using CINCLE. SPar supports the software developer with productivity, performance, and code portability while CINCLE provides sufficient support to generate new DSLs. Also, SPar targets source-to-source transformation producing parallel pattern code built on top of FastFlow and MPI. Finally, we provide a full set of experiments showing that SPar provides better coding productivity without significant performance degradation in multi-core systems as well as transformation rules that are able to achieve code portability (for cluster architectures) through its generalized attributes.Sistemas baseados em fluxo contínuo de dados representam diversos domínios de aplicações, por exemplo, video, áudio, processamento gráfico e de rede, etc. Os programas que processam um fluxo contínuo de dados podem executar em diferentes tipos de arquiteturas paralelas (estações de trabalho, servidores, celulares e supercomputadores) e representam cargas de trabalho significantes em nossos sistemas computacionais atuais. Mesmo assim, a maioria deles ainda não é paralelizado. Além disso, quando um novo software precisa ser desenvolvido, os programadores necessitam lidar com soluções que oferecem pouca produtividade de código, portabilidade de código e desempenho. Para resolver este problema, estamos oferecendo uma nova linguagem específica de domínio (DSL), que naturalmente captura e representa o paralelismo para aplicações baseadas em fluxo contínuo de dados. O objetivo é oferecer um conjunto de atributos (através de anotações) que preservam o código fonte do programa e não é dependente de arquitetura para anotar o paralelismo. Neste estudo foi usado o mecanismo de atributos do C++ para projetar uma DSL embarcada e padronizada com a linguagem hospedeira, que foi nomeada como SPar. No entanto, a implementação de DSLs usando ferramentas baseadas em compiladores é difícil, complicado e geralmente requer uma curva de aprendizagem significativa. Isto é ainda mais difícil para aqueles que não são familiarizados com uma tecnologia de compiladores. Portanto, a motivação é simplificar este caminho para outros pesquisadores (sabedores do seu domínio) com ferramentas de apoio (a ferramenta é chamada de CINCLE) para implementar DSLs produtivas e de alto nível através de poderosas e agressivas transformações de fonte para fonte. Na verdade, desenvolvedores que criam programas com paralelismo podem usar suas habilidades sem ter que projetar e implementar o código de baixo nível. O principal objetivo desta tese foi criar uma DSL e ferramentas de apoio para paralelismo de fluxo contínuo de alto nível no contexto de um framework de programação que é baseado em compilador e orientado a domínio. Assim, SPar foi criado usando CINCLE. SPar oferece apoio ao desenvolvedor de software com produtividade, desempenho e portabilidade de código, enquanto CINCLE oferece o apoio necessário para gerar novas DSLs. Também, SPar mira transformação de fonte para fonte produzindo código de padrões paralelos no topo de FastFlow e MPI. Por fim, temos um conjunto completo de experimentos demonstrando que SPar oferece melhor produtividade de código sem degradar significativamente o desempenho em sistemas multi-core bem como regras de transformações que são capazes de atingir a portabilidade de código (para arquiteturas multi-computador) através dos seus atributos genéricos.Submitted by Setor de Tratamento da Informação - BC/PUCRS (tede2@pucrs.br) on 2016-06-20T20:03:42Z No. of bitstreams: 1 TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf: 6190464 bytes, checksum: 4381302ea5fe43fe32da3f9826a1ad8a (MD5)Made available in DSpace on 2016-06-20T20:03:42Z (GMT). No. of bitstreams: 1 TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf: 6190464 bytes, checksum: 4381302ea5fe43fe32da3f9826a1ad8a (MD5) Previous issue date: 2016-03-30application/pdfhttp://tede2.pucrs.br:80/tede2/retrieve/165423/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.jpgengPontifícia Universidade Católica do Rio Grande do SulPrograma de Pós-Graduação em Ciência da ComputaçãoPUCRSBrasilFaculdade de InformáticaLINGUAGEM DE PROGRAMAÇÃO DE DOMÍNIO ESPECÍFICO (COMPUTADORES)PROGRAMAÇÃO PARALELAAVALIAÇÃO DE DESEMPENHO (INFORMÁTICA)FRAMEWORKAGRUPAMENTO DE INFORMAÇÕES (INFORMÁTICA)INFORMÁTICACIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAODomain-specific language & support tools for high-level stream parallelisminfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesis1974996533081274470600600600-30085425104011491443671711205811204509info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da PUC_RSinstname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)instacron:PUC_RSTHUMBNAILTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.jpgTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.jpgimage/jpeg3456http://tede2.pucrs.br/tede2/bitstream/tede/6776/5/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.jpg335357cf3fef52314c310d7b3e133e94MD55TEXTTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.txtTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.txttext/plain463211http://tede2.pucrs.br/tede2/bitstream/tede/6776/4/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.txt5633833a6befa97a26e118a94a123179MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-8610http://tede2.pucrs.br/tede2/bitstream/tede/6776/3/license.txt5a9d6006225b368ef605ba16b4f6d1beMD53ORIGINALTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdfTES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdfapplication/pdf6190464http://tede2.pucrs.br/tede2/bitstream/tede/6776/2/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf4381302ea5fe43fe32da3f9826a1ad8aMD52tede/67762016-06-20 20:00:40.573oai:tede2.pucrs.br:tede/6776QXV0b3JpemHDp8OjbyBwYXJhIFB1YmxpY2HDp8OjbyBFbGV0csO0bmljYTogQ29tIGJhc2Ugbm8gZGlzcG9zdG8gbmEgTGVpIEZlZGVyYWwgbsK6OS42MTAsIGRlIDE5IGRlIGZldmVyZWlybyBkZSAxOTk4LCBvIGF1dG9yIEFVVE9SSVpBIGEgcHVibGljYcOnw6NvIGVsZXRyw7RuaWNhIGRhIHByZXNlbnRlIG9icmEgbm8gYWNlcnZvIGRhIEJpYmxpb3RlY2EgRGlnaXRhbCBkYSBQb250aWbDrWNpYSBVbml2ZXJzaWRhZGUgQ2F0w7NsaWNhIGRvIFJpbyBHcmFuZGUgZG8gU3VsLCBzZWRpYWRhIGEgQXYuIElwaXJhbmdhIDY2ODEsIFBvcnRvIEFsZWdyZSwgUmlvIEdyYW5kZSBkbyBTdWwsIGNvbSByZWdpc3RybyBkZSBDTlBKIDg4NjMwNDEzMDAwMi04MSBiZW0gY29tbyBlbSBvdXRyYXMgYmlibGlvdGVjYXMgZGlnaXRhaXMsIG5hY2lvbmFpcyBlIGludGVybmFjaW9uYWlzLCBjb25zw7NyY2lvcyBlIHJlZGVzIMOgcyBxdWFpcyBhIGJpYmxpb3RlY2EgZGEgUFVDUlMgcG9zc2EgYSB2aXIgcGFydGljaXBhciwgc2VtIMO0bnVzIGFsdXNpdm8gYW9zIGRpcmVpdG9zIGF1dG9yYWlzLCBhIHTDrXR1bG8gZGUgZGl2dWxnYcOnw6NvIGRhIHByb2R1w6fDo28gY2llbnTDrWZpY2EuCg==Biblioteca Digital de Teses e Dissertaçõeshttp://tede2.pucrs.br/tede2/PRIhttps://tede2.pucrs.br/oai/requestbiblioteca.central@pucrs.br||opendoar:2016-06-20T23:00:40Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS)false |
dc.title.por.fl_str_mv |
Domain-specific language & support tools for high-level stream parallelism |
title |
Domain-specific language & support tools for high-level stream parallelism |
spellingShingle |
Domain-specific language & support tools for high-level stream parallelism Griebler, Dalvan Jair LINGUAGEM DE PROGRAMAÇÃO DE DOMÍNIO ESPECÍFICO (COMPUTADORES) PROGRAMAÇÃO PARALELA AVALIAÇÃO DE DESEMPENHO (INFORMÁTICA) FRAMEWORK AGRUPAMENTO DE INFORMAÇÕES (INFORMÁTICA) INFORMÁTICA CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
title_short |
Domain-specific language & support tools for high-level stream parallelism |
title_full |
Domain-specific language & support tools for high-level stream parallelism |
title_fullStr |
Domain-specific language & support tools for high-level stream parallelism |
title_full_unstemmed |
Domain-specific language & support tools for high-level stream parallelism |
title_sort |
Domain-specific language & support tools for high-level stream parallelism |
author |
Griebler, Dalvan Jair |
author_facet |
Griebler, Dalvan Jair |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Fernandes, Luiz Gustavo Leão |
dc.contributor.advisor1ID.fl_str_mv |
571.500.100-59 |
dc.contributor.advisor1Lattes.fl_str_mv |
http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4784653A5 |
dc.contributor.advisor-co1.fl_str_mv |
Danelutto, Marco |
dc.contributor.authorID.fl_str_mv |
022.188.220-08 |
dc.contributor.authorLattes.fl_str_mv |
http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4425308Y3 |
dc.contributor.author.fl_str_mv |
Griebler, Dalvan Jair |
contributor_str_mv |
Fernandes, Luiz Gustavo Leão Danelutto, Marco |
dc.subject.por.fl_str_mv |
LINGUAGEM DE PROGRAMAÇÃO DE DOMÍNIO ESPECÍFICO (COMPUTADORES) PROGRAMAÇÃO PARALELA AVALIAÇÃO DE DESEMPENHO (INFORMÁTICA) FRAMEWORK AGRUPAMENTO DE INFORMAÇÕES (INFORMÁTICA) INFORMÁTICA |
topic |
LINGUAGEM DE PROGRAMAÇÃO DE DOMÍNIO ESPECÍFICO (COMPUTADORES) PROGRAMAÇÃO PARALELA AVALIAÇÃO DE DESEMPENHO (INFORMÁTICA) FRAMEWORK AGRUPAMENTO DE INFORMAÇÕES (INFORMÁTICA) INFORMÁTICA CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
dc.subject.cnpq.fl_str_mv |
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
description |
Stream-based systems are representative of several application domains including video, audio, networking, graphic processing, etc. Stream programs may run on different kinds of parallel architectures (desktop, servers, cell phones, and supercomputers) and represent significant workloads on our current computing systems. Nevertheless, most of them are still not parallelized. Moreover, when new software has to be developed, programmers often face a trade-off between coding productivity, code portability, and performance. To solve this problem, we provide a new Domain-Specific Language (DSL) that naturally/on-the-fly captures and represents parallelism for stream-based applications. The aim is to offer a set of attributes (through annotations) that preserves the program’s source code and is not architecture-dependent for annotating parallelism. We used the C++ attribute mechanism to design a “de-facto” standard C++ embedded DSL named SPar. However, the implementation of DSLs using compiler-based tools is difficult, complicated, and usually requires a significant learning curve. This is even harder for those who are not familiar with compiler technology. Therefore, our motivation is to simplify this path for other researchers (experts in their domain) with support tools (our tool is CINCLE) to create high-level and productive DSLs through powerful and aggressive source-to-source transformations. In fact, parallel programmers can use their expertise without having to design and implement low-level code. The main goal of this thesis was to create a DSL and support tools for high-level stream parallelism in the context of a programming framework that is compiler-based and domain-oriented. Thus, we implemented SPar using CINCLE. SPar supports the software developer with productivity, performance, and code portability while CINCLE provides sufficient support to generate new DSLs. Also, SPar targets source-to-source transformation producing parallel pattern code built on top of FastFlow and MPI. Finally, we provide a full set of experiments showing that SPar provides better coding productivity without significant performance degradation in multi-core systems as well as transformation rules that are able to achieve code portability (for cluster architectures) through its generalized attributes. |
publishDate |
2016 |
dc.date.accessioned.fl_str_mv |
2016-06-20T20:03:42Z |
dc.date.issued.fl_str_mv |
2016-03-30 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://tede2.pucrs.br/tede2/handle/tede/6776 |
url |
http://tede2.pucrs.br/tede2/handle/tede/6776 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.program.fl_str_mv |
1974996533081274470 |
dc.relation.confidence.fl_str_mv |
600 600 600 |
dc.relation.department.fl_str_mv |
-3008542510401149144 |
dc.relation.cnpq.fl_str_mv |
3671711205811204509 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Pontifícia Universidade Católica do Rio Grande do Sul |
dc.publisher.program.fl_str_mv |
Programa de Pós-Graduação em Ciência da Computação |
dc.publisher.initials.fl_str_mv |
PUCRS |
dc.publisher.country.fl_str_mv |
Brasil |
dc.publisher.department.fl_str_mv |
Faculdade de Informática |
publisher.none.fl_str_mv |
Pontifícia Universidade Católica do Rio Grande do Sul |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da PUC_RS instname:Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) instacron:PUC_RS |
instname_str |
Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) |
instacron_str |
PUC_RS |
institution |
PUC_RS |
reponame_str |
Biblioteca Digital de Teses e Dissertações da PUC_RS |
collection |
Biblioteca Digital de Teses e Dissertações da PUC_RS |
bitstream.url.fl_str_mv |
http://tede2.pucrs.br/tede2/bitstream/tede/6776/5/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.jpg http://tede2.pucrs.br/tede2/bitstream/tede/6776/4/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf.txt http://tede2.pucrs.br/tede2/bitstream/tede/6776/3/license.txt http://tede2.pucrs.br/tede2/bitstream/tede/6776/2/TES_DALVAN_JAIR_GRIEBLER_COMPLETO.pdf |
bitstream.checksum.fl_str_mv |
335357cf3fef52314c310d7b3e133e94 5633833a6befa97a26e118a94a123179 5a9d6006225b368ef605ba16b4f6d1be 4381302ea5fe43fe32da3f9826a1ad8a |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da PUC_RS - Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) |
repository.mail.fl_str_mv |
biblioteca.central@pucrs.br|| |
_version_ |
1799765320915746816 |