Arquivo de etiquetas: parallel


Programmers with little or no exposure to parallelism have an opportunity to learn about multicore programming at the UPCRC Illinois Summer School to be held July 25-29, 2011 at the University of Illinois at Urbana-Champaign.

The week-long, intensive workshop will provide a solid foundation in the fundamentals of multicore programming, offer hands-on experience with the use of multicore languages and libraries, and introduce emerging research topics. Upon completion, participants will be equipped to choose the best multicore programming model for current and future projects.

Prerequisites for the summer school include solid programming experience (C, C++, C# or Java languages) and a demonstrated interest in applying multicore programming to academic or professional pursuits.

For more information about the summer school, visit the website at http://www.upcrc.illinois.edu/summer/2011/index.html.

 

Cheri Helregel, Outreach Coordinator
UPCRC Illinois
University of Illinois at Urbana-Champaign
Ph: (217) 244-6097
url | www.upcrc.illinois.edu

 

No período de 18 a 22 de setembro ocorreu na Universidade Federal de Goiás (UFG) o minicurso “Programação CUDA”. O minicurso, com carga horária de 10 horas, teve como objetivo possibilitar ao aluno ter conhecimentos gerais sobre programação paralela, e seu uso no contexto de placas aceleradoras usando programação CUDA. O curso ocorreu como parte das atividades do Conpeex (Congresso de Pesquisa, Ensino e Extensão) da UFG, e teve grande procura (102 inscritos), com participação média de cerca de sessenta pessoas, entre alunos da UFG, e de outras instituições, além de profissionais da área.

Ementa do curso:

Introdução à computação paralela e evolução das arquiteturas de computadores. Visão geral da arquitetura CUDA e sua linguagem de programação: gerenciamento de memória, código paralelo (kernel) e sua execução, coordenação de atividades entre CPU e GPU, recursos de desenvolvimento, memória compartilhada e sincronização. Visão geral de técnicas de otimização: a arquitetura CUDA, memória, configuração de execução, instruções. Aplicações usando CUDA e perspectivas futuras.

Sobre os instrutores:

Wellington S. Martins: concluiu o doutorado (PhD) em Ciência da Computação na University of East Anglia (Inglaterra). Obteve o título de Mestre em Sistemas de Computação pela Pontifícia Universidade Católica do Rio de Janeiro. Atualmente é professor no Instituto de Informática da Universidade Federal de Goiás. Suas áreas de interesse incluem: computação paralela e distribuída, análise e projeto de algoritmos, mineração de dados, e biologia computacional.

Divino César S. Lucas é estudante do último período de Ciência da Computação da PUC-GO. Faz pesquisa nas áreas de Programação Paralela, Bioinformática e Metaheurísticas. Competidor da maratona de programação ACM-ICPC.

O material utilizado nas aulas já está disponível no site do curso: http://inf.ufg.br/gpu

A programação paralela utilizando placas gráficas tem se tornando cada vez mais comum. A maioria dos PCs já vem de fábrica equipados com GPUs com 8, 16, 32… 128 núcleos, até mesmo notebooks já possuem dezenas deles.

Para tornar as coisas ainda mais fáceis, o programador não precisa aprender uma linguagem de programação “exotérica” para aproveitar o potêncial destas placas.  Um exemplo destas linguagens é o CUDA utilizado para programar placas da NVIDIA.

Como já mencionei a programação paralela e a “supercomputação” já não é mais restrita a um grupo de pesquisadores ou indústrias e o potêncial destas placas já está sendo utilizado para resolver problemas de diversas áreas…

Um exemplo intrigante de como as placas gráficas estão sendo utilizadas é o que mencionei no título do post. Com a possibilidade de criar centenas, milhares, milhões de threads em uma GPU, torna-se possível explorar até mesmo as alternativas mais simples (em termos de algoritmo) para se quebrar uma senha. E até mesmo as não tão simples…

Para quem se interessar mais sobre o assunto, este link [1] aponta para uma notícia sobre um projeto de um grupo da “Georgia Tech – USA” que atualmente estão empenhados em quebrar senhas “MD5″ e conseguindo resultados interessantes.

Para se ter o “gostinho” do que há por vir:

“Atualmente nos podemos dizer com certeza que uma senha com sete caracteres é inadequada – e a medida que o poder computacional das GPUS continua a aumentar ano após ano, esta ameaça continuará a aumentar.” [1]

“Para fazer um contraste, no ano de 2000 o supercomputador mais rápido, um cluster custanto em torno de $110 milhões, operava próximo a sete teraflops.” — Atualmente uma placa gráfica pode operar próximo a 2 teraflops. [1]

Mas como comentei, até mesmo alternativas simples como criar a permutação de um conjunto de letras e criptografa-la utilizando MD5 (ou outro) e então comparar com a senha original torna-se viável até um certo comprimento de senha.

Espero que tenham achado interessante como eu achei.

Abraço, JT.

[1] http://www.gtri.gatech.edu/casestudy/Teraflop-Troubles-Power-Graphics-Processing-Units-GPUs-Password-Security-System

__global__ olá();

As placas gráficas e os computadores multicore estão se tornando cada vez mais comum, como consequência a busca por cursos/tutorial/* de programação paralela também. A universidade de illinois é conhecida internacionalmente pelo seu “Universal Parallel Computing Research Center” [1], este centro promove anualmente um curso de programação para multicore [2].

Este é o segundo ano que o curso é ministrado durante o verão e neste ano contou com aproximadamente 150 participantes presenciais ou online [3]. Eu tive a oportunidade de ser um destes alunos “virtuais”. Pessoas de diversas partes dos estados unidos e do mundo viajaram para illinois para fazer este curso. O conteúdo do curso não é avançado, o aluno que participa do curso adquire uma boa compreenção dos fundamentos da computação paralela e das diversas tecnologias existestentes. Durante a semana de curso alguns trabalhos práticos são atribuidos e mesmo os alunos “virtuais” podem (devem) faze-los. Você pode se conectar nos servidores do centro de pesquisa ou baixar a imagem de um S.O já com tudo configurado.

Os alunos “virtuais” acompanham as palestras via streaming e teem acesso a praticamente os mesmos recursos que os alunos presenciais, até onde percebi a unica diferenção é o contato direto com os palestrantes. O curso não dá certificado, em conversa por e-mail com o coordenador do curso ele disse que não é possível dar certificado porquê não é possível garantir que o aluno tenha realmente assistido as palestras…

Os temas/palestras que foram abordados este ano juntamente com os palestrantes foram:

Introduction to Parallelism and Multicore Technology – Marc Snir

Parallelism with Java – Danny Dig

Shared Memory Control Parallelism with TBB – Clay Breshears

GPU Programming – Wen-mei Hwu

Taxonomy of Parallel Programming Models- Marc Snir

VS2010: using C++ Concurrency Runtime – Phil Pennington

Esses palestrante são pessoas de renome na área de programação paralela, eles trabalham em empresas como intel, nvidia, AMD, microsoft. Marc Snir foi/é um dos coordenadores do projeto do IBM blue gene.

Por fim, o curso é pago cerca de 70 dólares, mas vale cada centavo investido, fique atento para o próximo ano. Obviamente as palestras são todas em inglês (quem não puder acompanhar ao vivo, pode assistir pelo arquivo no próprio site) e as vagas são limitadas e concorridas.

[]‘s JT.

[1] parallel @ illinois
[2] UPCRC Illinois Summer School on Multicore Programming
[3] Multicore Programming Course has Global Reach

VS2010: using C++ Concurrency Runtime

Excelente material introdutório sobre computação paralela, dá uma visão bem geral do assunto de forma clara e objetiva.

Author: Blaise Barney, Lawrence Livermore National Laboratory

Abstract:
This tutorial covers the very basics of parallel computing, and is intended for someone who is just becoming acquainted with the subject. It begins with a brief overview, including concepts and terminology associated with parallel computing. The topics of parallel memory architectures and programming models are then explored. These topics are followed by a discussion on a number of issues related to designing parallel programs. The tutorial concludes with several examples of how to parallelize simple serial programs.

Level/Prerequisites: None

Link: https://computing.llnl.gov/tutorials/parallel_comp/

See you soon. ;-)

Em outras palavras: porquê o speedup que obtive paralelizando a aplicação não foi proporcional a quantidade de elementos de processamento?

Eu vou estar regularmente traduzindo/adaptando alguns textos que acho interessante compartilhar com o pessoal, o texto que estou postando hoje é relativo a uma dúvida que muitos novatos na área de computação paralela tem, e como eu também sou novato tive que ir atrás de algumas respostas…

Porquê meu código paralelo roda mais lento que o serial?

Isso tipicamente é causado por duas coisas:

1. Custo sequencial. É frequente que parte do algoritmo que foi implementado é por natureza sequêncial, como consequência o código em execução possui partes sequenciais. Neste caso, quanto mais rápido for as partes paralelas do código, mais o efeito da parte sequêncial será percebida, está é a lei de Amdahl.

2. Sobrecargas diversas. Outros custos de performance incluem o processamento gasto em dividir/reunir os dados, agendar as tarefas, sincronização, comunicação.

O primeiro caso pode ser tratado utilizando um algoritmo que tenha uma natureza mais paralela. O segundo caso pode ser em parte atenuado reduzindo a comunicação entre tarefas, atacando o problema de uma forma diferente, etc.

Este post é uma adaptação de um texto deste site: http://blogs.msdn.com/pfxteam/archive/2010/01/05/9944172.aspx

Blog no WordPress.com. | Tema: Motion até volcanic.
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.