quarta-feira, 24 de abril de 2013

Curso Básico e Avançado de Java é na DevMedia!!!

Aprenda Java com a DevMedia!!!

Para aqueles que desejam aprender sobre Java e ter sucesso nos estudos e na profissão, não perca o excelente material disponível pela DevMedia.
São vídeo-aulas, revistas, cursos do básico ao avançado, artigos e muito mais.

Além do excelente material disponível e didática dos professores/tutores, a DevMedia ainda permite que os sócios postem mensagens sobre o material estudado.

Veja por exemplo o curso Java Developer,
"Nessa formação você contará com um ciclo completo de aulas que lhe deixaram pronto para para o desenvolvimento de aplicações web em java. A mesma possiu desde os conceitos básicos das principais API's, frameworks, etc, até o desenvolvimento de exemplos completos que lhe ajudarão na melhor absorção dos conhecimentos."
Acesse o curso Java Developer da DevMedia


Além do mais você pode se tornar um sócio MVP e ter acesso a materiais de outras tecnologias como Engenharia de Software, Mobile, .Net, entre outras.

 Eu começei assinando a revista Engenharia de Software Magazine e hoje sou MVP. Foi uma das melhores escolhas que fiz para aprender a programar.
 Recomendo!!!

sábado, 25 de agosto de 2012

Sumário e Crítica do Artigo “Roofline: An Insightful Visual Performance Model For Multicore Architectures"


O trabalho de Willians, Waterman e Patterson enfatiza que medir o tráfego entre a memória principal e memória cache é necessário em tempos de computação paralela e multicore. Este tráfego é considerado o principal gargalo na busca por desempenho e otimização quanto do uso de memória.

Com a maior dificuldade de otimizar o trabalho em HPC, os autores propõem um modelo que oferece orientações de desempenho e de fácil entendimento partindo da “análise pelo estrangulamento”, mostrando fatores relacionados ao gargalo de memória. Neste ponto, o trabalho também faz referência a Lei de Amdahl como exemplo de casos relacionados.

O modelo Roofline fornece um limite superior para o desempenho, de forma a auxiliar na identificação de quais sistemas podem ser viáveis para determinadas aplicações ou até mesmo como alterar o código de forma a extrair maior desempenho com relação ao uso da memória.

Entende-se que, os gargalos podem ser reduzidos com a reestruturação dos loops de acesso às unidades de memória, adequando o tamanho das unidades por loop para um tamanho que caiba na memória rápida e que se adeque a banda de acesso da memória lenta. Possivelmente isto aumentaria significativamente a largura de banda de memória.

No trabalho, os autores realizam alguns comparativos entre processadores e arquiteturas, demonstrando o topo em eficiência em cada uma, destacando as peculiaridades quanto ao esforço que pode ser desprendido para que esta eficiência seja otimizada.

Destaca-se que, em virtude da limitação de recursos computacionais, a proposta de adequar os programas à quantidade de memória rápida existente na máquina demostra ser indispensável na busca por melhor desempenho. A proposta deste artigo, somado à definição de limites de acesso a memória, assim como, a menor ociosidade do processador, contribui até hoje com a computação de alto desempenho e menor gasto energético.

Atividade realizada para a disciplina Processamento Paralelo.

Sumário e Crítica do Artigo “Stencil Computation Optimization and Auto-tuning on State-of-the-art Multicore Architectures”.


O artigo parte da necessidade de entender sobre as melhores estratégias para projetar de forma mais eficiente, o uso de sistemas multicore. Os autores focam seu trabalho no multicore stencil e destacam que esta é uma classe de algoritmos que fica no coração de muitos códigos de malha estruturados, inclusive o solver EDP. 

Neste trabalho, são exploradas as mais recentes arquiteturas HPC, apresentando suas principais diferenças e influências na aplicação de algoritmos auto-tuning. Os autores defendem que o design de cada arquitetura permite determinar uma melhor utilização do algoritmo, bem como uma melhor adaptação da arquitetura para problemas específicos. Um outro ponto importante é a obtenção de portabilidade de auto-tuning tanto para arquiteturas atuais, como para prever as tendências do desenvolvimento e garantir portabilidade com futuras arquiteturas. 

Outro ponto importante que é destacado neste trabalho e que entende-se como uma das principais tendências é a preocupação com a eficiência energética. A eficiência da arquitetura em Flop´s juntamente com a redução de watts, demostra uma preocupação com o custo energético envolvido no processamento.

Aqui foram realizados testes em aplicações científicas, resolvendo uma edp em domínio tridimensional, em que comparou-se os desempenhos e peculiaridades de cada arquitetura, aplicando o algoritmo auto-tunning. Os resultados mostraram que para algoritmos com paralelismo adequado, o emprego de um grande número de processadores mais simples, oferece maior potencial de desempenho do que o uso de processadores mais complexos em menor quantidade. Esta vantagem se aplica tanto em velocidade por Flop´s quanto por gasto de energia em Watt, que é menor nos chips mais simplificados.

A proposta de utilização do algoritmo auto-tuning parece retornar ganhos de desempenho consideráveis porém o maior benefício está no consumo energético, o que pode ser observado no uso da arquitetura CUDA. No entanto, a implementação do referido algoritmo é algo aparentemente complexo, visto a variedade de arquitetura de processadores e suas diferentes especificações.

Atividade desenvolvida para a disciplina Processamento Paralelo.

quinta-feira, 5 de abril de 2012

Sumário e Crítica do paper “You Don’t Know Jack About Shared Variables or Memory Models”

Neste artigo, os autores chamam a atenção a respeito da ineficiência das técnicas empregadas atualmente quando do tratamento da competição das threads pelo acesso às variáveis de memória compartilhada e a necessidade de se pensar em novas técnicas que evitem as condições de corrida.

A pesquisa inicia propondo uma discussão acerca de qual o método ou métodos podem ser considerados eficazes e precisos sem que condições de corrida afetem o resultado do programa. Os autores destacam problemas de alguns métodos utilizados como Mutex, Barreiras OpenMP, Threads POSIX e Pthreads, que tentam evitar as condições de corrida, ora com bloqueios ora com a sincronização dos processos, mas sem garantias de bons resultados. Ainda afirmam que, o problema fundamental está justamente no ponto, em que, vários threads tentando acessar “x” ao mesmo tempo sem que um thread se certifique que o trabalho de outro thread terminou.

Na sequência, e sem trazer maiores detalhes sobre o assunto, os autores destacam o conceito de Consistência Sequencial que na visão dos mesmos, é “fundamental na compreensão do comportamento das variáveis compartilhadas”. Na execução Sequencialmente Consistente, “Um programa Multi-thread é executado, intercalando passos de cada segmento do código. Logicamente, o computador executa um passo de um segmento, então escolhe outro segmento, executa o passo seguinte e assim por diante”.

Boehm e Adve mencionam que, o modelo de programação básica é escrever o código de tal forma que as condições de corrida se tornem impossíveis, pressupondo que a aplicação segue as regras de consistência sequencial. Neste trecho é inserido método que chamam de variáveis de sincronização, que a princípio, permitem que threads não escrevam na mesma variável.

Apesar de não darem garantias de que as Condições de Corrida jamais ocorrerão, os autores sugerem que, quando se escreve um programa, não há necessidade de se pensar explicitamente sobre o compilador ou hardware (ordenação de memória); mas, ao invés disso, pode-se raciocinar em termos de Consistência Sequencial, contanto que se sigam as regras para evitar as condições de corrida. Tornando mais claro, para tentar garantir uma execução livre, qualquer seção do código que não contém as operações de sincronização se comporta como se executado atomicamente (isto é, de uma só vez) sem ser afetado por outros segmentos e sem outra thread ser capaz de ver qualquer valor da variável que ocorre no meio da seção do código.

Os autores ainda enfatizam que o emprego de variáveis de sincronização é difícil de usar para estruturas de dados complexas uma vez que, não há nenhuma maneira fácil de fazer várias atualizações para uma estrutura de dados em uma operação atômica. Além do mais, estas variáveis não substituem os semáforos.

Atividade realizada durante as aulas de Processamento Paralelo

sábado, 10 de março de 2012

A Lei de Amdahl na era Multicore

Diante do esgotamento da capacidade de escalonamento dos processadores superescalares, a computação se encontra em um ponto de inflexão quando se trata de multicores e paralelismo. Por um lado, fornecedores de computação anunciam máquinas com cada vez mais núcleos de processamento e por outro, projetistas de multicore focando seu trabalho apenas no núcleo de processamento e desconsiderando outros elementos presentes no chip como um todo.

O ponto de partida para algumas possíveis soluções partem da limitação de paralelização relacionada à Lei de Ambdahl. Considerando que, um chip multicore é formado por n elementos, chamados de BCE (Base Core Equivalent) e que correspondem ao hardware necessário para criar um core básico, a ideia é poder agrupar os vários recursos associados aos vários BCEs alcançando-se com isso, um único core que apresente uma melhor performance no processamento sequencial.

A este agrupamento, sugere-se que para aumentarmos a eficiência (perf) precisamos quadruplicar o rendimento (r) de programas sequenciais. Considerando que programas não são infinitamente compostos por porções paralelas, ou seja, sempre haverá uma porção sequencial, especificamos algumas alternativas para o melhor rendimento do processamento:

  • Executar a parte sequencial mais rapidamente (1-f);

  • Aumentar a granularidade de paralelismo (s);

  • Aumentar os trechos paralelizáveis do código.

Para proporcionar este ganho apontam-se três modelos de chips multicores a partir do agrupamento dos BCEs: chips multicore simétricos (mais comumente encontrados), chips multicore assimétricos e chips multicore dinâmicos. Percebe-se na abordagem Assimétrica e Dinâmica de múltiplos núcleos o oferecimento de melhores características de desempenho do que a abordagem simétrica, uma vez que pode lidar com a porção paralela e porção sequencial de um programa porém, na dinâmica ainda existe a barreira da dificuldade de implementação.

A aplicação também se mostra relevante quando trata-se sobre Computação na Nuvem (cloud computing). A computação na nuvem faz uso do fator f da lei de Ambdahl que pode praticamente chegar a zero, uma vez que, os pedidos possam ser manipulados de forma independente por cada máquina remota.

Considerando trabalhos futuros e não tomando a proposta como absoluta e completa, tendo o mundo real como algo muito mais complexo, permanecem alguns modelos (subsídios) que visam estimular a discussão sobre o tema, e possivelmente provocar estudos e melhorias nos modelos propostos. Um destes subsídios é o entendimento de que os projetistas de hardware não devem se limitar a adicionar mais recursos arbitrariamente como única forma de alcançar o alto desempenho, e sim mudar a maneira de dividir a porção paralela do software.

As pesquisas apontam para a inevitável continuidade do crescimento multicore e provoca os pesquisadores sobre o assunto no sentido de estes desenvolverem melhores modelos, preferencialmente voltados à multicores dinâmicos, tanto para o hardware quanto para o software de modo que se possa alcançar Speedups potenciais.

Fonte: Atividade realizada como parte da avaliação da disciplina Processamento Paralelo - Semana 1 (2012-1)

quinta-feira, 10 de março de 2011

MSP-BR - Avaliação Positiva















Contratada pela SOFTEX e realizada pelo Grupo de Engenharia de Software Experimental da COPPE/UFRJ, uma pesquisa com 156 empresas que adotaram o modelo MPS entre 2008 e 2010 mostrou que as organizações que já contam com avaliação MPS conseguem lidar com projetos maiores, têm mais precisão nas estimativas de prazo e se mostram mais produtivas em relação às que estão começando a implementá-lo. Essa melhoria é sentida também pelos clientes. Além de mostrar que 92% das empresas que adotaram o modelo se disseram total ou parcialmente satisfetias com o MPS, a pesquisa constatou que as empreas já avaliadas também apresentaram um nível maior de satisfação de seus clientes.

Fonte: Computação Brasil
Revista da Sociedade Brasileira de Computação
Outubro/Novembro/Dezembro 2010

quarta-feira, 16 de fevereiro de 2011

O Alfabeto - Carrossel da Fantasia


Achei bem interessante este vídeo de alfabetização, ele prende a atenção da criança pela canção e também através das imagens. Muito útil para quem precisa ajudar os filhos com os deveres de casa...
O português é o de Portugal mas por alguns pequenos detalhes quase não se percebe..Com o devido acompanhamento que todos os pais devem fazer essas pequenas correções não comprometem o vídeo..recomendo.

Curso Básico e Avançado de Java é na DevMedia!!!

Aprenda Java com a DevMedia!!! Para aqueles que desejam aprender sobre Java e ter sucesso nos estudos e na profissão, não perca o excelen...