Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Resumo
inegvel a importncia do ensino de programao paralela nos cursos de graduao em Tecnologia da Informao. Contudo, a importncia merecida no dada desde o incio do curso. Eventos isolados no so capazes de mudar a filosofia daqueles que lecionam. Assim, necessrio alertar sobre a importncia do paralelismo nas mais diversas reas da computao. O objetivo deste artigo propor medidas para solidificar o ensino de programao paralela nos cursos de graduao. Desta forma a arquitetura hoje disponvel e a programao ficaro em sintonia.
1. Introduo
As dificuldades encontradas na programao paralela no so novidade. Existem pesquisas referentes a esta rea h pelo menos trs dcadas [1]. Alm disso, nos dias de hoje a maioria dos computadores vendidos, inclusive para uso domstico, possuem processadores com no mnimo dois ncleos fsicos [2]. Porm, o ensino da programao paralela nos cursos de graduao ainda no proporcional a crescente utilizao desta arquitetura. O constante aumento da demanda de processamento por aplicaes atuais e as limitaes fsicas definidas como dissipao de calor e consumo de energia esto fazendo com que os processadores mono-ncleo entrem em desuso. O paralelismo est substituindo gradativamente o modelo sequencial. Entretanto, a programao sequencial ainda possui um destaque muito maior do que a paralela nos cursos de graduao em computao. Vrias conferncias abordam o paralelismo, como por exemplo, Grandes Desafios da SBC [3]. Todavia, estes eventos no vm surtindo efeito nas salas de aula. Nenhum deles destaca a importncia do ensino de computao paralela, de maneira mais aprofundada, no incio dos cursos de tecnologia da informao. preciso tornar a programao paralela algo to natural quanto a programao sequencial. necessrio
mostrar aos profissionais que lecionam na rea o quo importante a utilizao de cdigos paralelos para, ento, conseguir extrair a capacidade mxima das arquiteturas paralelas emergentes. De nada adianta existirem arquiteturas paralelas com grande potencial se no houver softwares adequados s mesmas. O uso de multi-ncleos no demonstra vantagem caso o software seja seqencial. Por exemplo, a aplicao NotePad comumente encontrada nos sistemas Windows seqencial. J a aplicao NotePad++ [11] paralela capacitando o usurio a abrir mais de um arquivo sob um mesmo processo e realizar pesquisas pelo texto de forma paralela. No primeiro caso, apenas um ncleo trabalha enquanto os demais ficam inativos. J no segundo, caso o usurio mande pesquisar por uma palavra observado que os dois ncleos entram em uso. Introduzir a programao paralela durante o incio dos cursos de graduao o fator primordial para que esta tcnica seja difundida e consequentemente mais explorada. Desenvolver sistemas de qualidade que atendam as demandas dos processos atuais e que faam melhor uso das arquiteturas paralelas tornou-se algo necessrio [1].
2. Situao Atual
Artigos e congressos do tipo grandes desafios que tratavam, em alguma parte, sobre computao paralela j foram realizados nacional e internacionalmente. Entretanto, os resultados esperados no foram - e no so fceis de ser - alcanados. De um modo geral, no comum encontrar desafios propostos completos ao final do tempo esperado. No caso da computao paralela, no difcil perceber que, apesar dos desafios e propostas, o ensino da mesma continua praticamente igual ao de 10 anos atrs, sem nenhuma melhoria ou aprimoramento significativo. Em contrapartida, a realidade outra. Computadores com vrios ncleos no so novidade no mercado. Qualquer mquina pessoal domstica com
38
mais de um ncleo pode ser encontrada em vrias lojas. Assim, o ensino de computao paralela fortemente recomendado para atender a demanda do mercado e ncleos de pesquisa. J existem cursos especializados em computao distribuda [4]. No entanto, essa uma abordagem excludente. O aluno ficaria demasiadamente atrelado em um paradigma. O que proposto a simbiose entre o ensino da programao sequencial com a programao paralela. Outro problema atual a falta de literatura especfica. Os livros referentes a algoritmos geralmente possuem foco nas arquiteturas sequenciais [5]. Os livros que contm material sobre algoritmos paralelos destinam um ou dois captulos para este assunto. Um dos livros que se tem conhecimento e que aborda algoritmos paralelos [6] extremamente complexo para alunos que se encontram no incio de um curso de graduao. A seguir so apresentadas algumas propostas que objetivam mudar a situao atual em que nos encontramos. As medidas vo desde a introduo da arquitetura paralela em simpsios at sua efetivao nas salas de aula. A abordagem de ensino ideal est longe de ser definida. Sugerimos que os leitores acessem o seguinte grupo de discusso [10] para que seja possvel formular uma metodologia mais agradvel aos alunos iniciantes.
Processamento de Imagens, so meios frteis para que a idia seja ampliada. Outras reas como engenharia de software tambm deveriam ser focadas para que os processos de desenvolvimento evolussem. Uma vez que os processos acatassem a computao paralela, ficaria mais explcito para os especificadores e implementadores a importncia desse paradigma. J se sabe, por exemplo, que operaes sobre matrizes podem ser feitas de forma paralela, baixando o tempo computacional de processamento significativamente. Por qu simpsios? A explicao simples: so nos simpsios que se renem professores e pesquisadores das respectivas reas de abordagem. Logo, esses encontros se tornam lugares ideais para troca de idias e conhecimento, alm de abrigar um pblico com grande potencial na pesquisa e na inovao. possvel concluir ento que, as pessoas que devem ser convencidas da importncia da computao paralela so aquelas que representam o meio acadmico, local de pesquisa e busca por meios e resultados novos.
3. Proposta
Existem vrias medidas que podem ser adotadas para solidificar o ensino de programao paralela na graduao. Solidificao esta que possui como objetivo disseminar o interesse e a pesquisa em arquiteturas paralelas. Neste captulo as principais medidas sero apresentadas. Cada subseo desta seo representa um passo a ser seguido. A ordem dos mesmos representa a sequncia ideal de execuo para obter o melhor resultado. importante que se ressalte que todas as propostas contidas neste documento so resultados de reflexes e discusses. Portanto, possvel existir discordncia, dada a subjetividade do contedo.
39
mesmo tempo, aquilo que interessa aos alunos. Assim um fato incentivador aos professores est na ateno que os alunos tendem a despertar quando se trata desse novo paradigma. O prprio aumento da literatura na rea de programao paralela ser um estimulo para os professores. Estes sero capazes de preparar melhor suas aulas. Tero o apoio de materiais concretos que alm de reforar a teoria, iro ajud-los a propor exerccios prticos. Outro ponto incentivador est no fato da computao paralela ser tratada como pesquisa de ponta. A maioria dos alunos gosta de trabalhar sobre aquilo que ainda vai acontecer, ou seja, tecnologias emergentes e desafiadoras, que ainda esto atingindo o mercado. Isso d uma idia de fazer a diferena, pesquisar sobre algo que realmente pode alterar e inovar conceitos j conhecidos. Da o grande interesse. medida que os professores comearem a introduzir a computao paralela nos cursos de graduao, iro consolidar mais seus conhecimentos no assunto. Como de consenso geral que o paralelismo algo necessrio, os professores j estaro mais preparados para quando a computao paralela substituir de fato a sequencial. Alm disso, um maior nmero de professores capacitados implica num maior nmero de alunos capacitados.
QuickSort paralelo? Deve-se mostrar ao aluno como a mudana na estrutura de um algoritmo melhora seu desempenho sem modificar sua idia. Modelos paralelos: atualmente, a engenharia de software, lecionada nas universidades, trata muito pouco de paralelismo em seus modelos. Diagramas de atividades possuem nodos de transio paralela, mas que so pouco abordados em sala. Deve-se dar a devida importncia modelagem de sistemas paralelos. Alm disso, no se deve esquecer que os requisitos no funcionais podem modificar completamente a deciso de qual paradigma deve-se seguir. Ao lecionar programao paralela, os professores devem ficar atentos s dificuldades dos alunos. Condies de Corrida e excluso mtua so mais fceis de assimilar, enquanto determinar a escalabilidade e diviso de tarefas se mostram mais complexas [7]. Sendo assim, deve-se dedicar mais tempo s tarefas com grau de dificuldade maior. A comunicao entre os processos, ou threads, tambm deve ser lecionada com mais cautela. Os desenvolvedores em geral tm dificuldade em modelar essa interao [7]. Existem diversas ferramentas como o Eclipse Parallel Tools Platform [8], que podem auxiliar os alunos a depurar e entender seus programas paralelos. Outra abordagem interessante comear a lecionar conceitos sobre algoritmos paralelos e engenharia de software no ensino mdio [9] ou, no caso do Brasil, nos cursos tcnicos. Essa concepo defende que nunca cedo demais para inserir os conceitos considerados complexos da computao na realidade dos alunos. A abordagem citada acima faz grande sentido. fcil e natural perceber que, quanto mais contato uma pessoa tem com determinado assunto o mais cedo possvel (mesmo que de forma simplificada), maior domnio sobre o assunto ela ter e, principalmente, ter grandes chances de ter idias inovadoras relacionadas ao tema.
4. Efeitos Esperados
Para que a computao paralela seja abordada desde o incio dos cursos de graduao preciso comear atravs dos professores. Estes so os maiores frequentadores de simpsios e conferncias. Assim, caso a maioria desses eventos mostrem a devida importncia da computao paralela, inevitvel que esse conhecimento seja passado para frente em sala de aula.
40
Observando esse efeito pode-se definir que, futuramente, alm dos simpsios e conferncias, sero necessrios eventos de carter competitivo para instigar os alunos a se aprofundarem no paradigma da computao paralela. s vezes, a competitividade encarada como algo negativo, mas quando combinada com temas atuais e inovadores, tendo o intuito de despertar interesses e fomentar pesquisas, uma ferramenta poderosssima. Em longo prazo, pode-se esperar uma grande evoluo de tcnicas e meios de realizao da computao paralela, uma vez que esta ser praticamente uma das bases do ensino em cincia da computao. esperado (mas no previsto) tambm que, com o passar do tempo, haja um vasto material de ensino de computao paralela e, mais adiante, at uma rede online seria passvel de implementao, possibilitando acesso a esse conhecimento a vrios outros grupos e comunidades.
Research Challenges in Computer Science and Engineering Monterey Bay, California, December 4-7, 2005. [2] A. Marowka, Think Parallel: Teaching Parallel Programming Today," IEEE Distributed Systems Online, vol. 9, no. 8, 2008, art. no. 0808-o8002. [3] A. de Carvalho, Grandes Desafios da Pesquisa em Computao no Brasil 2006 a 2016, May 8-9, 2006.
[4] R. Buyya, S. Venugopal, "Cluster and Grid Computing: A Graduate Distributed-Computing Course," IEEE Distributed Systems Online, vol. 8, no. 12, Dec., 2007.
[5] O. Bonorden, B. Juurlink, I. Otte and Ingo Rieping. Parallel Computing, The Paderborn University BSP (PUB) Library, 2003 . 29:187207. [6] C. W. Kessler, Teaching parallel programming early, Proceedings of Workshop on Developing Computer Science Education, March 10, 2006. [7] Eccles, R. and Nonneck, B. and Stacey, D.A. Exploring parallel programming knowledge in the novice, High Performance Computing Systems and Applications, 2005. HPCS 2005. [8] Site. Eclipse Parallel Tools Platform http://www.eclipse.org/proposals/eclipse-ptp/ URL:
5. Concluso
A realizao de eventos do tipo grandes desafios condio necessria, mas no suficiente para que o ensino de computao paralela invada as salas de graduao em tecnologia da informao. preciso que esse novo paradigma seja citado nos mais diversos congressos, simpsios e conferncias. Dessa forma provvel que os professores, at mesmo os mais conservadores, lecionem focando essa nova forma de desenvolver. A partir do momento em que a computao paralela deixar de ser considerada algo extracurricular e passar a ser incorporada no plano de ensino de uma graduao em todos os cursos ligados tecnologia da informao, teremos uma quantidade bem maior de recursos humanos capacitados e motivados a implementar e implantar solues baseadas em computao paralela. Pode-se concluir tambm que, com a realizao da proposta deste artigo e com a subsequente ocorrncia da previso feita no pargrafo acima, vrias empresas tero seus problemas sanados ou pelo menos parcialmente solucionados. A computao paralela pode aumentar o desempenho e a velocidade de vrios sistemas.
[9] A. Rifkin, Teaching parallel programming and software engineering concepts to high school students, Proceedings of the twenty-fifth SIGCSE symposium on Computer science education, Phoenix, Arizona, United States, p.26-30, March 10-12, 1994. [10] Grupo de Discusso. Programao e Arquitetura Paralela URL:http://groups.google.com/group/programacaoarquitetura-paralela [11] Site. NotePad++ http://sourceforge.net/projects/notepad-plus/ URL:
6. Referncias
[1] M. J. Irwin and J. P. Shen, Revitalizing Computer Architecture Research, CRA Conferences on Grand
41