Ayuda del Poder Computacional en La Programación de Computadoras

En este ensayo hablare sobre los sistemas de memoria distribuida, redes de interconexión estáticas, clusters, programación, y el rendimiento de los mismos.

La memoria y el poder computacional está definido por los recursos que se tengan (como lo es Hardware y Software) para que se sobrepasen las limitaciones en esta cuestión y lograr más rendimiento los diseñadores de computadoras y científicos empezaron a conectar varias computadoras juntas creando clusters de computadoras.En la memoria distribuida esta se distribuye con otros procesos en paralelo, estos procesos se tienen que comunicar con cada uno enviando mensajes. A continuación se describirán cada uno de los temas.

Las redes estáticas para sistemas paralelos son conexiones fijas que no pueden ser modificadas sin tener que rediseñar el sistema físicamente. En multicomputadoras se usan para conectar los procesadores de las máquinas. Este tipo de redes pueden tener estructuras lineales,de matriz, anillo, toros, árbol, estrella, una estructura de completa conexión, e hipercubo.En las estructuras lineales y de matriz los procesadores están conectados con sus iguales en una estructura regular. En la estructura toros los elementos de la matriz en las esquinas están conectados en el marco de las mismas columnas y líneas. En una estructura de completa conexión todos los elementos son directamente interconectados. En una estructura árbol todos los elementos del sistema se ordenan jerárquicamente de la raíz a las hojas. En una hipercubo los procesadores son interconectados a la red en la cual las conexiones entre procesadores corresponden a los bordes de un cubo n dimensional.

Clusters

Una manera de entender los clusters es compararlos con estructuras cerebrales, si usamos esta analogía observamos que aunque las neuronas resuelven problemas complejos la velocidad individual de cada una es bastante lenta, por cual se nota la importancia de que trabajen en conjunto todos estos elementos para resolver los problemas más rápidamente. Podemos aprovechar los recursos adicionales de manera que con más memoria y poder de procesamiento aumentemos la complejidad de los problemas y por tanto podamos resolver estos en el mismo tiempo añadiendo procesos adicionales y manteniendo la carga de trabajo por proceso lo cual es llamado “weak scaling”. Tambien se podria mantener la complejidad del problema y distribuir otros más pequeños a un número mayor de procesos. Entonces cada proceso tendría una carga de trabajo menor y podría terminar mucho más rápido. Esto es llamado “strong scaling”.

Al usar clusters los programadores necesitan diseñar sus códigos para la arquitectura del sistema y al momento de correrlos se necesita controlar el software que maneja las tareas y los recursos. El paralelismo consiste en que habrá varios streams o hilos de instrucciones de programa ejecutándose simultáneamente. Los sistemas de clusters organizan la memoria en niveles jerárquicos de proximidad a los CPUs. Los programadores tienen que manejar el flujo de datos a estas memorias mientras se ejecutan las tareas. Una forma de maximizar el rendimiento y velocidad en el que el código corre es asegurarse que los programas usen la caché eficientemente o modificar el código para que el compilador lo optimice para las arquitecturas.

Para usar clusters deberíamos analizar el problema que tenemos y revisar si nos terminará beneficiando aplicar estos clusters, para ello entender el problema y los recursos que va a necesitar es fundamental, con recursos veremos el hardware y software que necesitará y si el rendimiento que nos proporciona es el adecuado para nosotros o si hay otra forma de resolver el problema. Unas de las áreas donde resulta más beneficiosa su aplicación es cuando se requiere modelar, simular para entender problemas de los fenómenos reales del mundo por ejemplo : cambio climático, placas tectónicas, movimiento de planetas, formación de galaxias, tráfico, construcción de autos, clima si pensamos resolver esto de manera serial sería casi imposible y el que se use clusters nos da de ventaja ahorrar dinero y tiempo, resolución de problemas más complejos y grandes, el aprovechar recursos no locales.

Como conclusión estos sistemas pueden ayudar a resolver problemas más grandes y complejos en menor tiempo y nos permiten a la vez aprovechar recursos y sobreponernos a las limitaciones de la época referente al hardware y esto nos hace desarrollar cada vez mejores elementos y algoritmos con lo cual se logra un avance tecnológico.

10 October 2022
close
Tu email

Haciendo clic en “Enviar”, estás de acuerdo con nuestros Términos de Servicio y  Estatutos de Privacidad. Te enviaremos ocasionalmente emails relacionados con tu cuenta.

close thanks-icon
¡Gracias!

Su muestra de ensayo ha sido enviada.

Ordenar ahora

Utilizamos cookies para brindarte la mejor experiencia posible. Al continuar, asumiremos que estás de acuerdo con nuestra política de cookies.