Informações Gerais

O principal propósito desse desafio é fomentar o conhecimento em programação paralela e distribuída em um torneio de alto nível. Seus alvos são as respostas corretas e o ganho de desempenho. Alunos de graduação e pós-graduação de Ciêcia da Computação, Engenharia da Computação, Sistemas de Informação e cursos correlatos são convidados a participar desta Maratona.

Cada equipe será composta por até 3 (três) estudantes e um treinador (opcional). Sua duração está definida na grade de programação da ERAD-SP, durante a qual a equipe deverá resolver 2 problemas. As equipes não podem fazer acesso a qualquer tipo de material online sobre os problemas do desafio, mas podem consultar qualquer material impresso (livros, manuais, anotações, artigos). Também não é permitido consultar outras pessoas ou competidores, além dos membros da sua própria equipe.

No início da competição, os times recebem a descrição dos problemas e sua solução sequencial (serial). As resoluções não só devem ter as respostas iguais, mas também apresentar desempenho (speedup) em suas versões paralelas (ou distribuídas), medidas de acordo com critérios definidos pelo comitê da competição atual.

Registro da equipe

A fase de inscrição acontecerá durante sessão de Aquecimento (Warmup). Mas caso já tenha sua equipe utilize esse formulário para inscrição.

Ambiente Computacional

A linguagem alvo será C/C++ com as ferramentas de programação paralela: MPI, OpenMP e CUDA; com as seguintes ferramentas:

O ambiente utilizado durante o desafio será testado durante o Warmup.

Como se preparar

Primeiramente, participe ativamente dos Minicursos oferecidos pela ERAD-SP. Nestes, vocês estarão estudante a aplicando conhecimentos básicos que serão fundamentais para o Desafio.

Caso tenha mais interesse, veja também o site da Maratona de Programação Paralela que acontece junto ao SBAC-PAD. Procure sobre as edições passadas e links para materiais online.

Segue também uma lista parcial de fontes de estudo:

Regras

Times

O Desafio de Programação Paralela é aberta a times compostos de até três (3) estudantes, de graduação ou pós-graduação.

Problemas

Um comitê irá especificar um conjunto de problemas. Cada problema consiste na descrição informal do que precisa ser resolvido, formatos de entrada e saída, e implementação sequencial.

Linguagem e Ferramentas

Ferramentas clássicas de HPC (OpenMP, MPI, POSIX Threads, CUDA) estarão disponíveis aos competidores na máquina alvo. Outras ferramentas estarão disponíveis de acordo com a disponibilidade de plataforma.

Importante: o alvo principal da competição é o Speedup, e qualquer técnica será permitida a fim de melhorar o desempenho.

Submissão

Os times terão acesso a um sistema online de submissão, uma versão modificada do BOCA. Submissões, esclarecimentos, problemas ou qualquer outro problema durante a competição deve ser reportadas através do sistema.

Os Juízes irão inspecionar as submissões e qualquer submissão injusta ou fraudulenta desclassificará o time. Da mesma forma, qualquer código suspeito, malicioso, ou plagiado desclassifica o time.

Uma submissão é um arquivo compacto com o código-fonte e um Makefile script. O script deve conter um target nomeado run que quando selecionado deve executar a aplicação. O comando de execução no target run deve redirecionar stdin e stdout como feito na versão sequencial fornecida no início da maratona . Pode-se submeter diversas soluções.

O sistema pode ser acessado em: http://boca.lsc.ic.unicamp.br

Pontuação

A submissão será considerada se a saída for correta, ou seja, igual a saída do programa sequencial.

O speedup de cada submissão será medido da seguinte forma: o tempo de execução de uma solução será dividido pelo tempo de execução sequencial medido pela organização. A solução será medida três vezes e o tempo médio será empregado no cálculo do speedup. Qualquer otimização da parte sequencial será um bônus. O speedup de todos os problemas solucionados por um time será somado ao placar. Somente a última submissão válida será considerada.

Comitê

Msc. João Paulo Labegalini de Carvalho