PDF de programación - Python en Supercomputación

Imágen de pdf Python en Supercomputación

Python en Supercomputacióngráfica de visualizaciones

Publicado el 6 de Junio del 2021
532 visualizaciones desde el 6 de Junio del 2021
513,5 KB
30 paginas
Creado hace 15a (03/08/2008)
Python en Supercomputación

Charla introductoria

Guillem Borrell i Nogueras

ETSIA, Octubre 2007

Preguntas...

I ¾Por qué se llama Python?
I ¾Quién usa Python?
I ¾Para qué sirve Python?

I Principales características de Python

I ¾Por qué Python se está volviendo tan popular?
I ¾Por qué Python y no otro lenguaje?
I ¾Qué puede ofrecer Python al HPC?

I Inconvenientes de Python

I Ejemplos

¾Por qué se llama Python?

Python debe su nombre a...

Monty Python

¾Quién usa Python?

¾Para qué sirve Python?

Prácticamente para cualquier cosa que se nos pueda ocurrir

Desde páginas web...

Plone, Zope

...A utilidades para bioinformática

Pymol

Principales características de Python

I Software Libre (Licencia estilo BSD)
I Interpretado
I Interactivo
I Multiparadigma

I Procedimental
I Modular
I Orientado a Objetos

I Multiplataforma
I Especicación especialmente corta (IronPython, Jython, PyPy,

Stackless)

I Incluye las pilas
I ...

¾Por qué Python se está volviendo tan popular

I Fácil de aprender
I Fácil de ampliar
I Consistente por diseño
I Impone un buen estilo de programación
I Soporta todas las prácticas propuestas por XP, Agile.

Porque es divertido

¾Por qué Python y no otro lenguaje?

I Fácilmente extensible

I CPython, escrito en ANSI C
I Duck Typing (VS. Java y C++)
I Software Libre
I Excelente documentación

¾Qué pinta tiene código escrito en Python?

Todo es un objeto

guillem@aiguaviva ~ $ python
Python 2.4.4 (#1, Sep 25 2007, 21:44:53)
[GCC 4.1.2 (Gentoo 4.1.2)] on linux2
Type "help", "copyright", "credits" or "license" ...
>>> import cmath
>>> i=cmath.sqrt(-1) #Los namespaces son objetos
>>> i.conjugate() #Los números son objetos
-1j
>>> i.imag
1.0
>>> i.real
0.0
>>> i+=3
>>> i
(3+1j)

Denir funciones es muy fácil

return numero+1

>>> def sumauno(numero):
...
...
>>> sumauno(i)
(4+1j)

I No hay llaves ni ends, los niveles se denen por el sangrado.

Documentación a la Matlab

"""Esta es una función documentada, a diferencia
de Matlab la documentación de las funciones de
Python es extraíble y formateable"""
pass

>>> def docfunc():
...
...
...
...
...
>>> help(docfunc)
Help on function docfunc in module __main__:

docfunc()

Esta es una función documentada, a diferencia de
Matlab la documentación de las funciones de Python
es extraíble y formateable

Una clase llamada pato

>>> class pato:

def reproducete(self):

cantidad += 1

cantidad = 1
def haz_cua(self):
print "cua!"

...
...
...
...
...
...
...
>>> estoesunpato=pato() #instancia de pato
>>> estoesunpato.cantidad
1
>>> estoesunpato.haz_cua()
cua!

Duck Typing

Si algo anda como un pato y hace cua como un pato para mi va a
ser un pato.

def haz_cua(self):

>>> estoesunpato=pato() #instancia de pato
>>> cuaqueador(estoesunpato)
cua!
>>> class guillem:
...
...
...
>>> falsopato=guillem() #ese soy yo
>>> cuaqueador(falsopato)
cua!
>>> isinstance(falsopato,pato)
False

print "cua!"

Para la función cuaqueador yo soy tan pato como un pato.

Y mucho más...

¾Qué puede ofrecer Python al HPC?

Python es lento, ∼ 10×C; Python pretende completar C y Fortran,
no sustituirlos.

Sirve para...

Manejar la Complejidad

Wrappers, Interfaces, Prototipado, Scripting...

Inconvenientes de Python (para HPC)

I Diseño Single Thread (GIL)!
I Implementación limpia vs. optimizada
I Librería estándar escrita en python (20 %-30 % C)
I Versatilidad vs. potencia.
I No hay una implementación propia de Arrays y Buers
I Es interpretado (¾?)

Soluciones a los inconvenientes

I Inlining (Weave)
I Extending (ctypes)
I Paralelo (PyMPI, ctypes, ParallelPython)
I PyPy
I Stackless
I Numpy, Scipy...

Numpy

Es una extensión de Python que soporta arrays n-dimensionales

Es una maravilla, verdad verdadera. Lástima que no se pueda
demostrar en una transparencia

Una pequeña introducción

>>> import numpy as N
>>> x=N.array([[1,2,3,2],[2,3,4,3],

[2,3,4,3],[3,2,3,4]],'d')

>>> N.fft.rfft2(x)
array([[ 44.+0.j,
[ -4.+0.j,
[ -4.+0.j,
[ -4.+0.j,
>>> x.transpose()
array([[ 1.,

-6.+2.j,
-2.+2.j,
-2.-2.j,
2.-2.j,

0.+0.j],
0.+0.j],
0.+0.j],
0.+0.j]])

2., 2.,
[ 2., 3., 3.,
[ 3., 4., 4.,
[ 2., 3., 3.,

3.],
2.],
3.],
4.]])

¾Cuál es la idea entonces?

Introducir Python en HPC ⇔ Crear una aplicación multilenguaje.

rendimiento

Python + Fortran,C

Fortran, C

Python

Matlab

complejidad

¾Qué se gana añadiendo Python a C, Fortran?

I Namespaces
I Abstracción (Modularidad, OO)
I Añadir interactividad
I Autodocumentación
I Crear cajas negras

I Si no tengo que saberlo no me lo cuentes
I Si no tengo que verlo no me lo enseñes
I Si algo funciona bien, recíclalo

¾Cómo se añade Python a C y Fortran?

Haciendo Wrappers

C, Fortran Wrapper

Python

Objetivo: crear un Matlab c muy personalizado.

I Ventajas

I Añaden interactividad, potencia, versatilidad...
I No hay que repetirlos

I Inconvenientes

I Más decisiones de diseño
I Requieren más esfuerzo

¾Por qué Python?

Porque en muchos casos:

I Los wrappers ya estarán hechos (lapack, blas, tpack, mpi)
I Hacerlos requerirá un esfuerzo mínimo

Gracias a:

I ctypes
I f2py (Fortran)
I SWIG (C, C++)
I weave
I ...

Continuará...

Charla técnica

I Python Vs. Matlab.
I Más sobre los wrappers.
I Arrays en C, Fortran y Python.
I GIL.
I Uso de F2Py.
I ctypes.
I Python en paralelo.
  • Links de descarga
http://lwp-l.com/pdf19275

Comentarios de: Python en Supercomputación (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad