PPaarraalllleellPPyytthhoonn
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -2-
SISTEMAS OPERATIVOS AVANZADOS
Tema: ParallelPython
Alum...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -3-
Introducción a Python
¿Qué es Python?
Python es un leng...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -4-
Python también permite la programación imperativa, prog...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -5-
La primera línea nos indica la versión de Python que te...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -6-
Podemos escribir el código de un programa en un archivo...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -7-
Indentaciones
Python usa el retorno de carro para separ...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -8-
Python + PHP
Python + PostgreSQL
Python + MySQL
Punto “...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -9-
Implementaciones de Python
Python posee diversas implem...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -10-
Python y sus librerías
El intérprete de Python y su ex...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -11-
Parallel Python
¿Qué es Parallel Python?
Parallel Pyth...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -12-
¿Qué es un clúster?
Clúster es un grupo de múltiples o...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -13-
¿Qué es Parallel Knoppix?
Es una distribución Linux Li...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -14-
El entorno LAM/MPI debe ser levantado o buteado antes ...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -15-
Aquí hacemos clic en la carpeta “Examples”. Se visuali...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -16-
Luego hacemos clic en la carpeta “parallelpython”.
Lo ...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -17-
Como se puede ver, el prompt (knoppix@1[parallelpython...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -18-
Ahora supongamos que tenemos un cluster compuesto del ...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -19-
Utilizando todos los nodos del cluster, la operación t...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -20-
Referencias
Paginas Web visitadas
• Sitio oficial de P...
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -21-
INDICE
Página Contenido
3 Introducción a Python - ¿Qué...
Próxima SlideShare
Cargando en…5
×

Parallel python sistemas operativos avanzados

216 visualizaciones

Publicado el

Sistemas operativos avanzados

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
216
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
5
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Parallel python sistemas operativos avanzados

  1. 1. PPaarraalllleellPPyytthhoonn
  2. 2. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -2- SISTEMAS OPERATIVOS AVANZADOS Tema: ParallelPython Alumnos: • Muccela, José Daniel Legajo: 20196 Profesor: • Ing. Ricardo Adra Facultad Regional Tucumán Universidad Tecnológica Nacional ParallelPython ParallelKnoppix
  3. 3. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -3- Introducción a Python ¿Qué es Python? Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible. Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos. Tipado dinámico La característica de tipado dinámico se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinará en tiempo de ejecución según el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro tipo. Fuertemente tipado No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explícita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un número (sumar la cadena “9” y el número 8). En otros lenguajes el tipo de la variable cambiaría para adaptarse al comportamiento esperado, aunque esto es más propenso a errores. Multiplataforma El intérprete de Python está disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos librerías específicas de cada plataforma nuestro programa podrá correr en todos estos sistemas sin grandes cambios. Orientado a objetos La orientación a objetos es un paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se trasladan a clases y objetos en nuestro programa. La ejecución del Programa consiste en una serie de interacciones entre los objetos.
  4. 4. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -4- Python también permite la programación imperativa, programación funcional y Programación orientada a aspectos. ¿Por Qué Python? Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido. La sintaxis de Python es tan sencilla y cercana al lenguaje natural que los programas elaborados en Python parecen pseudocódigo. Por este motivo se trata además de uno de los mejores lenguajes para comenzar a programar. Python no es adecuado sin embargo para la programación de bajo nivel o para aplicaciones en las que el rendimiento sea crítico. Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los programas disponibles. Instalación de Python Python viene preinstalado por defecto en la mayoría las distribuciones de Linux y en las últimas versiones de Mac OS, y está disponible como un paquete en todos los otros. Sin embargo hay ciertos rasgos que quisiéramos usar los cuales no están disponibles en el paquete de su distribución. Usted puede compilar la última versión de Python fácilmente desde su sitio Web. http://www.python.org/ En caso de que Python no este preinstalado y tampoco esté en los repositorios, usted puede conseguir los paquetes fácilmente para su propia distribución. Para comprobar si está instalado tiene que abrir una terminal y escribir python. Si está instalado se iniciará la consola interactiva de Python y obtendremos algo parecido a lo siguiente: Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>>
  5. 5. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -5- La primera línea nos indica la versión de Python que tenemos instalada. Al final podemos ver el prompt (>>>) que nos indica que el intérprete está esperando código del usuario. Podemos salir escribiendo exit(), o pulsando Control + D. Si no te muestra algo parecido no te preocupes, instalar Python es muy sencillo. Puedes descargar la versión correspondiente a tu sistema operativo desde la web de Python, en http://www.python.org/download/. Existen instaladores para Windows y Mac OS. Si utilizas Linux es muy probable que puedas instalarlo usando la herramienta de gestión de paquetes de tu distribución, aunque también podemos descargar la aplicación compilada desde la web de Python. Nota: Los ejemplos mostrados en este trabajo se realizaron utilizando la distribución Ubuntu de Linux. Dicha distribución se ejecutó usando una máquina virtual (en nuestro caso: VMware Workstation). Forma de Programar con Python Existen dos formas de ejecutar código Python: Podemos escribir líneas de código en el intérprete y obtener una respuesta del intérprete para cada línea (sesión interactiva). Al escribir una línea de código y presionar Enter, el interprete de Python toma la línea y la evalúa. Escribimos nuestro código y luego presionamos enterResultado de ejecutar el código
  6. 6. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -6- Podemos escribir el código de un programa en un archivo de texto y ejecutarlo desde el Terminal de Linux. Pros y Contras de Python Ventajas Desarrollo más rápido: Puedes escribir un programa, salvarlo y ejecutarlo. En un lenguaje compilado tienes que pasar por los pasos de compilar y ligar el software, lo cual puede ser un proceso lento. Multiplataforma: El mismo código funciona en cualquier arquitectura, la única condición es que disponga del intérprete del lenguaje. No es necesario compilar el código una vez para cada arquitectura. Inconvenientes Lentitud: Los programas interpretados son más lentos que los compilados. Sin embargo los programas interpretados suelen ser cortos, en los que la diferencia es inapreciable. Llamamos al interprete Python y especificamos el programa a ejecutar y luego presionamos enter
  7. 7. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -7- Indentaciones Python usa el retorno de carro para separar sentencias y los dos puntos y el sangrado para separar bloques de código. C++ y Java usan el punto y coma ( ; ) para separar sentencias y las llaves ( { } ) para separar bloques de código. Python usa la indentación para iniciar y finalizar sentencias. Python y otros lenguajes Python puede trabajar en conjunto con una variedad de lenguajes y motores de base de datos, entre los que se pueden mencionar: Lamp (conjunto de aplicaciones compuesto por Linux+MySQL+Apache+Php ó Perl ó Python ó Ruby)
  8. 8. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -8- Python + PHP Python + PostgreSQL Python + MySQL Punto “py” (.py) Hay un convenio por el que los ficheros que contienen programas Python tienen extensión py en su nombre. La extensión de un nombre de fichero son los caracteres del mismo que suceden al (último) punto. Un fichero llamado ejemplo.py tiene extensión py. La idea de las extensiones viene de antiguo y es un mero convenio. Puedes prescindir de el, pero no es conveniente. En entornos gráficos (como KDE, Gnome o Microsoft Windows) la extensión se utiliza para determinar qué icono va asociado al fichero y qué aplicación debe arrancarse para abrir el fichero al hacer clic (o doble clic) en el mismo.
  9. 9. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -9- Implementaciones de Python Python posee diversas implementaciones: CPython es la implementación original, disponible para varias plataformas en el sitio oficial de Python. IronPython es una implementación del intérprete Python (cPython) escrita totalmente en C#. El proyecto trata de seguir al pie de la letra el lenguaje Python, como implementación de Python que es. Esto hace que cualquier programa escrito en Python pueda ser interpretado con IronPython, con las ventajas añadidas de poder usar las bibliotecas de la plataforma .NET y poder compilar el código a bytecode Stackless Python es la variante de CPython que trata de no usar el stack de C (www.stackless.com) Jython (Python en Java) es un lenguaje de programación de alto nivel, dinámico y orientado a objetos basado en Python e implementado en Java (100%), su antecesor fue JPython, Jython al igual que Python es un proyecto de código libre. El lenguaje de programación Jython funciona prácticamente igual que el lenguaje Python, en su versión 2.2. Pippy es la implementación realizada para Palm (pippy.sourceforge.net) PyPy es Python totalmente escrito en Python (codespeak.net/pypy) El proyecto PyPy pretende producir una versión optimizada y más rápida de Python. De acuerdo a lo que se ha señalado en algunas listas de correo, una consecuencia de este proyecto es que se minimizarán las diferencias entre diferentes implementaciones como python, jython e ironpython, por ejemplo, y que será más sencillo usar python en sistemas empotrados como móviles y PDAs. Sistema de objetos En Python, todo es un objeto (incluso las clases). Las clases, al ser objetos, son instancias de una metaclase. Python además soporta herencia múltiple y polimorfismo y demás características de la orientación a objetos.
  10. 10. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -10- Python y sus librerías El intérprete de Python y su extensa biblioteca estándar están disponibles libremente, en forma de fuentes o ejecutables, para las plataformas más importantes, en la sede web de Python, http://www.python.org, y se pueden distribuir libremente. La misma sede contiene también distribuciones y direcciones de muchos módulos, programas y herramientas Python de terceras partes, además de documentación adicional. Python permite dividir un programa en módulos reutilizables desde otros programas en Python. Viene con una gran colección de módulos estándar que puedes utilizar como base de nuestros programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, ‘sockets’ y hasta interfaces gráficas con el usuario, como Tk. Python y sus módulos numerical python msilib pygtk pkgutil pyqt pybench tkinter socket wxpython spwd email tarfile doctest zipfile mailbox zlib codecs collections cProfile ……… Ejemplo: Usando el editor y ejecutando desde Terminal:
  11. 11. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -11- Parallel Python ¿Qué es Parallel Python? Parallel Python es un módulo de Python que proporciona el mecanismo para la ejecución en paralelo de código Python en SMP (sistemas con múltiples procesadores) y Clusters (ordenadores conectados vía red), es ligero, fácil para la instalación y tiene la posibilidad de integrarse con otro software creado en Python. Hoy en día el software escrito en Python encuentra una amplia gama de categorías incluyendo los negocios, el análisis de datos y cálculos científicos. Esto junto con la amplia disponibilidad de ordenadores SMP y de Clusters en el mercado crea la demanda para la ejecución paralela de código Python. Características 1. Ejecución paralela de Python en SMP (Sistema de MultiProcesamiento) y Clusters. 2. Fácil de entender y poner en práctica la técnica. 3. Detección automática de la configuración óptima. 4. Asignación de procesos dinámicos (el número de procesos trabajando puede ser cambiado en el tiempo de ejecución). 5. Equilibrio de carga dinámico. 6. Autentificación basada en SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro; es un conjunto de funciones hash diseñado por la Agencia de Seguridad Nacional de los Estados Unidos) para conexiones de red. 7. Fácil portabilidad para Windows, Linux, Unix. 8. Open source (código abierto).
  12. 12. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -12- ¿Qué es un clúster? Clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. De un cluster se espera que presente combinaciones de los siguientes servicios: • Alto rendimiento (High Performance) • Alta disponibilidad (High Availability) • Equilibrio de carga (Load Balancing) • Escalabilidad (Scalability) La construcción de los ordenadores del cluster es más fácil y económica debido a su flexibilidad: pueden tener todos la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semi-homogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo). Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento. Los nodos que conforman un cluster pueden ser simples ordenadores, sistemas multi-procesador o estaciones de trabajo (Workstations). Cabe aclarar que a la hora de diseñar un Cluster, los nodos deben tener características similares, es decir, deben guardar cierta similitud de arquitectura y sistemas operativos, ya que si se conforma un Cluster con Nodos totalmente heterogéneos (existe una diferencia grande entre capacidad de procesadores, memoria, HD) será ineficiente debido a que el middleware (El middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas.) delegara o asignara todos los procesos al Nodo de mayor capacidad de Cómputo y solo distribuirá cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores los más similares posible. Parallel Knoppix Logo de Parallel Kanoppix
  13. 13. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -13- ¿Qué es Parallel Knoppix? Es una distribución Linux LiveCD basada en Knoppix, basada a su vez en Debian, que viene preparada para armar un clúster de forma rápida y sin tantos detalles de configuración. ParallelKnoppix es una manera rápida y fácil de crear un cluster de computación de alto rendimiento. Está diseñado para ser fácil de usar, siendo también adecuado para trabajos profesionales. De hecho, se puede lograr un trabajo más serio realizado con ParallelKnoppix usando todas sus alternativas, simplemente porque se gana más tiempo libre en el uso del cluster, en lugar de tener que instalarlo y administrarlo. ParallelKnoppix solía basarse en la distribución Knoppix, por lo que ParallelKnoppix nunca habría sido posible sin Knoppix como punto de partida. ParallelKnoppix + Python ParallelKnoppix facilita la programación en Python ya que tiene incorporadas la mayoría de las librerías necesarias para ejecutar los programas escritos en este lenguaje. En este trabajo se muestran ejemplos de cómo ejecutar un programa escrito en Python de manera muy sencilla. La idea que se persigue es facilitar al desarrollador las tareas relacionadas a las configuraciones del sistema operativo y sus aplicaciones para volcar todo el esfuerzo en la creación de las líneas de código. Para poder ejecutar nuestros programas de python en ParallelKnoppix es necesaria una configuración previa. Esta configuración está orientada a preparar el cluster o SMP para visualizar las virtudes de la programación en paralelo. Esto es, configurar la cantidad de host disponibles para trabajar con el programa que deseamos ejecutar. Supongamos un sencillo programa; una Suma de números primos. Al ejecutar el mismo usando un cluster, los resultados se obtienen en una menor tiempo que ejecutando el programa en un solo host. Ejemplos Para ejecutar código Python en paralelo dentro de nuestro cluster, lo primero es tener instalado Python y Parallel Python en el host principal y en todos los nodos computacionales de nuestro cluster. Hecho esto, y con nuestro cluster LAM/MPI "lambooted" ejecutaremos ppserver.py en todos los nodos computacionales. Esto se puede hacer de forma sencilla desde el frontend. LAM (Local Area Multicomputer) es un ambiente de programación de MPI (interfaz de paso de mensajes) y un sistema de desarrollo para las computadoras heterogéneas en una red. Con LAM/MPI, un dedicado conjunto de computadoras o una infraestructura de cómputo en red , puede actuar como un simple recurso de cómputo en paralelo.
  14. 14. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -14- El entorno LAM/MPI debe ser levantado o buteado antes de que cualquier cliente o aplicación MPI puede correr. LAM usa un demonio sobre cada nodo para control de procesos, control de meta entorno, y en algunos casos, paso de mensajes. "Butear LAM" se refiere al acto de lanzar ese demonio sobre cada nodo. El comando lamboot es el usado para este fin. En los ejemplos que se muestran a continuación se explican los pasos que se siguieron para conseguir los resultados. Desde la apertura del sistema operativo dentro de la máquina virtual hasta la ejecución del programa en python. Ejecutando ParallelKnoppix Primeramente vamos a ejecutar ParallelKanoppix dentro de la máquina virtual. La imagen siguiente muestra la acción. Una vez cargado el sistema vamos al menú de opciones, generalmente ubicado de manera oculta en el sector inferior de la pantalla. A continuación se abrirá el explorador Konqueror mostrando el directorio “Home”. Clic aquí
  15. 15. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -15- Aquí hacemos clic en la carpeta “Examples”. Se visualizarán las carpetas que contiene. A continuación hacemos clic en la carpeta “Python”.
  16. 16. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -16- Luego hacemos clic en la carpeta “parallelpython”. Lo que se puede ver son archivos de ejemplo para python, especialmente creados para parallelpython. Ahora vamos a abrir una Terminal (Konsole) en este mismo directorio como se puede ver en la siguiente imagen.
  17. 17. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -17- Como se puede ver, el prompt (knoppix@1[parallelpython]$) está listo para que ejecutemos alguna acción relacionada con este directorio (/home/knoppix/Examples/Python/parallelpython/). Entonces escribimos el nombre del ejemplo antecediendo la palabra (comando) python. • Ejemplo 1: Suma de números primos Empezaremos con la suma de números primos hasta 100700 (sum_primes.py), lo ejecutaremos usando solo el host principal (un Pentium 3). Para procesar lo solicitado por el programa el host necesitará casi 59 segundos para ejecutar todo el proceso. Veamos el resultado de la ejecución del programa. Usage: python sum_primes.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Sum of primes below 100 is 1060 Sum of primes below 100000 is 454396537 Sum of primes below 100100 is 454996777 Sum of primes below 100200 is 455898156 Sum of primes below 100300 is 456700218 Sum of primes below 100400 is 457603451 Sum of primes below 100500 is 458407033 Sum of primes below 100600 is 459412387 Sum of primes below 100700 is 460217613 Time elapsed: 58.4337880611 s Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 9 | 100.00 | 51.1004 | 5.677823 | local Time elapsed since server creation 58.4621379375
  18. 18. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -18- Ahora supongamos que tenemos un cluster compuesto del host principal más cuatro nodos computacionales (estos nodos son Pentium 2); ahora le costará algo menos de 19 segundos ejecutar el proceso, como se muestra a continuación: Usage: python sum_primes.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Sum of primes below 100 is 1060 Sum of primes below 100000 is 454396537 Sum of primes below 100100 is 454996777 Sum of primes below 100200 is 455898156 Sum of primes below 100300 is 456700218 Sum of primes below 100400 is 457603451 Sum of primes below 100500 is 458407033 Sum of primes below 100600 is 459412387 Sum of primes below 100700 is 460217613 Time elapsed: 18.7660019398 s Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 2 | 22.22 | 18.3807 | 9.190361 | 10.11.12.2:60000 2 | 22.22 | 18.5409 | 9.270460 | 10.11.12.4:60000 1 | 11.11 | 9.1975 | 9.197520 | 10.11.12.5:60000 3 | 33.33 | 14.6504 | 4.883458 | local 1 | 11.11 | 9.2648 | 9.264778 | 10.11.12.3:60000 Time elapsed since server creation 18.7660019398 • Ejemplo 2: Callbacks Este programa demuestra el cómputo paralelo usando callbacks. El programa calculará la suma parcial 1-1/2+1/3-1/4+1/5-1/6+... (En el límite es ln(2)). Esto le costará al host principal unos 283 segundos: Usage: python callback.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Partial sum is 0.69314720556 | diff = -2.50000439239e-08 Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 128 | 100.00 | 283.1016 | 2.211731 | local Time elapsed since server creation 283.22504282
  19. 19. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -19- Utilizando todos los nodos del cluster, la operación tardará uno 15 segundos en hacer el cálculo. Usage: python callback.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Partial sum is 0.69314720556 | diff = -2.50000439239e-08 Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 26 | 20.31 | 14.5316 | 0.558909 | 10.11.12.2:60000 27 | 21.09 | 15.0113 | 0.555973 | 10.11.12.4:60000 26 | 20.31 | 14.5897 | 0.561143 | 10.11.12.5:60000 23 | 17.97 | 14.2961 | 0.621569 | local 26 | 20.31 | 14.5336 | 0.558986 | 10.11.12.3:60000 Time elapsed since server creation 15.4670109749 Nota: En el CD adjunto se encuentran los archivos de ejemplo en formato de texto (*.txt) y los archivos en formato python (*.py).
  20. 20. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -20- Referencias Paginas Web visitadas • Sitio oficial de Python. Información. http://www.python.org/ Este sitio contiene toda la información disponible sobre el lenguaje, incluidos los manuales oficiales y por supuesto las versiones disponibles del programa según la plataforma donde se desee utilizar, listos para descargar. • Sitio con información sobre LAMP. http://www.noticiasdot.com/publicaciones/2004/0504/1105/noticias110504/noti cias110504-6.htm • Sitio para Principiantes http://www.blueportal.org/modules.php?name=News&file=article&sid=5843 Se trata de un link a un libro empieza por lo más básico de la programación en sí y después pasa a explicar la sintaxis de Python con montones de ejemplos. Es el libro idóneo para aquel que no sabe programar ningún lenguaje y quiere empezar con Python. El programador experto necesitará ojearlo por encima e ir mirando los ejemplos para ir viendo como se estructura y cuál es la sintaxis de Python. • Sitio desde donde se descargó la distribución ParallelKanoppix-2.9. http://pareto.uab.es/mcreel/PelicanHPC/download/ • Sitio con Información acerca de ParallelKnoppix http://www.icewalkers.com/Linux/Software/527410/ParallelKnoppix.html • Sitio oficial de ParallelPython. Información y ejemplos. http://www.parallelpython.com/ Documentación Consultada • Python - Reference manual (2004). En inglés. Por Guido van Rossum Fred L. Drake, Jr. Descargado del sitio oficial de Python. http://www.python.org/ • Manual Python. En español. Descargado del sitio oficial de Python. http://www.python.org/ • Python para todos. Por Raúl González Duque http://mundogeek.net/tutorial-python/ • ParallelKnoppix Tutorial http://pareto.uab.es/mcreel/ParallelKnoppix/Tutorial/
  21. 21. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -21- INDICE Página Contenido 3 Introducción a Python - ¿Qué es Python? 3 Tipado dinámico 3 Fuertemente tipado 3 Multiplataforma 3 Orientado a objetos 4 ¿Por Qué Python? 4 Instalación de Python 5 Forma de Programar con Python 6 Pros y Contras de Python 7 Indentaciones 7 Python y otros lenguajes 8 Punto “py” (.py) 9 Implementaciones de Python 9 Sistema de objetos 10 Python y sus librerías 10 Python y sus módulos 10 Ejemplo de programa en Python 11 Parallel Python - ¿Qué es Parallel Python? 11 Características de ParallelPython 12 ¿Qué es un clúster? 12 Parallel Knoppix 13 ¿Qué es Parallel Knoppix? 13 ParallelKnoppix + Python 13 Ejemplos - pasos previos 14 Ejecutando ParallelKnoppix 17 Ejemplo 1: Suma de números primos 18 Ejemplo 2: Callbacks 20 Referencias 21 Indice

×