Escolar Documentos
Profissional Documentos
Cultura Documentos
ResumoEste trabalho apresenta o software educativo Blockly Por outro lado, a linguagem visual vem se mostrando
OpenCL. Ele tem por objetivo auxiliar o ensino-aprendizagem bem promissora no auxlio ao ensino de programaca o de
do paradigma de programaca o para arquiteturas paralelas com computadores. Com ela e possvel trabalhar com os mais
OpenCL. Nele foi utilizado o paradigma de programaca o visual,
atraves de um ambiente de desenvolvimento baseado em blocos diversos publicos, levando em conta a forma intuitiva de
feito com a API do Google Blockly, que permite ao usuario criar programar, manipulando blocos com funco es pre-programadas
aplicaco es manipulando blocos e exporta-los para a linguagem e convertidas ao modo textual de programaca o [3]. Essa pratica
OpenCL C++. O Blockly OpenCL tambem e composto por facilita e torna mais a gil o desenvolvimento de aplicaco es, pois
uma pagina web contendo uma contextualizaca o da ferramenta, com a junca o de alguns blocos, de forma logica, e possvel
exemplos e materiais de apoio sobre o OpenCL.
obter varias linhas de codigo de um programa procedural,
I. I NTRODUC AO diminuindo a barreira ao aprender ou desenvolver novos
Utilizados principalmente na industria de entretenimento, programas.
computadores baseados em processadores multicore e many- Tendo em vista as vantagens no uso de linguagens visuais,
core trazem em si tambem outras arquiteturas distintas da este trabalho objetiva desenvolver um ambiente com uma lin-
propria CPU, como a GPU (Graphical Processing Unit), guagem visual, baseada em blocos, para apoio a` aprendizagem
promovendo o aumento de desempenho dos sistemas atuais. de programaca o paralela com OpenCL. Esse ambiente tornara
Esses processadores estao presentes em: smartphones, smart facil e transparente o desenvolvimento em programaca o pa-
tvs, single board computer e computadores pessoais. Nas ralela com OpenCL. O ambiente foi desenvolvido a partir da
u ltimas decadas estao sendo cada vez mais utilizados em API Blockly [4], que permite a criaca o de novos conjuntos
pesquisas cientficas [1]. de blocos para a exportaca o em uma dada linguagem de
Atualmente, ha algumas APIs (Application Programming programaca o.
Interface) e frameworks que provem interfaces que facilitam a Para este trabalho, foi escolhida a API OpenCL como base
programaca o para tais dispositivos, entre elas estao o CUDA, para a aplicaca o, pelo fato de ser aberta, livre de royalties,
(Compute Unified Device Architecture), o OpenMP (Open com finalidades gerais, funcionar em plataformas heterogeneas
Multi-Processing) e o OpenCL (Open Computing Language). e possuir uma comunidade ativa, alem de possuir suporte em
Diferente dos demais, o OpenCL se popularizou devido pro- algumas linguagens como C, C++, Python, Java e Javascript.
porcionar um padrao para o desenvolvimento em GPGPU O publico alvo e desde alunos iniciantes a avancados,
(General Purpose Graphics Processing Unit), tipicamente que possuam a necessidade de aprender o paradigma de
adotado por sua portabilidade entre GPUs e CPUs. programaca o paralela, bem como pesquisadores de a reas de
Mesmo o OpenCL trazendo algumas facilidades na conhecimento diferentes da computaca o e que precisam utili-
programaca o, ainda sao necessarias algumas habilidades no zar programaca o paralela em suas pesquisas.
desenvolvimento de aplicaco es paralelas, como programar Tambem foi desenvolvida uma pagina web, para servir
em baixo nvel de abstraca o, com instruco es proximas ao como documentaca o, contendo exemplos e tutoriais. A pagina
comando de maquina. Assim, e percebido uma rigorosa curva segue o conceito de Web-based learning (WBL), que inclui
de aprendizagem necessaria para lidar com essas APIs [2]. O algumas vantagens tecnicas, como acessibilidade universal,
OpenCL e um assunto que pode ser considerado complexo, facil atualizaca o do conteudo e funco es de hiperlink, que
isso ocorre devido ao alto nvel de conhecimento exigido do permite referenciar para outros recursos. A escolha do formato
desenvolvedor, como conhecer a programaca o do hospedeiro de informaca o se deu pelo impacto que essa pode ter na
(host), a programaca o do dispositivo (device) e o mecanismo aprendizagem dos conteudos. O formato hipermdia suporta
de transferencia de dados entre o hospedeiro e o dispositivo uma aproximaca o mais flexvel para a instruca o, ajudando es-
[2]. tudantes a trabalhar com o conteudo de diferentes perspectivas
que mais de 137 milhoes de usuarios usam o Blockly fra- dos blocos, onde e possvel selecionar o formato do bloco, as
mework como parte do Code.org entradas do usuario, os possveis encaixes e digitar o codigo
2
e hora do codigo3 . Atualmente mais de 5 milhoes de estu- em OpenCL C++ que sera exportado em codigo Javascript
dantes estao em cursos de programaca o utilizando linguagem para ser incorporado ao ambiente.
de Programaca o Visual (LPV) [18].
A. Block Factory
III. T RABALHOS R ELACIONADOS O Block Factory, mostrado na figura 2, e uma ferramenta
O NoooCL [19] e uma API baseada em node que usa o disponibilizada pela API Google Blockly, que oferece uma
paralelismo do OpenCL em uma linguagem de alto nvel, que interface amigavel para a criaca o de blocos. Com o Block
e o Javascript e vem facilitar a programaca o em OpenCL para Factory e possvel criar todos os tipos de blocos que se
usuarios que preferem ou necessitam usar uma aplicaca o em facam necessarios. E possvel definir cores, formas, tipos de
node ao inves de C ou C++. O NoooCL tem semelhancas encaixes, restrico es de conexao, entradas do usuario e textos. A
com o Blockly OpenCL, pois ele pretende facilitar o desen- inclusao do bloco no ambiente e feita atraves de dois codigos,
volvimento de aplicaco es paralelas, com a utilizaca o de uma o primeiro e o Language Code, que define da aparencia do
linguagem de alto nvel, a diferenca e que o Blockly usa bloco, e o outro e o Generator Stub, que define os codigos
blocos para gerar os codigos em C++ e CL e o NoooCL usa que serao gerados na linguagem indicada, no nosso caso e o
bibliotecas para a criaca o do programa em Javascript. OpenCL.
Foi encontrada apenas a ferramenta OpenBlocks que gera
codigos de forma semelhante ao Google Blockly. O Open-
Blocks e um ambiente de desenvolvimento baseado em blocos
que disponibiliza uma API para desenvolver novos blocos para
determinada linguagem [20]. O OpenBlocks e uma ferramenta
semelhante ao Blockly, mudando apenas a linguagem a ser
desenvolvida os blocos e a aparencia, enquanto o Blockly usa
Javascript para desenvolver os blocos, o OpenBlocks utiliza
Java. O Blockly foi escolhido devido a facilidade de criar os
blocos com a ferramenta BlockFactory, a comunidade ativa
e por ja existir um ambiente que serve como exemplo e se
adequa as necessidades do ambiente planejado para o Blockly
OpenCL.
Seguindo o mesmo padrao, a ferramenta Block-C e um
ambiente de programaca o visual com blocos que exporta os
blocos montados de maneira logica para a linguagem C.
O Block-C foi desenvolvido com OpenBlocks no intuito de
facilitar a aprendizagem da linguagem C para novatos. O
Block-C tem muitas semelhancas com o Blockly OpenCL, pois
tem o intuito de apoiar aprendizagem de uma linguagem de Figura 2. Interface da a rea de codigo do Google Block Factory
programaca o atraves de uma ferramenta de desenvolvimento
com blocos. Devido a uma questao de compatibilidade com os disposi-
IV. D ESENVOLVIMENTO tivos, foi escolhido gerar os codigos em OpenCL na versao
1.2, que segue o padrao ISO C99 e com a linguagem C++.
A soluca o encontrada para deixar o OpenCL com alto nvel Assim, o codigo gerado a partir da ferramenta sera compatvel
de abstraca o foi utilizar uma linguagem visual. Foi escolhido com um maior numero de dispositivos presentes no mercado
o Google Blockly por ele apresentar uma documentaca o bem ate o momento, ja que as versoes mais recentes do OpenCL
definida, uma comunidade ativa e tambem pela aparencia dos funciona apenas com as plataformas mais recentes.
elementos, alem de ja disponibilizar uma ferramenta para a
construca o dos blocos, bem como um ambiente modelo e por B. Desenvolvimento do ambiente
ser uma ferramenta web-based que nao precisara ser feito o A interface de desenvolvimento Blockly OpenCL tem sua
download ou instalaca o. estrutura dividida em abas. A aba blocks, mostrada na figura
Para o desenvolvimento dos blocos na API Blockly foi 3, corresponde ao ambiente de programaca o visual, nela
necessaria uma breve observaca o da documentaca o e de exem- encontram-se os blocos que foram arrastados e montados. E
plos, tambem foi utilizado o Block Factory para a construca o possvel encontrar botoes com opco es de controle para o zoom
e tambem o botao de apagar o projeto.
um projeto que incentiva o ensino de ciencia da computaca o para
2E
Na segunda aba, figura 4, encontra-se o codigo OpenCL,
criancas e adolescentes https://code.org/
um movimento que visa o ensino de programaca o atraves de uma
3E gerado a partir dos blocos, que define o host. Ja na terceira
plataforma baseada em programaca o visual https://hourofcode.com/br/pt aba ficam os codigos do Kernel, que sao as funco es que
Figura 4. Codigo gerado a partir dos blocos a matriz resultante da soma e atribui essa matriz a` variavel
result;
Percebeu-se ainda a importancia de oferecer materiais para 4 O template e disponibilizado para download gratuitamente atraves do link
que o aluno ou usuario pudesse compreender a plataforma, o https://github.com/BlackrockDigital/startbootstrap-freelancer
bloco e possvel produzir, de uma so vez, varias linhas de [7] D. Kirk and W. Hwu, Programming Massively Parallel Processors:
codigo. Outra proposta de aplicaca o da ferramenta e possibi- A Hands-on Approach, ser. Applications of GPU Computing Series.
Elsevier Science, 2010. [Online]. Available: https://books.google.com.
litar pesquisadores de outras a reas de conhecimento que nao br/books?id=qW1mncii 6EC
a ciencia da computaca o, mas que possuam um conhecimento [8] O. W. G. Khronos Group et al., The opencl specification, version 1.1,
basico em programaca o, a produzir suas aplicaco es de maneira vol. 1, no. 44, p. 385, 2011.
[9] R. Banger and K. Bhattacharyya, OpenCL Programming by Example.
paralela, verificando apenas os exemplos e ou tutoriais, alem Packt Publishing, 2013. [Online]. Available: https://books.google.com.
das recomendaco es de leitura presentes na pagina web da br/books?id=W2lpAgAAQBAJ
ferramenta. [10] D. Demidov, K. Ahnert, K. Rupp, and P. Gottschling, Programming
cuda and opencl: A case study using modern c++ libraries, SIAM
FINAIS E CONCLUS AO
VI. CONSIDERAC OES Journal on Scientific Computing, vol. 35, no. 5, pp. C453C472, 2013.
[11] A. Tupinamba, Programaca o em gpu utili-
A programaca o paralela e um paradigma que consiste em zando opencl, pp. 111, 2013. [Online]. Avai-
lable: http://andrelrt.wdfiles.com/local--files/gpuprogramming:home/
computar dados de forma simultanea. Sua utilizaca o pode Programacao em GPU utilizando OpenCL.pdf
trazer benefcios relacionados a custos e frequencia de pro- [12] CodePlex, Opencl tutorials, http://opencl.codeplex.com/wikipage?
cessamento. O OpenCL e uma linguagem de programaca o que title=OpenCL%20Tutorials%20-%201, 2016, acessado junho 11, 2016.
[13] MIT, Mit app inventor, http://appinventor.mit.edu/explore/, 2016,
faz uso desse paradigma. Ele apresenta um grande potencial acesso em 13 de junho de 2016.
no processamento paralelo com volumes elevados de dados [14] MIT Scratch, Mit app inventor, https://scratch.mit.edu/, 2016, acesso
com problemas algebricos. Com isso, sua utilizaca o pela em 13 de junho de 2016.
[15] K. Brock, Composing accessible code, Computers and Writing,
academia, apesar de relativamente recente, vem sendo bem 2014. [Online]. Available: http://siteslab.org/cwcon/2014/sites/default/
aceita por pesquisadores. Entretanto, devido a` complexidade, files/public/Brock%20-%20Composing%20Accessible%20Code.pdf
utiliza-lo ainda apresenta desafios. Sendo assim, acredita-se [16] A. B. Finizola, E. H. S. Raposo, M. B. P. N. Pereira, W. S. Gomes,
A. L. S. O. de Araujo, and F. V. C. Souza, O ensino de programaca o
que a ferramenta apresentada neste trabalho ira contribuir para para dispositivos moveis utilizando o mit-app inventor com alunos do
a soluca o desse problema. ensino medio, in Anais do Workshop de Informatica na Escola, vol. 20,
A avaliaca o do ambiente de programaca o Blockly OpenCL no. 1, 2014, p. 337.
[17] F. Melo, R. CUNHA, D. SCOLARO, and J. CAMPOS, Do scratch
ocorreu pela verificaca o do codigo gerado pelos blocos. Ao ao arduino: Uma proposta para o ensinointrodutorio de programaca o
serem colocados de maneira logica, o codigo gerado deveria para cursos superiores de tecnologia, in XXXIX Congresso Brasileiro
ser similar a` sua soluca o desenvolvida em baixo nvel. Ainda de Educaca o em Engenharia, Blumenau, Brasil, 2011.
[18] C. S. Crawford, M. Andujar, F. Jackson, I. Applyrs, and J. E. Gilbert,
nao foi possvel realizar testes com usuarios. Using a visual programing language to interact with visualizations of
electroencephalogram signals, ASEE-SE Annual Meeting, 2016. [On-
VII. T RABALHOS F UTUROS line]. Available: http://asee.cs.southern.edu/openconf/modules/request.
Como trabalhos futuros, ve-se a possibilidade de executar a php?module=oc program&action=view.php&a=&id=70&type=4
[19] G. Mezos, Nooocl npm, https://github.com/unbornchikken/NOOOCL,
aplicaca o a partir do ambiente de desenvolvimento do Blockly 2016, acesso em 30 de abril, 2016.
OpenCL, atraves de um servidor proprio. Assim, nao sera [20] R. V. Roque, Openblocks: an extendable framework for graphical block
necessario fazer o download dos codigos gerados para executa- programming systems, Ph.D. dissertation, Massachusetts Institute of
Technology, 2007.
lo localmente. [21] M. M. Soffa and P. R. d. C. Alcantara, O uso do software educativo:
Tambem sera realizado testes com alunos e pesquisadores reflexoes da pratica docente na sala informatizada, vol. 22, 2008.
que necessitem utilizar programaca o paralela, almejando ana- [22] F. M. S. Vieira, Avaliaca o de software educativo: reflexoes para uma
analise criteriosa, http://www. edutecnet. com. br/edmagali2. htm.
lisar o nvel de intuitividade e agilidade ao desenvolver uma Acessado em, vol. 5, no. 11, p. 06, 1999.
aplicaca o utilizando o Blockly OpenCL. Para assim, saber se [23] K. L. Martins, Teorias de aprendizagem e avaliaca o de software
a ferramenta realmente contribui no ensino-aprendizagem de educativo, Monografia) Especializaca o em Informatica Educativa
Universidade Federal do Ceara, 2002.
programaca o paralela com OpenCL.
R EFER E NCIAS
[1] C. L. Silveira, L. G. da Silveira Jr, and G. G. H. Cavalheiro,
Programaca o em opencl: Uma introduca o pratica, 2010.
[2] M. Scarpino, OpenCL in Action: How to Accelerate Graphics and
Computation, 2012. [Online]. Available: https://books.google.com.br/
books?id=pzuAygAACAAJ
[3] G. da Silveira Junior, F. Diniz Rossi, P. Lincoln Ramires Izolan, and
J. Renan da Silva Almeida, Analise da ferramenta de programaca o
visual blockly como recurso educacional no ensino de programaca o,
III Seminario Argentina-Brasil de Tecnologias da Informaca o e da
comunicaca o, 2015.
[4] Google Developers, Blockly instalation, https://developers.google.
com/blockly/installation/overview, 2016, acesso em 21 de marco, 2016.
[5] T. J. Mitchell, S. Y. Chen, and R. D. Macredie, Hypermedia learning
and prior knowledge: domain expertise vs. system expertise, Journal
of Computer Assisted Learning, vol. 21, no. 1, pp. 5364, 2005.
[6] J. Kowalik and T. Puzniakowski, Using OpenCL: Programming
Massively Parallel Computers, ser. Advances in parallel computing.
IOS Press, 2012. [Online]. Available: https://books.google.com.br/
books?id=T0sKa4T-sN0C