Anda di halaman 1dari 6

International Journal of Computer Architecture Education (IJCAE)

Um Ambiente Baseado em Blocos para Ensino de Programaca o


Paralela com OpenCL
Josue da Silva Gomes Junior1 , Maelso Bruno Pacheco Nunes Pereira2 , Alisson V. Brito2 ,
Jorge Gabriel Gomes de Souza Ramos3
1 Centro de Ci encias Aplicadas e Educaca o CCAE
2 Programa de P os-Graduaca o em Informatica PPGI
2 Centro de Inform atica CI
3 Departamento de Fsica
123 Universidade Federal da Paraba UFPB

Emails: [josue.gomes, maelso.bruno]@dce.ufpb.br, alisson@ci.ufpb.br, jorgephysics@gmail.com

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

v.5, n.1, dezembro 2016 - p.38


International Journal of Computer Architecture Education (IJCAE)

[5]. descritos anteriormente e e executada na CPU, a outra parte


O trabalho esta estruturado em 7 seco es, divididas da se- e o Kernel programado em OpenCL, que sao os programas
guinte maneira: a seca o II apresenta a Fundamentaca o Teorica; executados nos Devices e compilado em tempo de execuca o.
a seca o III aborda os Trabalhos Relacionados; a seca o IV Essas duas partes podem ser observadas na figura 1.
apresenta o desenvolvimento da ferramenta; na seca o Potencial
Pedagogico V na seca o VI encontram-se as Consideraco es
finais e Conclusao e na seca o VII os Trabalhos Futuros.
T E ORICA
II. F UNDAMENTAC AO
Em razao do alto poder computacional das GPUs, pre-
sentes ate mesmo nos computadores para fins domesticos,
a comunidade cientfica passou a utiliza-los para computar
grande parte dos algoritmos numericos, auxiliando assim na
resoluca o problemas cientficos e da engenharia [6]. Antes
esses dispositivos eram utilizados para fins de entretenimento
como renderizaca o de vdeos e jogos.
Figura 1. Modelo da Plataforma OpenCL [8]
A. Paralelismo e OpenCL
Tendo em vista o rapido aumento na diversificaca o das A execuca o do OpenCL nos Devices, onde se da o parale-
plataformas de computaca o, fez-se necessario um padrao de lismo, possui alguns detalhes, como:
desenvolvimento para as aplicaco es, assim surgiu o OpenCL Kernel: s ao como funco es que sao executadas nos dispo-
[7]. Mantido atualmente pelo Khronos Group, o OpenCL e sitivos, os kernels sao as u nicas funco es que podem ser
uma API e uma linguagem de programaca o de padrao aberto e chamadas pelo host.
livre de royalties, compatvel com multiplas plataformas para Work-Item: o work-item e a menor entidade de execuca o.
programaca o paralela [8]. O objetivo do padrao OpenCL e Todos os work-itens executam uma copia do kernel. Cada
unificar em um u nico paradigma e conjunto de ferramentas work-item tem um ID local e um ID global, que sao
o desenvolvimento de soluco es de computaca o paralela para usados para distingui-los.
dispositivos de naturezas distintas [1]. O OpenCL padroniza Work-group: work-groups existem para agrupar os work-
o desenvolvimento de programaca o paralela, pois oferece um itens, permitindo a comunicaca o e cooperaca o entre eles.
conjunto comum de ferramentas para tomar vantagem de qual- Assim como os work-itens os work-groups possuem um
quer dispositivo com suporte a` OpenCL para o processamento ID.
de codigo paralelo, por criar uma interface de programaca o
bem proxima ao hardware [9]. B. Google Blockly
Em contrapartida, A API nativa do OpenCL requer do As linguagens de programaca o visual permitem que o
desenvolvedor uma grande quantidade de boilerplate code1 . usuario crie programas manipulando elementos graficos. Como
Outro problema ao comecar a programar em OpenCL e a exemplo temos o MIT App Inventor [13] e Scratch [14].
necessidade de familiarizar-se com um novo paradigma de Essas linguagens podem ser a mais forte alternativa exis-
programaca o [10]. tente a` pratica de programaca o convencional [15]. O uso
Uma aplicaca o em OpenCL possui quatro passos que se de linguagens baseada na conexao de blocos de comandos
repetem na maioria dos programas em OpenCL [11], sao eles: facilita o aprendizado [16]. Pois, o uso dessas linguagens
1) Levantamento dos dispositivos disponveis, criaca o do na aprendizagem de programaca o garante que os alunos se
contexto de execuca o; concentrem muito mais na logica de programaca o do que na
2) Envio de dados para os dispositivos, copiando do host, sintaxe da linguagem [17].
que normalmente e a CPU para os dispositivos. O Blockly e uma interface de desenvolvimento de lingua-
3) Execuca o do Kernel nos dispositivos e sao passados os gem visual totalmente web-based, na qual os usuarios podem
parametros atraves da chamada da API OpenCL, que e arrastar blocos e gerar novos codigos. O Blockly nao e uma
executado de forma assncrona em relaca o ao host; linguagem de programaca o, ele apenas converte os blocos
4) Leitura dos resultados gerados pela execuca o nos dispo- em linguagem procedural, tais como Python, Javascript e
sitivos PHP [4]. O Google Blockly Developer fornece um framework
Alem disso, a estrutura do programa em OpenCL se divide onde e possvel criar blocos e exporta-los para a linguagem
em duas partes [12], a primeira parte e chamada de host, desejada. Essa abordagem e utilizada para ajudar aprendizes
programado em C++, onde sao definidos os quatros passos em programaca o a criar uma conexao entre a linguagem visual
e a linguagem de programaca o tradicional [18].
1 Em Programac a o de computadores boilerplate code refere-se a uma A natureza visual do Blockly adiciona usabilidade, que
seca o de codigo que deve ser inclusa em varios locais com pouca ou nenhuma
alteraca o, o programador deve escrever muito codigo para o mnimo de faz dele um grande framework para o desenvolvimento de
resultado aplicaco es de aprendizagem para programadores novatos. E

v.5, n.1, dezembro 2016 - p.39


International Journal of Computer Architecture Education (IJCAE)

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

v.5, n.1, dezembro 2016 - p.40


International Journal of Computer Architecture Education (IJCAE)

paralelismo e as funco es do OpenCL. Sendo assim, decidiu-se


desenvolver uma pagina web com tutoriais sobre o OpenCL e
o ambiente de programaca o a ser desenvolvido.

C. Desenvolvimento da pagina Web


Foi desenvolvido uma pagina web com as informaco es sobre
a ferramenta, exemplos disponveis comparando a linguagem
visual com a linguagem procedural, tutorial da preparaca o
do ambiente, contextualizaca o da programaca o paralela e
do OpenCL e auxiliar as pessoas que queiram aprender a
programar com o paradigma de programaca o paralela. Foi
utilizado um template responsivo do Bootstrap4 .
O site serve como base para iniciar estudos sobre o OpenCL,
pois alem dos tutoriais, a pagina apresenta um conjunto de
informaco es e sugestoes de leitura sobre o tema, ou seja, o
site se torna um ponto de partida para as pessoas que queiram
aprender a programar em OpenCL. O site tem o proposito
de auxiliar com o aprendizado na utilizaca o do ambiente de
programaca o Blockly OpenCL, detalhando passo a passo o uso
Figura 3. Interface de programaca o visual
dos blocos relacionando o codigo gerado tanto para o host,
quanto para o kernel, possibilitando ao usuario perceber como
funciona o paralelismo no codigo gerado atraves dos blocos.
serao executadas nos dispositivos de processamento paralelo. D. Conjunto de blocos que formam um programa com para-
A u ltima aba guarda o codigo xml, que possibilita salvar o digma de programaca o paralela
projeto dos blocos.
Nesta seca o sera descrito em detalhes um bloco que soma
vetores e matrizes de forma paralela, com o intuito de exem-
plificar de forma didatica a conexao entre os blocos, o Host e
o Kernel. Com o arrastar de alguns blocos e possvel criar um
programa completo, como podemos ver na Figura 5 e descrito
detalhadamente nos itens listados a seguir:
start gera no host c odigos de definico es de arquivos,
include da biblioteca OpenCL e cabecalhos comuns em
programas C e C++;
Context Definition seleciona um dispositivo do tipo CPU
(em uma lista contendo CPU, GPU, ACCELERATOR,
DEFAULT, ALL) para realizar o processamento do ker-
nel, cria um contexto e uma fila de comando para o
dispositivo;
o bloco main possui a definic a o do metodo main que
gera o codigo de execuca o no host;
RandomicMatrizGenerator, este bloco e responsavel por
gerar de forma paralela no dispositivo uma matriz
aleatoria, com as caractersticas passadas como argumen-
tos. Esse bloco foi utilizado duas vezes, uma para cada
matriz. Em ambos os casos foi solicitada uma matriz com
dimensoes 1024x1024, povoada com elementos inteiros,
variando de 0 ate 9;
Matrices Operation, e responsavel por somar MatrizA e
MatrixB de forma paralela no dispositivo;
getResult, solicita ao dispositivo que transfira para o host

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

v.5, n.1, dezembro 2016 - p.41


International Journal of Computer Architecture Education (IJCAE)

e praticas, programaca o, aplicativos, multimdia e Internet,


simulaca o, jogos. O Blockly OpenCL se enquadra em dois
deles:
Programac a o: em que o aluno podera desenvolver as
aplicaco es e obter o codigo da aplicaca o desenvolvida;
Tutorial: no qual a informac a o e organizada de acordo
com uma sequencia pedagogica particular, seguindo essa
sequencia o aprendiz pode escolher a informaca o que
desejar e fazer uma correspondencia direta entre cada
comando e comportamento do computado
E quanto aos nveis de aprendizagem:
Sequencial: em que o aluno segue as informac o es que
lhe sao transmitidas de forma sequencial;
Relacional: em que o aluno pode fazer relac o es com
outros fatos ou outras fontes de informaca o. Dar-se e nfase
na interaca o do aprendiz com a tecnologia.
Outro fator importante para um software educativo e de se
enquadrar em uma teoria de aprendizagem. O Blockly OpenCL
adequa-se ao behaviorismo, devido treinar os estudantes a
exibir determinado comportamento, usar o reforco positivo
para reforcar o comportamento desejado e usar o reforco
negativo para reduzir a frequencia do comportamento nao
Figura 5. Exemplo dos blocos de soma de matrizes ou vetores desejado, alem de apresentar o resultado em seco es breves,
o aluno pode ser testado ao fim de cada seca o e apresentar
feedback imediato [23].
O bloco print matrices captura a variavel a qual foi Na educaca o, o behaviorismo esta associado ao trabalho
alocada as matrizes para ser impressas. de Skinner, que esta focado no comportamento voluntario,
Ao definir essas informaco es o usuario podera clicar na aba deliberado e observavel, que ele acreditava ser a maior
Host para visualizar a definica o do host e na aba Kernel para parte do repertorio comportamental de indivduo [23]. No
obter o respectivo codigos do kernel OpenCL. Finalmente, behaviorismo, aprendizagem e igual a exibir comportamento
deve exporta-los para a IDE e executar o programa de soma apropriado. Neste enfoque, a atividade de aprendizagem e
ou multiplicaca o de matrizes ou vetores. planejada de modo a serem ensejadas situaco es em que o
No codigo de soma de matrizes de forma procedural, a estudante evidencie comportamentos desejados.
complexidade e o numero de passos e muito maior, pois Assim como as outras ferramentas, com o paradigma de
diferente do paralelismo em que todas as somas sao feitas programaca o visual citadas neste trabalho, o Blockly OpenCL
em uma u nica iteraca o, na linguagem procedural o codigo ira tem o mesmo potencial pedagogico para apoiar o ensino-
executar o numero de iteraco es de acordo com o tamanho da aprendizagem de uma linguagem de programaca o, observando
matriz. que nesse aspecto, todas elas tem as mesmas caractersticas,
que possibilitam jovens e adultos a programarem de forma

V. P OTENCIAL PEDAG OGICO DA FERRAMENTA B LOCKLY
mais simples e a gil, sem a necessidade de conhecer a sintaxe
O PEN CL especfica de cada linguagem e obter o mesmo resultado.
O ambiente Blockly OpenCL se caracteriza como um soft- Vale ressaltar que, mesmo possibilitando o desenvolvimento
ware educativo, conforme define Soffa e Alcantara (2012) [21] de programas complexos em OpenCL na ferramenta Blockly
o software educativo e desenvolvido com o desgnio de levar OpenCL, o usuario necessitara buscar aprender mais sobre a
o aluno a construir um determinado conhecimento referente a linguagem e o paradigma de programaca o paralela.
um conteudo didatico. O objetivo de um software educativo e Foge do objetivo desse trabalho que o usuario aprenda a
de favorecer os processos de ensino-aprendizagem e sua ca- programar em OpenCL apenas fazendo uso da ferramenta. O
racterstica principal e seu carater didatico. Ressalta tambem Blockly OpenCL deve servir como auxiliador para iniciantes
que O emprego destes programas nao garantira por si so a nos estudos de OpenCL, agilizar o desenvolvimento de uma
aprendizagem dos alunos, pois os mesmos sao instrumentos aplicaca o, facilitar testes, possibilitar verificar o codigo gerado,
didaticos de ensino que podem e devem estar a servico do relacionando-o com o seu respectivo bloco e implementar
processo de construca o e assimilaca o do conhecimento dos pequenas mudancas. Tambem pode ser utilizado por usuarios
aprendizes. mais experientes, mas nao necessariamente para auxiliar o
Segundo Vieira(1999) [22], o software educativo pode ensino. Neste caso, servira para desenvolver as aplicaco es
ser classificado em tipos, dentre eles: tutorial, exerccios em um menor tempo, tendo em vista que ao arrastar um

v.5, n.1, dezembro 2016 - p.42


International Journal of Computer Architecture Education (IJCAE)

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

v.5, n.1, dezembro 2016 - p.43

Anda mungkin juga menyukai