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 é 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 deve resolver até 3 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.
A fase de inscrição acontecerá durante sessão de Aquecimento (Warmup). Mas, caso já tenha sua equipe, utilize o formulário para inscrição.
A linguagem alvo será C/C++ com as ferramentas de programação paralela: MPI, OpenMP e CUDA; com as seguintes ferramentas:
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:
O Desafio de Programação Paralela é aberta a times compostos de até três (3) estudantes, de graduação ou pós-graduação.
O ambiente utilizado durante o desafio será testado durante o Warmup.
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.
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.
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, o Makefile e um script bash de execução. O script deve ser nomeado com o nome do problema com letras maiúsculas (ex. A). Pode-se submeter diversas soluções.
O sistema pode ser acessado em: http://lspd.mackenzie.br/boca/
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.