ALGORITMOS Y COMPUTACION PARALELA

INDICE  Presentación  Introducción La computación paralela Ley de Moore Overclocking  Desarrollo Fabricante de arqui

Views 199 Downloads 0 File size 531KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • RAUL
Citation preview

INDICE  Presentación

 Introducción La computación paralela Ley de Moore Overclocking  Desarrollo Fabricante de arquitectura paralela Área de la computación paralela Historia Ventajas Diseño de Foster Tipos de paralelismo Patrones  Conclusión Aprendí que e importancia

Universidad Tecnológica de Santiago “UTESA”

Tema: La Computación Paralela y sus propiedades fundamentales, primera parte:

Matrícula: Raúl de los Santos Sánchez, Mat.: 1-16-3867

ALGORITMO PARALELO PROFESOR Eduardo Arvelo

Sección: INF-025-001

Santo Domingo, República Dominicana.

INTRODUCCIÓN: La utilización de las computadoras para el cálculo científico y aplicaciones que procesan gran cantidad de datos, demandan un procesamiento con mejor rendimiento, bajo costo y una buena producción. Por estos motivos se está incrementando la aceptación y adopción del cómputo paralelo. La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. La programación en Paralelo es el usar varios procesadores para resolver una tarea común. La Programación Paralela. Es una alternativa ante la demanda continua de un poder computacional superior en áreas tan importantes como la predicción meteorológica, biocomputación, astrofísica. Ley de Moore. Ley creada por el cofundador de Intel, Gordon Earl Moore, que previó en 1965 que el número total de transistores integrados en un circuito sería doblado cada dos años. Teoría que se ha mantenido por más de 40 años y el pronóstico ha demostrado ser exacto. La formulación de la Ley de Moore es muy sencilla: el número de transistores que contiene un microprocesador se duplica cada aproximadamente 2 años. Aunque originariamente Moore establecía la duplicación en un periodo anual, diez años después reformuló su predicción ampliándose hasta el periodo que consideró más ajustado a la realidad. El overclocking implica aumentar la velocidad de reloj de la computadora CPU más allá de la velocidad a la que se diseñó originalmente para ejecutarse. Esto lleva a pensar que el término "overclock" se refiere a una acción que hace que un procesador trabaje por encima de su frecuencia habitual, su frecuencia base. Hacer overclock sirve para hacer funcionar un microprocesador por encima de su frecuencia base, lo que se traduce en un mayor rendimiento y consumo. Este rendimiento extra se puede necesitar por varias razones. En resumen, hacer overclock a un componente significa aumentar su rendimiento, lo que conlleva a reducir su vida útil, por lo que es algo a tener en cuenta en componentes duraderos, aunque cuando se hace OC no suele mirarse la vida útil del componente, ya que es habitual cambiar de pieza antes de llegar a ello.

También nos encontramos con el diseño adecuado para el hardware, para un excelente funcionamiento del mismo.

Desarrollo Hoy en día la computación paralela está presente no sólo en computadoras de escritorio o laptops, sino también en celulares, autos y más. La programación paralela forma parte del futuro de la informática. Partes del hardware donde vemos la computación paralela: En procesadores, tarjetas gráficas, entre otros. Los grandes fabricantes de computadoras que utilizan paralelismo para (supercomputadoras) son:

La computación paralela está presente tanto en el área de la ciencia y en la ingeniería, pero enfocado más en la informática. Algunas de esas áreas:  Nuclear  Geología  Ciencias moleculares  Química  Etc.

Aplicaciones de hoy en dia que utilizan lo que es la computación paralela para el procesamiento de gran cantidad de datos: 

Biología

Artificial Intelligence (BOINC) — ingeniería inversa para estudiar el cerebro. ● DENIS@home — Simulación de modelos de electrofisiología cardiaca para el estudio del comportamiento eléctrico del corazón. ● Hydrogen@Home — busca el método más eficiente de producir biohidrógeno. ● PS3GRID — simulaciones de biología molecular optimizado para los procesadores Cell en la PlayStation 3. ● RALPH@home — la versión alfa de Rosetta@home. ○ Bio4All — herramientas para anotaciones en la investigación genética. ○ Superlink@Technion — busca genes responsables de enfermedades genéticas. ● Criptografía ○ SHA-1 Collision Search — búsqueda de colisiones en las funciones hash SHA-1. ○ Zebra RSA Bruteforce — estudia el cifrado RSA. ● Internet ○ Project Neuron — graba, observa y analiza la actividad de BOINC con la intención de crear una métrica. ○ Storage@home — es una infraestructura de almacenamiento distribuido para solucionar el problema de hacer copias de seguridad y compartir los petabytes de información.1 ●

Un poco de historia de cómo surge la computación paralela En abril de 1958, S. Gill (Ferranti) analizó la programación en paralelo y la necesidad de la ramificación y la espera. También en 1958, los investigadores de IBM John Cocke y Daniel Slotnick discutieron por primera vez el uso del paralelismo en cálculos numéricos. En 1962 Burroughs Corporation presentó la D825, un equipo de cuatro procesadores que accede a un máximo de 16 módulos de memoria a través de un Conmutador de Barras Cruzadas. En 1967, Amdahl y Slotnick debatieron sobre la viabilidad del procesamiento en paralelo. La Computadora paralela SIMD se remontan a la década de 1970 En 1964, Slotnick había propuesto la construcción de un ordenador masivamente paralelo para el Laboratorio Nacional Lawrence Livermore . Su diseño fue financiado por la Fuerza

Aérea de los Estados Unidos, que fue el primer esfuerzo por lograr la computación en paralelo SIMD. La clave de su diseño fue un paralelismo bastante alto, con hasta 256 procesadores, lo que permitió que la máquina trabajará en grandes conjuntos de datos en lo que más tarde sería conocido como el procesamiento de vectores. Ventajas de la programación en paralelo:

● No se debe suponer que la ejecución en paralelo es siempre más rápida ● un uso más eficaz y más escalable de los recursos del sistema. ● un mayor control mediante programación del que se puede conseguir un subproceso o un elemento de trabajo. ● proporcionan estos tipos de sistemas es la escalabilidad, es decir, el sistema puede crecer un número mayor de procesadores que los sistemas de memoria compartida En la computación paralela nos encontramos con unos conceptos claves de los cuales podemos mencionar los más importantes: Las tareas: cada tarea en la computación paralela se dividen en cada uno de los núcleos de los procesadores, así obtenemos un mejor rendimiento mediante el uso del paralelismo. Por eso en las supercomputadoras de ahora obtenemos mejores rendimientos. La granularidad: es el tamaño o espacio de la tarea y son de dos tipos gruesas y finas Scheduling: es el encargado de asignar las tareas a los procesos

Entre otros conceptos más como overhead y speedup. A lo largo del resumen también nos encontramos con la gran diferencia entre la concurrencia y el paralelismo, la diferencia es que La concurrencia podría involucrar las diferentes tareas que se ejecutan y tienen tiempo superpuesto. Por otro lado, el paralelismo implica diferentes tareas que se ejecutan simultáneamente y tienden a tener el mismo comienzo y finalización hora.

Ejemplo:

Fuente de la imagen: https://www.google.com/url?sa=i&url=https%3A%2F%2Ftwitter.com%2Fplatzi%2Fst atus%2F895375738903330817%3Flang%3Dfi&psig=AOvVaw1OewI4Yp2NxUOaiZQZYrU&ust=1603581650120000&source=images&cd=vfe&ved=0C AMQjB1qFwoTCOj4hK3ty-wCFQAAAAAdAAAAABAD La arquitectura de Von Neumann describió el fundamento de todo ordenador electrónico con programas almacenados. Describe,a diferencia de como pasaba anteriormente, como podía funcionar un ordenador con sus unidades conectadas permanentemente y su funcionamiento estuviera coordinado desde la unidad de control (a efectos prácticos es la CPU). verificamos que a la hora de diseñar un modelo de computación parelera hay que tomar varios puntos en cuenta como: ● Los costes de implementar el algoritmo. ● Tiempos de planificación (scheduler). ● Descomposición de las tareas. ● Etc.

Una técnica para el diseño o creación de algoritmos paralelos, es la metodología de Foster, que se basa en cuatro pasos: ● ● ● ●

particionamiento comunicaciones aglomeración mapeo

Tipos de paralelismo: ● Paralelismo a nivel de bit Ejemplo: en un procesador de 16 bits sumar 2 números de 32 bits tomaría 2 instrucciones. Mientras que un procesador de 32 bits solo requeriría una sola instrucción. Método todavía hoy en día utilizado. ● Paralelismo a nivel de instrucciones Este tipo cambia el orden de las intruciones de un programa, pero sin afectar el resultado final. ● Pipellining Es un método que separa las instrucciones o orden del código y ejecuta cada parte del código por separado, digamos que por parte. ● Paralelismo a nivel de datos En donde cada uno de los procesadores ejecuta o corre la misma tarea de manera independiente. Ejemplo tecnico literal: Un procesador ejecuta una página YouTube en el Chrome por un lado y el otro procesador la página de classroom, fijándose que los 2 están procesando la aplicación de Chrome, pero en tareas divididas. ● Paralelismo a nivel de tareas Nos explica que cada hilo realiza una tarea distinta e independiente de las demas. Ejemplo: Un procesador ejecuta el chrome y otro ejecuta Visual Studio. Y así sucesivamente.

Patrones de diseño paralelo: Son una serie de pasos presentes en la ingeniería de software: ● Fork Join ● Map ● Stencil ● Reducción ● Scan ● Parbegin- ParEnd ● Maestro-Esclago esta vamos a definir la porque esta bien presente cuando hacemos uso de varias aplicaciones a la vez, donde dos o más procesos que necesitan ejecutarse simultáneamente se ejecutan pero a diferentes velocidades. ● SPMD - SIMD Arquitecturas de memorias de computación paralela ● Memoria compartida ● Uniforme memory acces (UMA) ● NON- UNIFORM MEMORY ACCESS (NUMA) ● MEMORIA DISTRIBUIDA Lo que son las sincronización y los datos en paralelos van de la mano. Porque trabajan de manera colectiva en la misma estructura de datos.

Conclusión: La computación paralela se ha convertido muy importante para la arquitectura de computadores, principalmente en los Procesadores multinúcleo, son muy importante para el procesamiento de grandes tareas y la división de la misma para un mejor rendimiento en el computador. Algo importante que puede observar es acercar del overclocking que es para aumentar la velocidad del reloj de la computadora más allá de la diseñada. También las importantes marcas que fabrican este tipo de arquitectura que abarca muchas áreas no sólo la informática, sino también las ciencias y química entre otras, también las ventajas de la programación en paralelo la más importante es la de la velocidad con la que podemos realizar tareas y obtener resultados, incluso el diseño de foster es bien importante para el diseño de algoritmos paralelos, para incursionar en la creacion de procesos paralelos para mejorar la velocidad aún más de procesamiento de nuestro computador, para finalizar queda decir que si estudiamos más a fondo acerca de los algoritmos paralelos podemos llegar a hasta encontrar herramientas tanto para el diseño y el análisis de los mismo y entender cómo funcionan estos procesos y como poder trabajar con ello.