Evento Pai: Programa de Verão 2019
Escola Supercomputador SDumont
Programação -
E-mail: verao@lncc.br
Tipo de evento: Jornada
MINICURSOS
-------------------------------------------
A escola Supercomputador SDUMONT tem como objetivo a formação de recursos humanos na área de "Computação de Alto Desempenho". Ela tem como foco os usuários do Supercomputador SDumont, porém é aberta à todos os programadores interessados em adquirir conhecimento básico em programação em Computação de Alto Desempenho.
Ela tem como foco fornecer aos usuários do supercomputador SDumont o conhecimento básico para executar os seus respectivos programas de forma mais eficiente nos recursos computacionais do SDUmont. Serão ministrados minicursos sobre a utilização de modelos de programação paralela e sobre as ferramentas de perfilagem, que ajudam na identificação dos "gargalos" do código que necessitam ser otimizados. A escola irá oferecer também minicursos introdutórios em programação em computação de alto desempenho entre os dias 13 e 15 de fevereiro.
"A CAPES considera importante a participação de estudantes de pós-graduação na Escola Santos Dumont e recursos do PROAP e PROEX, repassados aos PPGs poderão, à critérios das Instituições, ser usados para apoiar esta inciativa".
-------------------------------
Os minicursos da Escola podem ser relacionados conforme abaixo, porém, é importante ressaltar que cabe ao usuário a escolha dos minicursos.
1) Módulo Introdutório sobre a programação no SDUMONT:
MC01-SD – Introdução ao ambiente SDUMONT /SLURM (Roberto Souto/Andre Carneiro/Bruno Fagundes/LNCC) e Ferramentas BULLX-DE: Este minicurso apresenta uma visão geral do ambiente computacional do supercomputador Santos Dumont, mostrando os principais aspectos com relação aos recursos de hardware e de software disponíveis aos usuários.
MC03-SD – Introdução a E/S Paralela no SDUMONT (Andre Carneiro/Bruno Fagundes/LNCC): Este minicurso apresenta as ferramentas disponíveis no Santos Dumont para o usuário utilizar os recursos de Entrada e Saída de Dados de Alto desempenho do Santos Dumont. Será apresentado a ferramenta DARSHAN e uma introdução biblioteca MPI I/O, que possibilita a utilização do sistema de E/S de dados paralelo do SDumont.
2) Módulo sobre programação em placas Aceleradoras GPU:
MC05-SD – Introdução à Programação CUDA ( Roberto Souto/LNCC): Este minicurso apresenta a arquitetura das GPUs (“Graphics Processing Unit”), que foi projetada para efetuar os cálculos em ponto flutuante mais frequentemente realizados em aplicações gráficas. Esta é uma arquitetura bem mais especializada que a presente em CPUs (“Central processing unit”) , o que faz com que estes programas rodem mais rapidamente nestas plataformas. No MC05 será apresentada a arquitetura de placas gráficas NVIDIA e a conexão destas placas com o computador hospedeiro. Em seguida será apresentado a plataforma de programação CUDA, que é uma extensão do C/C++ processada tanto no computador hospedeiro quanto nas placas gráficas conectadas a este.
MC04-SD - Introdução ao OpenCL (Amanda Sabatini/LNCC): Embora tenham princípios em comum, os aceleradores compreendem diferentes arquiteturas computacionais, exigindo-se para o fim de portabilidade de código a programação heterogênea. É nesse contexto que surge a linguagem de programação massivamente paralela denominada OpenCL, contração de Open Computing Language. A OpenCL é uma linguagem de padrão aberto baseada em C/C++, orientada à eficiência e flexibilidade, para programação uniforme e portável de sistemas heterogêneos, isto é, compostos por qualquer combinação de processadores convencionais e dispositivos aceleradores.
MC07-SD – Introdução á Programação em Aceleradores com Diretivas Pedro Pais Lopes/Exaflop): A programação para utilizar o grande poder de processamento das GPU´s envolve linguagens especializadas, o que demanda profunda modificação do programa e possivelmente redução da sua portabilidade. Padrões de programação baseadas em diretivas, amplamente utilizadas para expor paralelismo em arquitetura de memória central, surgiram ou foram expandidos para permitir expor o paralelismo destes processadores massivamente paralelos. Neste minicurso serão tratados os padrões existentes (OpenACC e OpenMP v4.5), suas principais diretivas, compiladores com suporte a estes padrões e desempenho obtido em aplicações simples em algumas arquiteturas (GPU, CPU multicore e Xeon Phi).
3) Módulo sobre Programação em HPC com Linguagens de Alto Nível :
MC13-SD - Python para HPC (Guilherme Gall/ Luiz Gadelha/LNCC): Python é uma linguagem de programação de alto nível para programação de propósito geral lançada ao público em 1991. Possui construções que permitem a criação de programas de pequena à grande escala e possui uma filosofia de design que prioriza principalmente a legibilidade de código. É cada vez mais usada em computação científica e numérica.
MC14-SD - R para HPC (Raquel Costa e Guilherme Gall/LNCC): O R é uma linguagem bastante utilizada por cientistas de dados, estatísticos, biológos, epidemiologistas e funciona muito bem em muitas pesquisas, gerando resultados de qualidade em relatórios e artigos científicos. A flexibilidade e facilidade de programar avançando nas análises a partir de funções e pacotes disponíveis são vantagens decisivas na escolha dessa linguagem por pesquisadores. Ao longo dos anos, diversas iniciativas tem sido feitas para melhorar a eficiência e desempenho das aplicações em R. Esse curso tem como proposta apresentar algumas dessas estratégias de paralelismo e melhora na eficiência para ganho de escalabilidade na linguagem R.
4) Módulo sobre Modelo de Programação com Troca de Mensagens no SDumont:
MC02-SD – Introdução à Programação MPI (Carla Osthoff/LNCC ): O objetivo deste minicurso é ensinar aos programadores que não estão familiarizados com programação paralela as noções básicas para desenvolver e executar programas paralelos de acordo com as normas do padrão MPI. Para isto iremos apresentar durante o curso apenas as rotinas básicas para se trabalhar com o padrão MPI, que é um padrão que vem sendo largamente utilizado para o desenvolvimento de programas paralelos em arquitetura de sistemas distribuídos, tais como clusters e Supercomputadores.
MC09-SD -Introdução a Programação MPI com Extensões para E/S (MPI-IO) (Jean Luca Bez- UFRGS):Na Computação de Alto Desempenho (High-Performance Computing), as operações de entrada e saída (I/O) são um gargalo para um número crescente de aplicações, podendo comprometer a escalabilidade. Em ambientes de larga escala, como clusters e supercomputadores, o uso de bibliotecas de alto-nível como MPI-IO permite obter melhor desempenho através de I/O paralelo e de operações coletivas. Estas possibilitam o uso transparente de técnicas de otimização como data sieving e two-phase I/O. Nesse contexto, este minicurso objetiva introduzir conceitos de I/O paralelo e MPI-IO, com um enfoque prático, de forma que os participantes aprendam a utilizar a biblioteca em suas aplicações
5) Módulo sobre Modelo de Programação para Processadores Multicore:
MC06-SD – Introdução á Programação com OpenMP (Carla Osthoff/LNCC): Este minicurso apresenta uma introdução aos conceitos de processamento paralelo e de programação paralela, em relação padrão de programação em memória compartilhada OpenMP, utilizado em ambientes que possuem vários núcleos de processamento compartilhando o mesmo recurso de memória, tais como os processadores multicore. O padrão OpenMP é constituído por um conjunto de diretivas de compilador, rotinas de biblioteca, e variáveis de ambiente que influenciam o comportamento do tempo de execução. Definido em conjunto por um grupo principal de fornecedores de hardware e de software, o OpenMP é um modelo de programação portável e escalável que proporciona aos programadores uma interface simples e flexível para o desenvolvimento de aplicações paralelas.
MC08-SD - Introdução à programação com Xeon (Matheus Serpa - UFRGS): O minicurso objetiva propiciar um maior entendimento sobre os paradigmas de programação paralela e vetorial, de forma que os participantes aprendam a otimizar adequadamente suas aplicações para arquiteturas modernas. Como plataforma de desenvolvimento, serão utilizados os processadores Intel Xeon e Intel Xeon Phi do SDumont.
MC12-SD – Introdução à Parallel Studio (Frederico Cabral/LNCC): Visão geral do Intel Parallel Studio XE e como está configurado no SDumont, apresentando as melhores práticas na utilização do perfilador e uma visão geral sobre ferramentas para perfilagem. O conjunto de desenvolvimento de software paralelo Intel Parallel Studio XE possibilita simplificar o desenvolvimento, depuração e ajuste de código, ajudando a utilizar o processamento paralelo para aumentar o desempenho do aplicativo.
6) Módulo Introdutório sobre Programação com Deep Learning em HPC:
MC10-SD - Introdução à Deep Learning (NVIDIA)
MC11-SD - Introdução à utilização de Containers para Deep Learning (NVIDIA)
-----------------------------------------
Minicursos Introdutórios sobre programação em HPC entre os dias 13/02 e 15/02:
MC01-ISD--Introdução ao Linux para Processamento de Alto Desempenho (Mariano Silva/Micaella Coelho/Mateus Mello): O minicurso apresentara os sistemas *nix especialmente o Linux. O foco será o uso da linha de comando já que normalmente os supercomputadores só permitem o acesso por linha de comando e o uso de vários nós para programas em modo batch.
MC02-ISD – C para Programação Paralela (Mariano Silva/LNCC): C é uma da das linguagens de programação mais importantes, senão a mais importante. Com este curso pretendemos iniciar o aluno no paradigma da programação paralela na linguagem C. Será mostrado o básico da linguagem e como usá-la em conjunto com MPI (Message Passing Interface).
MC03-ISD – Fortran para Programação Paralela (Mariano Silva/LNCC): O Fortran tem sido usado por mais de 50 anos para aplicações científicas e há uma grande quantidade de código escrito em Fortran. É uma linguagem de programação muito usada para supercomputação em diversas áreas tais como: astronomia, modelagem numérica de tempo e clima, modelagem hidrológica, dinâmica de fluidos. O curso mostrará os elementos básicos da linguagem Fortran e exemplos de paralelismo com co-array e MPI.
--------------------------------------------
Data Início: 18/02/2019
Data Fim: 22/02/2019
Data Início: 18/02/2019
Data Fim: 22/02/2019
Coordenadores
Carla Osthoff Ferreira de Barros - Laboratório Nacional de Computação Científica - osthoff@lncc.br
Roberto Pinto Souto - Laboratório Nacional de Computação Científica - rp.souto@gmail.com
Luiz M. R. Gadelha Jr. - Laboratório Nacional de Computação Científica - lgadelha@lncc.br
Instituições Envolvidas:
Laboratório Nacional de Computação Científica - LNCC / Brasil
Universidade Federal do Rio Grande do Sul
Local: Laboratório Nacional de Computação Científica
Endereço: Av. Getúlio Vargas, 333
Contato
Roberta Machado - LNCC - mroberta@lncc.br
Telefone: 24 22336150
Apoio Financeiro:
ATOS