Maratona de Programação Paralela

Esta será a primeira edição da Maratona de Programação Paralela da ERAD/RS.

O principal propósito dessa competição é 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 3 (três) estudantes. A duração da maratona será de aproximadamente 4 horas para resolver até 5 problemas. As equipes podem trazer qualquer tipo de material impresso (livros, manuais, anotações, artigos). Não será permitido consulta em materiais externos durante a maratona.

No começo da competição, as equipes 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.

Programação Preliminar

  • Realização do Warmup: 4 de Abril, 2017, 15:00 BRST (2:00 de duração)
  • Realização da maratona: 5 de Abril, 2017, 8:30 BRST (4:00 de duração)
  • Divulgação de resultados: 6 de Abril, 2017, 17:00 BRST (encerramento da ERAD/RS)

Registre sua Equipe

Use o formulário online para registrar sua equipe. Somente alunos inscritos no evento poderão participar da maratona.

Limite de equipes: máximo de 13 equipes por ordem de registro.

Ambiente Computacional

Os computadores utilizados serão:

  • 1x nó Intel Xeon Phi (KNL)
    • Intel Xeon Phi CPU 7250, 1.4 GHz, 68 cores, 272 threads
    • 96GB DDR4
    • Intel C/C++ Compiler 64 18.0.1 build 20171018
    • Ubuntu Linux 16.04.4 LTS
  • 3x nós Intel Xeon (hype)
    • Intel Xeon CPU E5-2650 v3, 2.30 GHz, 2x 10 cores, 2x 20 threads
    • 128 GB DDR4
    • GCC 7.2.0
    • Ubuntu Linux 16.04.3 LTS
  • 1x nó Intel Xeon com GPUs (blaise)
    • Intel Xeon CPU E5-2699 v4 2.20GHz, 2x 22 cores, 2x 44 threads
    • 252 GB DDR4
    • GCC 5.4.0
    • Ubuntu Linux 16.04.4 LTS
    • 4x GPUs NVIDIA P100: 3584 CUDA cores, CUDA 9.0, 16 GB

Máquina de testes:

  • 1x nó Intel Xeon
    • Intel Xeon CPU E5-2650 v3, 2.30 GHz, 2x 10 cores, 2x 20 threads
    • 128 GB DDR4
    • GCC 7.2.0
    • Ubuntu Linux 16.04.3 LTS
    • 2x nós com 2x Tesla K80 cada: 2496 CUDA cores, CUDA 9.0, 12GB

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

Como Estudar

A principal fonte de estudo é o site da Maratona de Programação Paralela que acontece junto ao SBAC-PAD. Procure sobre as edições passadas e links para materias online.

Abaixo segue uma lista parcial de fontes de estudo:

Regras

Equipes

A Maratona é aberta a Equipes compostos de até três (3) estudantes, de graduação ou pós-graduação.

Um membro substituto pode ser indicado, e uma substituição é permitida até o início da Maratona. Cada Equipe terá um PC e acesso a máquina paralela para testar e medir suas soluções. O ambiente será testado durante o Warmup. Consulta a qualquer tipo de material impresso é permitido, e esses são de responsabilidade das Equipes.

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) 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

As Equipes 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á a Equipe. Não obstante, qualquer código suspeito, malicioso, ou plagiado desclassifica a Equipe.

Uma submissão é um arquivo compacto com o código fonte, o Makefile e um script 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.

Pontuação

A submissão será considerada se a saída é correta, semelhante 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 uma Equipe será somado ao score. Somente a última submissão será considerada.

Comitê da Maratona

O comitê é composto por:

  • João Vicente Ferreira Lima, UFSM, BR (Organizador Geral)
  • Guilherme Piegas Koslovski, UDESC Joinville, BR (Juiz)
  • Claudio Schepke, UNIPAMPA Campus Alegrete, BR (Juiz)
  • Stefano Drimon Kurz Mór, TRT4, BR (Juiz)
  • Matheus Serpa, UFRGS, BR (Organizador local)
  • Vinícius Garcia Pinto, UFRGS, BR (Organizador local)

O comitê agradece especialmente ao Prof. Dr. Calebe de Paula Bianchini (Mackenzie/Brasil) pelo software e auxílio técnico indispensável à realização desta maratona.