Loading AI tools
De Wikipedia, la enciclopedia libre
En la informática, el paralelismo es la simple aplicación de múltiples CPU a un problema único. Se trata de un concepto intuitivo y atractivo. Considérese un problema científico o de ingeniería computacional en el que se ha estado trabajando. Si ejecutarlo en una sola CPU da como resultado 10 horas, ¿por qué no usar 10 CPU y obtener los resultados después de solo una hora? Para la ciencia computacional, supera algunas de las limitaciones impuestas por las computadoras con una sola CPU, pudiendo resolver problemas más grandes y complejos cuyos datos de entrada o resultados intermedios superan la capacidad de memoria de una CPU. De esta forma, las simulaciones se pueden ejecutar con una resolución más doña fina y un fenómeno físico se puede modelar de manera más realista.
En la práctica, el paralelismo tiene un precio elevado. En los procesos paralelos, la gramática implica una curva de aprendizaje pronunciada, además de un esfuerzo intensivo; el programador debe pensar en la aplicación de nuevas formas y puede terminar reescribiendo prácticamente todo el código. El entorno de ejecución de una computadora paralela es inherentemente inestable e impredecible. Las técnicas para depurar y ajustar el rendimiento de los programas en serie no se extienden fácilmente al mundo paralelo. Es posible trabajar meses en la paralelización de una aplicación sólo para descubrir que produce resultados incorrectos o que funciona más lento que antes.
El paralelismo es una forma de computación en la cual varios cálculos pueden realizarse simultáneamente,[1] basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en paralelo. Hay varios tipos diferentes de paralelismo: nivel de bit, nivel de instrucción, de datos y de tarea. El paralelismo ha sido empleado durante muchos años, sobre todo para la Computación de alto rendimiento.
Existen tres factores que establecen los objetivos de rendimiento de la aplicación. Primero, ¿con qué frecuencia se utilizará la aplicación antes de que se necesiten cambios? Si la respuesta es miles de veces entre revisiones, esta es una aplicación altamente productiva que probablemente requiera esfuerzo significativo del programador para mejorar su rendimiento.
El segundo factor es el tiempo que se necesita actualmente para ejecutar la aplicación. Supongamos que se esperan días para obtener los resultados, reducir ese tiempo a una fracción puede mejorar su productividad significativamente. Por el contrario, si se puede medir el tiempo de ejecución en minutos es poco probable que se esté satisfecho con la recompensa en términos de mejora del rendimiento y esfuerzo requerido. Tenga en cuenta que estas son medidas relativas, si su aplicación es un servicio de emergencia en tiempo real como un sistema de gestión, incluso unos pocos segundos de mejora podrían ser significativos.
En tercer lugar, ¿en qué medida está satisfecho con la resolución actual o la complejidad de los resultados? Si la velocidad o la capacidad de memoria de las computadoras limita a una cuadrícula cuyas unidades son mucho más toscas de lo que se quiere, digamos, se representan enviando la superficie del océano en unidades de 10 grados cuando lo que realmente se necesita es una granularidad de 2 grados, el paralelismo puede ser la única manera factible de romper esa restricción.
Como la computación paralela se vuelve cada día más grande y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática (para hacer plegamiento de proteínas) hasta economía (para hacer simulaciones en el ámbito financiero). Los problemas típicos encontrados en el paralelismo son:[2]
Un sistema de memoria compartida vuelve indicando la preferencia, pero con la memoria distribuida del sistema podría funcionar, dando suficientes cálculos entre interacciones de la CPU. Entonces ahora toda la fase de renderizado consume sólo 71 segundos: 6 para configuración e inicialización, 47 para el cálculo de rayos, 13 para trazar y 5 para escribir la salida.
Claramente las reglas generales indican que la paralelización no garantiza, dado que la intención del caso del mundo real fue para empujar los límites del rendimiento. Al canalizar el casting de rayos y trazar cálculos, es posible reducir el tiempo de ejecución en unos pocos segundos por imagen, sin embargo, la cantidad de esfuerzo requerido fue sustancial.
Los multiordenadores SIMD, también llamados matriz de procesadores, son máquinas muy fáciles de programar. Ofrecen la oportunidad de utilizar su memoria de una manera eficiente.
Uno de los problemas de rendimiento está relacionado con la pérdida o desperdicio del esfuerzo de la CPU. Cuando una operación es condicional, por poner un ejemplo, donde se tenga que dividir el vector A por el vector B, únicamente donde el elemento B es distinto a cero, todas las CPU realizan la operación y los resultados se descartan de cualquiera de los CPU donde la condición es falsa. La condición representa una serie de cuello de botella, ya que la máquina tiene varios CPU, de los cuales solo algunos pueden contrarrestar todas las ganancias de rendimiento obtenidas por arreglo de operaciones.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.