palestra hpc python

25
Como aumentar o desempenho de sua aplicação com

Upload: leandro-zanotto

Post on 13-Aug-2015

76 views

Category:

Technology


2 download

TRANSCRIPT

Como aumentar o desempenho de sua aplicação com

2

Agenda

● Apresentação

● Introdução

● HPC e Aplicações

● Python /Compiladores

● Profiler

● Caching

● Multicore – ManyCore

● Threading / Multiprocess

● MPI4Py

● NumPy

● PyCUDA

● Anaconda / NumbaPro

● Perguntas

3

Apresentação

● O que é HPC TOP 500

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)

7

Free Lunch is Over

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/

11

PyPy Performance

● Comparando com CPython

http://speed.pypy.org/

12

Profilers

● Profile e cProfile → APIs para coletar e analizar estatisticamente como o Python consome recursos do processador

13

Profilers (cont.)

● Pstats → Maior flexibilidade para seus próprios relatórios

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

17

Threading

18

Multiprocessing

19

MPI4PY

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.

21

NumPy Exemplo

22

PyCUDA

● Permite acessar as GPUs (Nvidia) através do Python permitindo acelerar o código

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

24

NumbaPro Exemplos

CPU GPU

25

Perguntas