palestra hpc python
TRANSCRIPT
2
Agenda
● Apresentação
● Introdução
● HPC e Aplicações
● Python /Compiladores
● Profiler
● Caching
● Multicore – ManyCore
● Threading / Multiprocess
● MPI4Py
● NumPy
● PyCUDA
● Anaconda / NumbaPro
● Perguntas
4
CEPID CCES
● Center for Computational Engineering & Sciences● Desenvolvimento e Aplicação de Técnicas de
modelagem computacionais avançadas● Interação com a Indústria● Promover a Educação e Difusão de Conhecimento
5
CCES – Aplicações
● Data Cyberstructure● High-Performance and Data-Intensive Computing● Quantum and Classical Molecular Simulations in
Biophisical Chemistry / Applied Physics● Computational Quantum Chemistry● Computational Mechanical Engineering● Bioinformatics and Computational Biology● Computational Geophysics
6
Moore's Law
O número de transistores em um denso circuito integrado tem dobrado aproximadamente a cada dois anos
Gordon E. Moore (1965)
8
Python
● Linguagem de programação de alto nível ● Interpretada● Imperativa● Orientada a objetos● Funcional● De tipagem dinâmica e forte● Portável
9
Desempenho
● O Python não é lento● Os interpretadores Python existentes são lentos● Cpython por exemplo
10
Melhorando o Desempenho
● Solução → outros Interpretadores● PyPy – Jython – IronPython● Exemplo PyPy → http://pypy.org/
12
Profilers
● Profile e cProfile → APIs para coletar e analizar estatisticamente como o Python consome recursos do processador
14
Profilers(cont.)
● VMProf
É simples python -m vmprof● Parecido com Intel Vtune ● Captura informações sobre seu código sobre
pequenas execuções podendo ser configurado dentro da API.
● Trabalha em cima da C Stack
15
Caching
● Arrays devem ter acesso sequencial● Evitar saltos como listas se possível● Utilize bibliotecas que são otimizadas
while i < n
x += array[i]
i += 1
16
Multicore ManyCore
● Multicore –> Processadores com Poucos Núcleos
ManyCores → Centenas de Núcleos
Ex. GPUs
20
NumPy
● Potente N-dimensional objeto de array● Funções de Broadcast● Ferramentas para itegrar C/C++ e Fortran● Várias funções matemáticas prontas acelerando o processamento e
desenvolvimento
NumPy é um pacote fundamental para computação científica com Python.
23
Anaconda / NumbaPro
● Anaconda é um pacote free para Python para procesamento em larga escala, análise de dados e computação científica
● NumbaPro é um versão do Numba que auxilia os desenvolvedores a acelerar suas aplicações