Este documento discute los modelos de paralelismo y concurrencia. Explica que la programación funcional es un modelo implícito de paralelismo debido a que las funciones son puras y sin efectos colaterales, por lo que cada evaluación de función puede hacerse de forma independiente. También introduce conceptos como map-reduce y modelos explícitos como hilos y actores. Finalmente, explica que los programas funcionales son inherentemente paralelizables dado que cada evaluación de función en una lista puede hacerse de forma concurrente.
2.5 Razonamiento Monótono
Concepto
Que es la lógica?
Lógica Proposicional
Lógica Proposicional ejemplo
Deducción Lógica
Deducción Lógica ejemplo
Lógica de Primer Orden
Deducción Lógica ejemplo
2.5 Razonamiento Monótono
Concepto
Que es la lógica?
Lógica Proposicional
Lógica Proposicional ejemplo
Deducción Lógica
Deducción Lógica ejemplo
Lógica de Primer Orden
Deducción Lógica ejemplo
Los métodos de búsquedas mas conocido en Inteligencia Artificial.
Búsquedas Sin Información del Dominio (A Ciegas)
· Búsqueda en Amplitud o Anchura
· Búsqueda en Profundidad
Búsquedas Informadas (Heurísticas)
· Búsqueda “Primero el Mejor”
· Búsqueda en Haz
· Algoritmo A*
Búsqueda con Adversario
· Método Minimax
· Método de Poda
HISTORIA DEL JDBC
JDBC existe desde 1996, y fue incluido desde la versión 1.1 de Java Development Kit por JavaSoft, aunque también se hizo disponible para usarse con JDK 1.02. El problema de usar JDBC con el JDK 1.02 es que los usuarios comunes tenían que agregar a su maquina virtual de Java las clases que implementan JDBC, lo cual era muy engorroso y difícil. Es por esto que desde la versión de JDK 1.1, JDBC viene incluido como el paquete java.sql.
Java en un principio era visto como un lenguaje para poner animaciones en Internet, la información que presentaba no era persistente, así que no era apto para aplicaciones de negocios o industriales, que requerían la capacidad de acceder a información almacenada en Sistemas Gestionadores de Bases de Datos (DBMS).
Era además necesario crear una forma sencilla de acceder a bases de datos usando Java, pues de otra manera se dejaría al desarrollador con la tarea de implementar llamadas de bajo nivel al DBMS.
En ese entonces Java era un lenguaje que prometía independencia de plataformas, lo cual lo hacia un ambiente muy atractivo para crear todo tipo de aplicaciones, y el acceso a Base de Datos se convertía cada vez más en una necesidad que un lujo.
La gente en JavaSoft se preguntó como atraer a los programadores y a las empresas a invertir su dinero y su tiempo en JDBC. Es por esto que decidieron crear ventajas competitivas en su producto, mejorando cada vez mas la interface de JDBC para que:
1. Los programadores pudieran sentirse como si usaran solamente Java, permitiéndoles una forma sencilla de uso del DBMS.
2. Los programadores se sintieran en contacto directo con el DBMS y no con un socket o un proceso en cualquier maquina.
3. La comunicación con la base de datos fuera fácil de programar. Esto es, que las empresas que quisieran hacer controladores JDBC para comunicarse con sus productos lo pudieran hacer en forma sencilla.
4. Fuese flexible, para aceptar configuraciones diferentes de conectividad. Osea, que la misma aplicación del desarrollador pudiese acceder a varios DBMS a la vez, tal vez hasta en varios hilos simultáneos.
JDBC vs. ODBC
ODBC (Open DataBase Connectivity: Conectividad abierta de Base de Datos) es la interface para conectarse con BD’s relacionales más usada por los programadores de aplicaciones.
Tal vez nos estemos preguntando porque se desarrolló JDBC si ya existía una interface popular que supuestamente hace lo mismo. La respuesta es que se usa JDBC por diferentes razones:
• ODBC usa una interface escrita en lenguaje de programación C. Por lo tanto hace que no sea portable.
• ODBC se ha de instalar manualmente en cada maquina, en cambio los drivers de JDBC como están escritos en JAVA son automáticamente instalables, portables y seguros.
Hay que decir también, que existen drivers puente entre JDBC-ODBC, los cuales traducen las llamadas de JDBC a ODBC permitiendo comunicarse con distintas BD propietarias
Los métodos de búsquedas mas conocido en Inteligencia Artificial.
Búsquedas Sin Información del Dominio (A Ciegas)
· Búsqueda en Amplitud o Anchura
· Búsqueda en Profundidad
Búsquedas Informadas (Heurísticas)
· Búsqueda “Primero el Mejor”
· Búsqueda en Haz
· Algoritmo A*
Búsqueda con Adversario
· Método Minimax
· Método de Poda
HISTORIA DEL JDBC
JDBC existe desde 1996, y fue incluido desde la versión 1.1 de Java Development Kit por JavaSoft, aunque también se hizo disponible para usarse con JDK 1.02. El problema de usar JDBC con el JDK 1.02 es que los usuarios comunes tenían que agregar a su maquina virtual de Java las clases que implementan JDBC, lo cual era muy engorroso y difícil. Es por esto que desde la versión de JDK 1.1, JDBC viene incluido como el paquete java.sql.
Java en un principio era visto como un lenguaje para poner animaciones en Internet, la información que presentaba no era persistente, así que no era apto para aplicaciones de negocios o industriales, que requerían la capacidad de acceder a información almacenada en Sistemas Gestionadores de Bases de Datos (DBMS).
Era además necesario crear una forma sencilla de acceder a bases de datos usando Java, pues de otra manera se dejaría al desarrollador con la tarea de implementar llamadas de bajo nivel al DBMS.
En ese entonces Java era un lenguaje que prometía independencia de plataformas, lo cual lo hacia un ambiente muy atractivo para crear todo tipo de aplicaciones, y el acceso a Base de Datos se convertía cada vez más en una necesidad que un lujo.
La gente en JavaSoft se preguntó como atraer a los programadores y a las empresas a invertir su dinero y su tiempo en JDBC. Es por esto que decidieron crear ventajas competitivas en su producto, mejorando cada vez mas la interface de JDBC para que:
1. Los programadores pudieran sentirse como si usaran solamente Java, permitiéndoles una forma sencilla de uso del DBMS.
2. Los programadores se sintieran en contacto directo con el DBMS y no con un socket o un proceso en cualquier maquina.
3. La comunicación con la base de datos fuera fácil de programar. Esto es, que las empresas que quisieran hacer controladores JDBC para comunicarse con sus productos lo pudieran hacer en forma sencilla.
4. Fuese flexible, para aceptar configuraciones diferentes de conectividad. Osea, que la misma aplicación del desarrollador pudiese acceder a varios DBMS a la vez, tal vez hasta en varios hilos simultáneos.
JDBC vs. ODBC
ODBC (Open DataBase Connectivity: Conectividad abierta de Base de Datos) es la interface para conectarse con BD’s relacionales más usada por los programadores de aplicaciones.
Tal vez nos estemos preguntando porque se desarrolló JDBC si ya existía una interface popular que supuestamente hace lo mismo. La respuesta es que se usa JDBC por diferentes razones:
• ODBC usa una interface escrita en lenguaje de programación C. Por lo tanto hace que no sea portable.
• ODBC se ha de instalar manualmente en cada maquina, en cambio los drivers de JDBC como están escritos en JAVA son automáticamente instalables, portables y seguros.
Hay que decir también, que existen drivers puente entre JDBC-ODBC, los cuales traducen las llamadas de JDBC a ODBC permitiendo comunicarse con distintas BD propietarias
Exploring Elixir Codebases with ArcheometerAgustin Ramos
Legacy code is a liability, or so they say. Nevertheless legacy code is at least a part of most software projects. If you work on a system with legacy code, you better have a nice map that clearly marks where the dragons roam. On the other hand, as software developers, most of us switch between projects every once in a while and many times we arrive at humongous codebases. How to deal effectively and efficiently with so much code? The usual mantra is “read the code!”, but it’s not easy at all to quickly understand tens (or even hundreds) of thousands of lines of code.
What if we could obtain metadata that describes a software system from another perspective instead of just raw code? And better yet, what if this data was queryable? This is the goal of Archeometer: to gather different kinds of useful information about the system and make it available for your exploration.
Think of Archeometer as a device you can use to get an understanding of the overall design and quality of an Elixir based system, a lab in which you can interactively tune parameters and adjust zoom levels to get a pretty good grasp of a perhaps huge and not so pretty code base, an oracle for answering questions like: which are the core modules of the system? which are the parts of the system most difficult to understand? which are the ones I must be most careful dealing with? which parts are nice, safe and green?
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
33. Paralelismo vs Concurrencia
Paralelismo:
Surge cuando al menos dos tareas se ejecutan
de manera simultánea (físicamente).
34. Paralelismo vs Concurrencia
Paralelismo:
Surge cuando al menos dos tareas se ejecutan
de manera simultánea (físicamente).
Objetivo: optimizar tiempo de ejecución.
35. Paralelismo vs Concurrencia
Paralelismo:
Surge cuando al menos dos tareas se ejecutan
de manera simultánea (físicamente).
Objetivo: optimizar tiempo de ejecución.
Concurrencia:
36. Paralelismo vs Concurrencia
Paralelismo:
Surge cuando al menos dos tareas se ejecutan
de manera simultánea (físicamente).
Objetivo: optimizar tiempo de ejecución.
Concurrencia:
Surge cuando al menos dos tareas están
realizando progreso (e.g. time sharing).
37. Paralelismo vs Concurrencia
Paralelismo:
Surge cuando al menos dos tareas se ejecutan
de manera simultánea (físicamente).
Objetivo: optimizar tiempo de ejecución.
Concurrencia:
Surge cuando al menos dos tareas están
realizando progreso (e.g. time sharing).
Objetivo: tareas colaborativas.
38. Ley de Amdahl
Gene Amdahl, 1967
La máxima mejora en desempeño que puede
obtenerse al paralelizar un programa, está dada
por:
P = Porción paralelizable [0, 1].
N = Número de procesadores.
42. Modelo más tradicional
Hilos (Threads)
c/u con Stack propio
Memoria (estado) compartida
Locks para el acceso a variables compartidas
Manualmente se adquiere / libera
45. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
46. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
47. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
El pánico lleva a la serialización
48. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
El pánico lleva a la serialización
Bloquea / serializa todo!
49. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
El pánico lleva a la serialización
Bloquea / serializa todo!
Adiós concurrencia
50. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
El pánico lleva a la serialización
Bloquea / serializa todo!
Adiós concurrencia
Muy propenso a errores.
51. Problemas del Modelo de Hilos
Muy sensible a el orden de ejecución
Condiciones de competencia.
Deadlocks
El pánico lleva a la serialización
Bloquea / serializa todo!
Adiós concurrencia
Muy propenso a errores.
62. Programación Funcional
Las funciones son abstracciones de 1er nivel.
Se pueden usar funciones como parámetros de
otras, así como valores de retorno.
63. Programación Funcional
Las funciones son abstracciones de 1er nivel.
Se pueden usar funciones como parámetros de
otras, así como valores de retorno.
Funciones de funciones (Higher Order Functions).
64. Programación Funcional
Las funciones son abstracciones de 1er nivel.
Se pueden usar funciones como parámetros de
otras, así como valores de retorno.
Funciones de funciones (Higher Order Functions).
Los programas se ejecutan evaluando expresiones.
65. Programación Funcional
Las funciones son abstracciones de 1er nivel.
Se pueden usar funciones como parámetros de
otras, así como valores de retorno.
Funciones de funciones (Higher Order Functions).
Los programas se ejecutan evaluando expresiones.
A diferencia de secuencias de sentencias
69. Programación Funcional
Las funciones son puras
Sin efectos colaterales.
El resultado es función solamente de los
parámetros, no de algún estado (transparencia
referencial).
70. Programación Funcional
Las funciones son puras
Sin efectos colaterales.
El resultado es función solamente de los
parámetros, no de algún estado (transparencia
referencial).
Típicamente, se evita mantener estado mutable.
73. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
74. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
75. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
76. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
77. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
L = [ 1, 2, 3, 4, 5].
78. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
L = [ 1, 2, 3, 4, 5].
lists:map (fun(X) -> 2*X end, L)
79. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
L = [ 1, 2, 3, 4, 5].
lists:map (fun(X) -> 2*X end, L)
Resultado: [2, 4, 6, 8, 10]
80. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
L = [ 1, 2, 3, 4, 5].
lists:map (fun(X) -> 2*X end, L)
Resultado: [2, 4, 6, 8, 10]
¿Importa el orden en que se aplicó F?
81. Los programas funcionales son implícitamente
paralelizables (1/4)
Función F que transforma valores:
F(v1) -> v2
Función ‘map’ sobre listas que utiliza F sobre cada elemento
de la lista, para formar otra lista:
map( F, list1 ) -> list2
Ejemplo 1 (Erlang):
L = [ 1, 2, 3, 4, 5].
lists:map (fun(X) -> 2*X end, L)
Resultado: [2, 4, 6, 8, 10]
¿Importa el orden en que se aplicó F?
No. Por tanto ¡es paralelizable!
82. Los programas funcionales son implícitamente
paralelizables (2/4)
Ejemplo 2. ¿Cuántas paralelizaciones son posibles?
List obtenerCursosSugeridos(idAlumno) ->
Lists.filter (
cursosDePeriodoActivo(),
esCursoDeAlgunaMateria(
materiasPorAprobarDeAlumno( idAlumno ) )
83. Los programas funcionales son implícitamente
paralelizables (2/4)
Ejemplo 2. ¿Cuántas paralelizaciones son posibles?
Pueden evaluarse en
paralelo porque no hay
dependencias
List obtenerCursosSugeridos(idAlumno) ->
Lists.filter (
cursosDePeriodoActivo(),
esCursoDeAlgunaMateria(
materiasPorAprobarDeAlumno( idAlumno ) )
84. Los programas funcionales son implícitamente
paralelizables (2/4)
Ejemplo 2. ¿Cuántas paralelizaciones son posibles?
Pueden evaluarse en
paralelo porque no hay
dependencias
List obtenerCursosSugeridos(idAlumno) ->
Lists.filter (
cursosDePeriodoActivo(),
esCursoDeAlgunaMateria(
materiasPorAprobarDeAlumno( idAlumno ) )
La función ‘filter’ puede aplicar en paralelo la
función ‘esCursoDeAlgunaMateria’ a cada elemento
de la lista.
85. Los programas funcionales son implícitamente
paralelizables (3/4)
Al ser expresiones, los programas funcionales no
imponen un orden estricto de ejecución, por lo que
partes del programa (sub-expresiones) pueden ser
evaluadas en paralelo, delegando a la plataforma
esta tarea.
87. Los programas funcionales son implícitamente
paralelizables (4/4)
Las características que hacen que los programas
funcionales sean paralelizables son dos:
88. Los programas funcionales son implícitamente
paralelizables (4/4)
Las características que hacen que los programas
funcionales sean paralelizables son dos:
Independencia del tiempo.
89. Los programas funcionales son implícitamente
paralelizables (4/4)
Las características que hacen que los programas
funcionales sean paralelizables son dos:
Independencia del tiempo.
No existencia de variables mutables.
109. Map-Reduce
Propiedades deseables en el operador ‘Reduce’
Asociatividad
a ⊕ ( b ⊕ c ) = (a ⊕ b) ⊕ c
Conmutatividad
a⊕b=b⊕a
Asociatividad y Conmutatividad
110. Map-Reduce
Propiedades deseables en el operador ‘Reduce’
Asociatividad
a ⊕ ( b ⊕ c ) = (a ⊕ b) ⊕ c
Conmutatividad
a⊕b=b⊕a
Asociatividad y Conmutatividad
a ⊕ ( b ⊕ c ) = (c ⊕ a) ⊕ b
114. Ejemplo de Map-Reduce
Problema: contar el número de veces que
aparece una palabra en un documento.
map(String name, String document):
for each word w in document:
EmitIntermediate(w, "1")
115. Ejemplo de Map-Reduce
Problema: contar el número de veces que
aparece una palabra en un documento.
map(String name, String document):
for each word w in document:
EmitIntermediate(w, "1")
116. Ejemplo de Map-Reduce
Problema: contar el número de veces que
aparece una palabra en un documento.
map(String name, String document):
for each word w in document:
EmitIntermediate(w, "1")
117. Ejemplo de Map-Reduce
Problema: contar el número de veces que
aparece una palabra en un documento.
map(String name, String document):
for each word w in document:
EmitIntermediate(w, "1")
reduce(String word, Iterator partialCounts):
int sum = 0;
for each count in partialCounts:
sum += parseInt(count)
Emit(word, AsString(sum))
122. Actores
Modelo de programación concurrente
Un actor:
Tiene un estado interno, no compartido.
Tiene su propio hilo de ejecución (event loop).
123. Actores
Modelo de programación concurrente
Un actor:
Tiene un estado interno, no compartido.
Tiene su propio hilo de ejecución (event loop).
Puede enviar y recibir mensajes a otros actores, de
manera asíncrona.
124. Actores
Modelo de programación concurrente
Un actor:
Tiene un estado interno, no compartido.
Tiene su propio hilo de ejecución (event loop).
Puede enviar y recibir mensajes a otros actores, de
manera asíncrona.
En respuesta a un mensaje, puede:
125. Actores
Modelo de programación concurrente
Un actor:
Tiene un estado interno, no compartido.
Tiene su propio hilo de ejecución (event loop).
Puede enviar y recibir mensajes a otros actores, de
manera asíncrona.
En respuesta a un mensaje, puede:
Cambiar su estado interno.
126. Actores
Modelo de programación concurrente
Un actor:
Tiene un estado interno, no compartido.
Tiene su propio hilo de ejecución (event loop).
Puede enviar y recibir mensajes a otros actores, de
manera asíncrona.
En respuesta a un mensaje, puede:
Cambiar su estado interno.
Enviar mensajes a otros actores.
132. ¿Cuándo utilizar Actores?
Cuando el problema se preste de manera natural a
descomposición de diferentes tareas concurrentes.
Cuando se requiere descomponer la aplicación de
tal manera que se permita escalar de manera
diferente a cada parte de la misma.
133. ¿Cuándo utilizar Actores?
Cuando el problema se preste de manera natural a
descomposición de diferentes tareas concurrentes.
Cuando se requiere descomponer la aplicación de
tal manera que se permita escalar de manera
diferente a cada parte de la misma.
Cuando se quiere tener transparencia al escalar
aplicaciones entre un CPU de varios cores a un
cluster de máquinas.
134. Software Transactional
Memory
Ok, es imposible evitar al 100% el estado
mutable.
¿Cómo manejar el estado mutable en
concurrencia de manera segura?
Usar transacciones en memoria para
modificar las referencias mutables.
136. Otros modelos
Colecciones paralelas
listOfFiles.par foreach(file => sendToS3(file))
Data Flow
“Cambiar el valor de 1 variable,
automáticamente debería forzar el recálculo
de valores que dependen de dicha variable”.
140. Futuro
Experiencia
Investigación
con HPC
Necesidades
de la Industria
141. "My thesis is that the best way to write parallel
applications is not to have to think about
parallelism, just as the best way to deal with
memory and it's management is not to have to
worry about this management. You have this
garbage collector... let it deal with that"
Guy Steele, 2011
142. Referencias
The Free Lunch is Over. http://j.mp/mL1PMf
How to Think About Parallel Programming: Not!
http://j.mp/jXYNeH
Introduction to Parallel Programming and
MapReduce http:/ /j.mp/pLFVZA
Actors in Scala http://j.mp/plti66
Concepts, Techniques and Models of Computer
Programming. Van Roy & Haridi, 2004. http://
j.mp/m7gYbi
Notas del editor
\n
\n
- La densidad de transistores se duplica cada 18 meses.\n- La velocidad de los transistores se duplica cada 18 meses.\n- La pared de la energía (The Power Wall)\n\n
- La densidad de transistores se duplica cada 18 meses.\n- La velocidad de los transistores se duplica cada 18 meses.\n- La pared de la energía (The Power Wall)\n\n
- La densidad de transistores se duplica cada 18 meses.\n- La velocidad de los transistores se duplica cada 18 meses.\n- La pared de la energía (The Power Wall)\n\n
- El Cell fue introducido por Sony, Toshiba e IBM para el Play Station 3.\n- ¿Cómo programar esta máquina explotando todos sus nucleos de procesamiento.\n\n
- El Cell fue introducido por Sony, Toshiba e IBM para el Play Station 3.\n- ¿Cómo programar esta máquina explotando todos sus nucleos de procesamiento.\n\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
La fujitsu K Computer fue catalogada la computadora más potente del mundo (Junio 2011)\nEl poder de las supercomputadoras se ha duplicado cada 14 meses!\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
\n
\n
\n
\n
\n
\n
\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
Supuesto: una aplicación monolítica.\nConforme más usuarios, se necesita introducir más hardware... \nTope: Ley de Amdahl\npero no todas las sub-funcionalidades de la aplicación requieren escalar de igual manera.\nNo solo aplica a usuarios.\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
¿Por qué no simplemente programamos con hilos?\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n
Implícito: El sistema se hace cargo de la paralelización.\nExplícito: El programador define y controla los procesos\n