Introducción a la Computación

advertisement
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
Descargar