Introducción a la Computación Clase 1 Patricia Borensztejn 1er cuatrimestre 2011 Las computadoras y el avance de la civilización Las computadoras y el avance de la civilización • El avance tecnológico de las computadoras han llevado a la civilización a la revolución tecnológica o revolución de la información, comparable en magnitud a la revolución industrial de los siglo XVIII y XIX. • Las computadoras nos van cambiando la vida… Las computadoras y el avance de la civilización • Si la industria del transporte hubiera avanzado tecnológicamente tanto como la industria de la computación… hoy se podría viajar de costa a costa de EEUU por unos pocos centavos de dólar… es decir, esto hubiera cambiado el mundo de tal manera, que uno podría, por ejemplo… • Vivir en Tahiti, trabajar en San Francisco, y a la noche ir a Moscú a ver el ballet del Bolshoi. • Esta es una de las maneras de enunciar la ley de Moore que veremos enseguida Como nos van cambiando la vida… • La multiplicación de la potencia intelectual del género humano no solo ha afectado nuestras vidas sino que ha cambiado la forma en la cual la búsqueda de nuevo conocimiento se realiza. • Hay un nuevo tipo de investigación científica, donde se unen científicos de computación con científicos de las ramas teóricas y experimentales de las ciencias, explorando juntos las fronteras de la astronomía, biología, química y física. Como nos va cambiando la vida… • Cada vez que el costo de la computación mejora en un factor de 10, se multiplican las oportunidades para las computadoras, y, aplicaciones que eran económicamente inalcanzables se vuelven realidad… • En el pasado reciente, las siguientes aplicaciones eran pensadas como ciencia ficción: Como nos van cambiando la vida… Las computadoras y el avance de la civilización • Vamos a decir algo: todo esto es muy discutible – Que si la civilización ha avanzado respecto a algún punto de referencia , y en ese caso, cual es ese punto… – Que si avance significa mejoramiento (de las condiciones de vida) – Que si la tecnología tiene un valor moral, o de lo contrario no lo tiene. Es decir, si es buena o mala o quizás todo lo contrario… Las computadoras y el avance de la civilización • Nosotros, justamente nosotros y nosotras, por pertenecer a la ciencias y en particular a las ciencias llamadas duras, debemos pensar en esas cosas…. • Así que yo dejo abierto el debate: • ¿La tecnología es buena, es mala o todo lo contrario? • Y esta es la primer tarea que haremos, un panel sobre el valor de la tecnología en el avance de la civilización… Debate: ¿La tecnología es buena, es mala o todo lo contrario? • Tendrá lugar el próximo martes, a las 14hrs, tendrá una duración máxima de una hora. (y mínima, de 5 minutos, si nadie tiene nada que decir al respecto) • Servirá para conocernos un poco… antes de ponernos a estudiar esta tecnología increíble que es la Computación… y que a todos ustedes les sirve en sus respectivas especialidades, y que a todos nos ha cambiado la vida… • Me gustaría que no solo digan lo que intuitivamente piensan sobre el tema, sino que …investiguen un poco la temática. Volvamos al principio Volvamos al principio • ¿En que estaría pensando Whitehead cuando formuló esa idea? • ¿Quizás en aquel cuento de Asimov, llamado Sensación de Poder? Un cuento donde los humanos ya no saben sumar, ni multiplicar, ni dividir, ni nada de esas operaciones, porque todas ellas las hacen las computadoras… y un día aparece un técnico, llamado Aub…, y con un lápiz y un papel…. calcula. The feeling of power, 1958 –Nada de eso, general –dijo Aub, sudoroso–. Sólo parece complicado porque usted no está acostumbrado a hacerlo. En realidad, las reglas son muy sencillas, y se aplican a cualquier número. –A cualquier número, ¿eh? –dijo el general–. Vamos a ver. –Sacó su propia computadora (un severo modelo militar) y la accionó al azar–. Escriba cinco siete tres ocho en el papel. O sea cinco mil setecientos treinta y ocho. –Sí, señor –dijo Aub, tomando una nueva hoja de papel. –Ahora –prosiguió el general, tras accionar nuevamente la computadora– siete dos tres nueve. Siete mil doscientos treinta y nueve. –Ya está, señor. –Y ahora multiplique esos dos números. –Requerirá mucho tiempo –tartamudeó Aub. –No tenemos prisa –repuso el general. –Adelante, Aub –le ordenó Shuman con voz tensa. Aub puso manos a la obra, muy encorvado. Tomó una hoja de papel y luego otra. El general terminó por sacar su reloj para consultarlo. –¿Ha terminado ya sus operaciones mágicas? –Casi, general... Mire, ya está. Cuarenta y un millones, quinientos treinta y siete mil, trescientos ochenta y dos. Exhibió las cifras escritas en la hoja de papel. El general Weider sonrió irónicamente. Oprimió el botón de multiplicar de su computadora y esperó a que se formase el resultado. Luego lo miró estupefacto y dijo con voz aguda y entrecortada: –¡Gran Galaxia, este individuo ha acertado! Si quieren seguir leyendo el cuento… • Está subido en la página de la materia… • Cerrando esta sección literaria podemos decir o pensar que la civilización avanza «creando» nuevas tecnologías que permiten al ser humano «no pensar» en ciertas operaciones (matemáticas o no) • Por ejemplo, es indudable que tener una cocina a gas o eléctrica en casa, hace que no tengamos que pensar en como encender el fuego para hacer la comida. Volvamos al principio • Centrándonos en las operaciones matemáticas de Whitehead, la tecnología que nos permite no pensar en ellas son las máquinas que computan. Llamadas computadoras. • Y ahora podemos preguntarnos: – ¿Porqué son rápidas las computadoras? – ¿En que se mide la velocidad? – ¿Mas rápido es mejor? La velocidad de las computadoras • ¿Porqué son rápidas las computadoras? • ¿En que se mide la velocidad? • ¿Mas rápido es mejor? Comparando máquinas con hombres 1946: El primer ordenador electrónico!! Se llamaba ENIAC (Electronic Numerical Integrator And Calculator), y fue subvencionado por el ejército de EEUU. Se usó para calcular tablas de balística para artillería. Medía: 24,4 m de largo, 2,6 de alto y de ancho unos 90 cm y era capaz de realizar 1600 sumas por segundo Y ¿cual es la velocidad de pensamiento del hombre? • La primera pregunta que hay que hacerse es….que es la velocidad de pensamiento? • Y antes que ésta….que es el pensamiento? • Una posible respuesta: Si podemos pensar es porque hay unos impulsos que pasan de célula nerviosa a célula nerviosa. Cualquier acción que dependa del sistema nervioso depende de esos impulsos. Podriamos entender que la "velocidad del pensamiento" es la: "velocidad del impulso nervioso", porque si no hubiera impulso nervioso , no hay respuesta (quemarse, y retirar la mano) • Obviamente hay otro tipo de pensamiento que no actúa sobre el sistema nervioso. Por ejemplo, cuando imaginamos que estamos en la Luna….esa velocidad puede ser cualquiera, incluso infinita….inmedible Y cual es la velocidad de pensamiento del hombre? • Pero quedémonos con la velocidad medible, la velocidad del impulso nervioso. • En el año 1846, el gran fisiólogo alemán Johannes Müller decidió, en un rapto de pesimismo, que la velocidad del impulso nervioso jamás podría medirse. Seis años más tarde, en 1852, consiguió medirlo uno de sus mejores discípulos, Hermann von Helmholtz, trabajando con un músculo todavía inervado. • Y que midió: que la velocidad del impulso nervioso es de 1/25 de segundo! Desde que recibimos la entrada (me quemo) , hasta que obtenemos un resultado (quitamos la mano) , pasa un veinticincoavo de segundo. • Ahora bien….¿y para que me sirve esto? ¿Para que me sirve saber que en el año 1946 se construyó la primera computadora que era capaz de realizar una suma 100 veces (redondeemos) más rápido que el hombre? • (en rigor, el hombre hace 25 «operaciones» por segundo, y la máquina ENIAC hacía 1600 operaciones por segundo 64 veces más rápido Como aumenta la velocidad en las máquinas …..y como se mantiene constante en el hombre…. • Asi es, ….desde que Hermann von Helmholtz la midió….nosotros seguimos igual….(creo…) • Sin embargo, desde la primera Eniac, hasta las potentes computadoras de hoy, la velocidad se incrementó en varios, varios, órdenes de magnitud! • Por citar a una famosa computadora, Deep Blue, que en 1997 le ganó al campeón mundial de ajedrez, Gary Kasparov, ésta era capaz de ejecutar 11.38 GigaFlops! O sea, 11 mil trescientos ochenta millones de operaciones por segundo (contra las 1600 operaciones de ENIAC) Deep Blue, ASCI Purple • Sin embargo, Deep Blue no parece un buen ejemplo, pues estamos comparando una pera con mil manzanas…. • Efectivamente, Deep Blue es una computadora formada por 30 computadoras (30 Power PC), mas otros 500 chips dedicados para resolver el problema del juego del ajedrez…. • Deep Blue es una Supercomputadora, y no justamente la más rápida que existe hoy. Hay otras….por ejemplo la conocida con el nombre de ASCI purple, que llega a velocidades tan extraordinarias como 100 Teraflops! (100*1012) Velocidad de cómputo del hombre. Flops del hombre • Los humanos somos aún peores procesadores de punto flotante. No podemos hacerlas sin pensar… • Si a una persona le toma un cuarto de hora realizar una división larga (a papel y lápiz) con diez dígitos significativos, dicha persona estaría computando en el rango de mili FLOPS (15 minutos por 60 = 900 segundos para UNA operación de CF) . • Es importante tomar en cuenta que esta prueba puramente matemática puede no representar la capacidad real del cerebro humano. Se estima que el poder de cómputo requerido para procesar olores, sabores, tacto, visión y coordinación motora es del orden de 10 PFLOPS. Computadoras y Supercomputadoras • Eniac es considerada la primera computadora (1946) • Stretch, realizada por IBM en 1961, es considerada la primera Supercomputadora, con un rendimiento de 150 mil FLOPS por segundo. Supercomputadoras • Stretch, realizada por IBM en 1961, es la primera supercomputadora. Promete multiplicar por 100 el rendimiento de la computadora más rápida hasta ese momento. Consigue hacer 150 mil operaciones de CF por segundo. Computadoras: ¡la nuestra! • Clementina fue nuestra primera computadora. • La introdujo el matemático Manuel Sadosky en 1959, entró en funcionamiento en 1961. • Costó 152.099 libras esterlinas y medía 18 metros • Construida por una firma inglesa (Ferranti Mercury) Supercomputadora: Clementina 2 Se instaló en abril del año 2000. Tiene 40 procesadores y 10 GB de memoria… (le perdí la pista, no sé donde está ahora) Noviembre 2010: Top 500 • http://www.top500.org/ • And the winner is…. – The Chinese Tianhe-1A system at the National Supercomputer Center in Tianjin, achieving a performance level of 2.57 petaflop/s (quadrillions of calculations per second). • El segundo lugar lo ocupa – the Cray XT5 “Jaguar” system at the U.S. Department of Energy’s (DOE) Oak Ridge Leadership Computing Facility in Tennessee . Jaguar achieved 1.75 petaflop/s running Linpack, the TOP500 benchmark application. Características Rank Site Computer /Year Cores Vendor 1 National Supercom puting Center in Tianjin China Tianhe-1A 2010 NUDT 186368 2566.00 4701.00 4040.00 2 DOE/SC/O ak Ridge National Laborator y United States Jaguar Cray XT5HE Opteron 2009 Cray Inc. 224162 1759.00 2331.00 6950.60 Rmax Rpeak Power ¿Como se mide el rendimiento? • Rmax - Maximal LINPACK performance achieved • Rpeak - Theoretical LINPACK peak performance • Measures in TeraFlops. • Enseguida veremos mas cosas sobre el rendimiento… pero la idea es : ¿con que programas se miden los flops? En este caso se usó LINPACK una librería de funciones que seguro conocen los matemáticos… Megas, Gigas, Teras, Petas, y Exa • Mega: – 1.000.000 106 un millón • Giga: – 1.000.000.000 109 mil millones • Tera: – 1.000.000.000.000 1012 millón de millones • Peta: – 1.000.000.000.000.000 1015 mil millones de millones • Exa: – 1.000.000.000.000.000.000 1018 millón de millones de millones Number Crunching: Peak Performance • 1993: Numerical Wind Tunnel (National Aerospace Laboratory of Japan) 140 cores; 235.79 gigaflops • 1996: CP-PACS/2048 (Center for Computational Science, University of Tsukuba, Japan) 2048 cores; 614 gigaflops • 1997: ASCI Red (Sandia National Laboratories, United States) 9152 cores; 1830.4 gigaflops • 1999: ASCI Red (Sandia National Laboratories, United States) 9632 cores; 3207 gigaflops • 2000: ASCI White (Sandia National Laboratories, United States)8192 cores; 12 288 gigaflops Number Crunching 2002: Earth-Simulator (Japan Agency for Marine-Earth Science and Technology) 5120 cores; 40 960 gigaflops 2004: BlueGene/L (U.S. Dept. of Energy/Oak Ridge National Laboratory) 131 072 cores; 367 000 gigaflops 2005: BlueGene/L (U.S. Dept. of Energy/Oak Ridge National Laboratory) 32 768 cores; 91 750 gigaflops 2007:BlueGene/L (U.S. Dept. of Energy/Oak Ridge National Laboratory) 212 992 cores;596 378 gigaflops 2008: Roadrunner (U.S. Dept. of Energy/National Nuclear Security Administration/Los Alamos National Laboratory) 129 600 cores; 1 456 704 gigaflops 2009: Jaguar (U.S. Dept. of Energy/Oak Ridge National Laboratory) 224 162 cores;2 331 000 gigaflops 2010: Tianhe-1ª (National Supercomputing Center, Tianhe, China) 186 368 cores; 4 701 000 gigaflops Rendimiento en Gigaflops 235,79 614 1830,4 3207 12288 40960 91750 367000 596378 1456704 2331000 4701000 TERA PETA 1997 2008 Aplicaciones del Supercómputo • • • • • Genoma Humano Simulación de la evolución de las galaxias Simulación de corrientes marinas Previsiones Meteorológicas Simulaciones de moléculas en 3-D ¿Ahora vienen los Exaflops? • Spectrum: The Tops in Flops (febrero, 2011) • Una supercomputadora consume entre 4 y 6 megawatts, algo así como el consumo de electricidad de 5000 hogares • El mayor problema hoy para alcanzar los exaflops es el consumo. Se calcula que para 10 Teraflops se necesitan 15 MW. Escalando, para 1 Exaflop se necesitará 1,5 Gigawatts, es decir, en la puerta de al lado de donde alojemos semejante supercomputadora, debiera haber una usina nuclear …. (esto lo escribí antes del 11 de marzo, hoy no lo volvería a escribir) Consumo • Un circuito computacional requiere 70 picojoules por cada operación, y se trata de bajar ese consumo (aparentemente eso se podría hacer en las siguiente décadas, quedando en 5 o 10 pj) • Pero… además de la operación en si misma, lo que mas consume energía es mover los datos, de un chip a otro, de una placa a otra, de un rack a otro… • La cosa está difícil pero… seguro que se llegará… Lo absurdo del caso es que… • ¿Ustedes se imaginan que en una supercomputadora con cientos de miles de nodos (o procesadores) todos estos trabajan a la vez ? • No. • No es así. • No hay NINGUNA aplicación que logre sacar el rendimiento máximo, o de pico, a un sistema computacional… • Se calcula que las aplicaciones típicas corriendo en las supercomputadoras modernas usan el 5 o 10% de ese rendimiento máximo. • Y entonces … ¿para qué? ¿Si una computadora puede resolver un problema en 10 segundos, 10 computadoras pueden resolverlo en un segundo? La Ley de Amdahl • La mejora en rendimiento que se obtiene al ejecutar en un modo más rápido está limitado por la fracción de tiempo en que éste modo puede ser utilizado. • Sea un algoritmo que resuelve un problema. Sea p la fracción de ese algoritmo que es paralelizable. Sea s=1-p, la fracción secuencial Entonces, la mejora en velocidad, S(n) para n procesadores: S ( n) T Tejec _ mejorado Tejec _ mejorado T * ( s (1 s ) / n) S ( n) 1 s p n La Ley de Amdahl • Un trayecto está formado por dos tramos. El primer tramo son 20 horas de caminata a través de un área protegida. El segundo tramo son 200 km que pueden atravesarse en vehículo: – Caminando a 4 km por hora – En bicicleta a 10 km por hora – En moto a 50 km por hora – En un auto a 120 km por hora – En un auto de carrera 600 km por hora Amdahl Vehículo Horas Mejora Horas Totales Mejora Total Hombre Bici Moto Auto Fórmula 0 50.00 20.00 4.00 1.67 0.33 1.0 2.5 12.5 30.0 150.0 70.00 40.00 24.00 21.67 20.33 1.0 1.8 2.9 3.2 3.4 S ( Fórmula0) S ( Fórmula0) 1 ( s) p ( n) 1 ( 20 / 70) (50 / 70) 3,4 (150) Ley de Amdahl Esto es útil tanto para hardware como para software. Hay que saber elegir bien la parte a «acelerar» La megacomputadora : Internet Do-it-yourself supercomputer!!! La Sopa de Piedra Había una vez...... Cluster StoneSoup Cluster Stone Soup • http://www.extremelinux.info/stonesoup/ Pero seguimos comparando una pera con miles de manzanas…. • Hasta ahora venimos hablando de las velocidades que alcanzan las supercomputadoras y como éstas van alcanzando valores asombrosamente grandes… pero, ¿que tal si miramos una única computadora? • Que tal el Pentium 4? Como anda de rápido?…. • No mas rápido que…..12 Teras!!!!!! (eso dicen) • Y es uno solito!!!!! El problema ahora es que… • Se acabaron las peras… solo hay manzanos • Todo lo nuevo es multicore… Intel® Core™ i7-2600S Processor (8M Cache, 2.80 GHz) Con 6 núcleos, el Intel Core i7 980 XE alcanza los 107.55 GFLOPS en cálculos de doble precisión. Processor Number Cache Clock Speed # of Cores / # of Threads i7-2600S 8.0 MB 2.80 GHz 4/8 i7-2600K 8.0 MB 3.40 GHz 4/8 32 nm Fijense que ya es imposible volver atrás… Las computadoras de escritorio, llevan procesadores con MAS de un núcleo… TODA la computación se ha vuelto paralela… Resumen • En esta clase vimos… – Como avanzó exponencialmente el poder de cómputo de las computadoras – Que el hombre siempre quiere mas y mas FLOPS! O sea, quiere MAS rendimiento! Porque entonces aplicaciones que ayer eran inimaginables, hoy podemos comenzar a imaginar como sería hacerlas… – Algo para recordar siempre: la Ley de Amdhal. • En la próxima clase veremos – Que es el rendimiento y como hacemos para medirlo ¿Que haremos durante el curso? • Programa: (http://dc.uba.ar/materias/int-com/2011/cuat1/informacion) 1. Introducción: el mundo de la tecnología hoy 2. Rendimiento: que es y como medirlo. 3. Del programa(en algún lenguaje) guardado en una archivo en el disco a su ejecución en una computadora 4. Lenguaje C y Python: todo lo que necesitamos saber para utilizarlos 5. Matlab Cambios respecto a años anteriores • Al igual que en años anteriores, el objetivo es que el alumno aprenda a resolver e implementar algoritmos de complejidad media-baja. (La palabra complejidad está usada aquí en el sentido castellano y no informático del término) • A diferencia de los años anteriores, en lugar de estudiar la eficiencia teórica de los algoritmos, veremos el rendimiento de los algoritmos ya implementados y ejecutándose en un sistema concreto. Son simplemente dos propuestas ortogonales entre sí y obviamente complementarias. Comentario sobre la bibliografía del año pasado (año 2010) • Kernighan B., Ritchie D., El lenguaje de programación C, Prentice Hall, 1991. • Stroustrup B., The C++ Programming Language, Addison-Wesley, 1998. • José Luis Balcazar, Programación metódica. • Edger Dijkstra, A discipline of programming. Kernighan B., Ritchie D., 1991 • Ritchie fue el creador del lenguaje, en 1974. En el año 78 ambos escribieron el libro, que fue un best seller! • Ejemplos muy sencillos, como éste: main( ) { printf("hello, world"); } • Creador de C++. • … ¿quieren estudiar C++? • Es un lenguaje que le agrega a C facilidades para trabajar con objetos, o sea, con mas nivel de abstracción. • http://www2.research.att.com/~bs/ Stroustrup B. J.L. Balcazar y Edger Dijkstra • Teórico . Físico e • Programación Informático. Metódica: no es un libro sencillo. Orientado a un • Interesado en verificación formal de curso de programación algoritmos. para computación. Se • Contribuciones concentra en importantes a la verificación formal de informática: problema algoritmos. del camino mas corto y otros algoritmos. Bibliografía de este año • Lenguaje C: – Kernighan B., Ritchie D. The C programming language – Deitel, • Lenguaje Python – http://www.python.org/ • Lenguaje Matlab – http://en.wikibooks.org/wiki/Matlab ? • Conceptos de computación – Computer Organization and Design: The hardware/software interface. Hennessey&Patterson • Conceptos de programación – The art of computer programming, Donald Knuth Y Finalmente, por hoy The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.” Edsger Dijkstra, «Notas sobre la programación estructurada» Fin Introducción