La computación paralela, también conocida como programación paralela, es un proceso en el que grandes problemas informáticos se dividen en problemas más pequeños que pueden resolverse simultáneamente mediante múltiples procesadores.
Los procesadores se comunican mediante memoria compartida y sus soluciones se combinan mediante un algoritmo. La computación paralela es significativamente más rápida que la computación en serie (también conocida como computación en serie), su predecesora que utiliza un solo procesador para resolver problemas en secuencia.
Cuando se inventaron las computadoras a finales de los años 40 y 50, el software estaba programado para resolver problemas en secuencia, lo que restringía la velocidad de procesamiento. Para resolver problemas más rápido, los algoritmos tenían que construirse e implementarse siguiendo un conjunto de instrucciones en una unidad central de procesamiento (CPU). Solo después de ejecutar una instrucción, se podía resolver otra.
A partir de la década de 1950, la computación paralela permitió a las computadoras ejecutar código de manera más rápida y eficiente al dividir los problemas informáticos en problemas más pequeños y similares. Estos problemas, conocidos como algoritmos paralelos, se distribuyeron a través de múltiples procesadores.
Hoy en día, los sistemas paralelos han evolucionado hasta el punto en que se utilizan en varias computadoras, lo que hace que las tareas cotidianas, como consultar el correo electrónico o enviar un mensaje de texto, sean cientos de veces más rápidas que si se realizaran mediante computación en serie. Además de alimentar dispositivos personales como computadoras portátiles y teléfonos inteligentes, los sistemas paralelos también alimentan las supercomputadoras más avanzadas y tecnologías de punta como la inteligencia artificial (IA) y el Internet de las cosas (IoT).
La computación en serie, también conocida como computación secuencial, es un tipo de computación en el que las instrucciones para resolver problemas informáticos se siguen una a la vez o secuencialmente. Los fundamentos de la computación en serie requieren que los sistemas utilicen solo un procesador en lugar de distribuir los problemas entre varios procesadores.
A medida que la informática evolucionó, se introdujo la computación paralela porque la computación en serie tenía velocidades lentas. Los sistemas operativos que utilizan programación paralela permiten a las computadoras ejecutar procesos y realizar cálculos simultáneamente, una técnica conocida como procesamiento paralelo.
El procesamiento paralelo y la computación paralela son términos muy similares, pero vale la pena señalar algunas diferencias. El procesamiento paralelo, o paralelismo, separa una tarea de tiempo de ejecución en partes más pequeñas para que se realicen de forma independiente y simultánea utilizando más de un procesador. Por lo general, se requiere una red informática o una computadora con más de un procesador para volver a ensamblar los datos una vez que las ecuaciones se han resuelto en múltiples procesadores.
Si bien el procesamiento paralelo y la computación paralela a veces se usan indistintamente, el procesamiento paralelo se refiere a la cantidad de núcleos y CPU que se ejecutan junto con una computadora, mientras que la computación paralela se refiere a lo que hace el software para facilitar el proceso.
Boletín de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
La velocidad y la eficiencia de la computación paralela impulsan algunos de los avances tecnológicos más importantes del último medio siglo, incluidos los teléfonos inteligentes, la computación de alto rendimiento (HPC), la IA y el machine learning (ML). Al permitir que las computadoras resuelvan problemas más complejos más rápido y con menos Recursos, la computación paralela también es un controlador crucial de la transformación digital para muchas empresas.
El interés en la computación paralela comenzó cuando los programadores y fabricantes de computadoras comenzaron a buscar formas de construir procesadores más eficientes desde el punto de vista energético. En las décadas de 1950, 1960 y 1970, los líderes de la ciencia y la ingeniería construyeron computadoras que usaban espacio de memoria compartido y ejecutaban operaciones paralelas en conjuntos de datos por primera vez.
Estos esfuerzos culminaron en el innovador proyecto Caltech Concurrent Computation, que introdujo un nuevo tipo de computación paralela en la década de 1980 utilizando 64 procesadores Intel.
En la década de 1990, la supercomputadora ASCI Red, que utilizaba procesadores masivamente paralelos (MPP), logró un trillón de operaciones por segundo sin precedentes, marcando el comienzo de una era de dominio de MPP en el poder de la computación.1 Al mismo tiempo, se introdujeron en el mercado los clústeres, un tipo de computación paralela que vincula clústeres de computadoras o "nodos" en una red comercial, que finalmente reemplazaron a los MPP para muchas aplicaciones.
La computación paralela, en particular, los procesadores multinúcleo y las unidades de procesamiento gráfico (GPU), sigue siendo una parte crítica de la informática en la actualidad. Las GPU a menudo se despliegan simultáneamente con las CPU para ampliar el rendimiento de datos y ejecutar más cálculos a la vez, acelerando muchas aplicaciones empresariales modernas.
Antes de la computación paralela, la computación en serie obligaba a los procesadores únicos a resolver problemas complejos paso a paso, agregando minutos y horas a tareas que la computación paralela podría realizar en unos pocos segundos. Por ejemplo, los primeros iPhone utilizaban computación en serie y podían tardar un minuto en abrir una aplicación o correo electrónico. Hoy en día, la computación paralela, utilizada por primera vez en iPhones en 2011, acelera significativamente esas tareas.
A medida que la informática madura y aborda problemas más complejos, los sistemas necesitan realizar miles, incluso millones, de tareas en un instante. Los modelos de machine learning (ML) actuales dependen en gran medida de la computación paralela, utilizando algoritmos muy complejos desplegados en múltiples procesadores. Con la computación en serie, las tareas de machine learning (ML) tardarían mucho más debido a los cuellos de botella causados por solo poder realizar un cálculo a la vez en un solo procesador.
La computación paralela y el procesamiento paralelo potencian el procesamiento de números en grandes conjuntos de datos, lo que permite las consultas interactivas detrás del análisis de datos. Con más de un quintillón de bytes de información generados cada día, las empresas pueden tener dificultades para filtrar la información digital en busca de insights relevantes que sean útiles. El procesamiento paralelo despliega computadoras con muchos núcleos en una estructura de datos y filtra los datos mucho más rápido de lo que podría hacerlo una computadora en serie.
Equipadas con computación paralela, las computadoras pueden usar los recursos de manera mucho más eficiente que sus contrapartes de computación en serie. Los sistemas informáticos más vanguardistas de la actualidad despliegan múltiples núcleos y procesadores, lo que les permite ejecutar varios programas a la vez y realizar más tareas al mismo tiempo.
La computación paralela se refiere a muchos tipos de dispositivos y arquitecturas informáticas, desde supercomputadoras hasta el teléfono inteligente en su bolsillo. En su forma más compleja, la computación paralela utiliza cientos de miles de núcleos para abordar problemas, como encontrar un nuevo medicamento contra el cáncer o ayudar en la búsqueda de inteligencia extraterrestre (SETI). En su forma más sencilla, la computación paralela le ayuda a enviar un correo electrónico desde su teléfono más rápido que si utilizara un sistema informático en serie.
En términos generales, se utilizan tres arquitecturas únicas en la computación paralela: memoria compartida, memoria de computación distribuida y memoria híbrida. Cada arquitectura opera en su propia interfaz de paso de mensajes (MPI), un estándar para todas las arquitecturas de computación paralela. MPI describe protocolos para programas de paso de mensajes en lenguajes de programación como C++ y Fortran. La MPI de código abierto ha sido clave para el desarrollo de nuevas aplicaciones y software que dependen de capacidades de computación paralela.
La arquitectura de memoria compartida se utiliza en aplicaciones comunes y cotidianas de computación paralela, como computadoras portátiles o teléfonos inteligentes. En una arquitectura de memoria compartida, las computadoras paralelas dependen de múltiples procesadores para contactar el mismo recurso de memoria compartida.
La memoria distribuida se utiliza en arquitecturas de computación en la nube, por lo que es común en muchas aplicaciones empresariales. En un sistema distribuido para computación paralela, varios procesadores con sus propios recursos de memoria están vinculados a través de una red.
Las supercomputadoras actuales se basan en arquitecturas de memoria híbridas, un sistema de computación paralela que combina computadoras de memoria compartida en redes de memoria distribuida. Las CPU conectadas en un entorno de memoria híbrida pueden acceder a la memoria compartida y a las tareas asignadas a otras unidades en la misma red.
Además de las tres arquitecturas principales, otras arquitecturas informáticas paralelas menos comunes están diseñadas para abordar problemas más grandes o tareas altamente especializadas. Estos incluyen procesadores vectoriales, para matrices de datos llamados "vectores", y procesadores para computación de uso general en unidades de procesamiento de gráficos (GPGCU). Uno de ellos, CUDA, una interfaz de programación de aplicaciones (API) patentada de GPGCU desarrollada por Nvidia, es crítico para el aprendizaje profundo (DL), la tecnología que sustenta la mayoría de las aplicaciones de IA.
Hay cuatro tipos de computación paralela, cada uno con sus propios propósitos específicos:
El paralelismo a nivel de bits se basa en una técnica en la que aumenta el tamaño de palabra del procesador y disminuye la cantidad de instrucciones que el procesador debe ejecutar para resolver un problema. Hasta 1986, la arquitectura informática avanzó aumentando el paralelismo a nivel de bits de procesadores de 4 bits a 8 bits, 16 bits, 32 bits y 64 bits, y cada generación superó a la anterior. Quizás el ejemplo más famoso de un avance en el paralelismo de bits fue la Nintendo 64, la primera vez que una aplicación convencional utilizó 64 bits.
El paralelismo a nivel de instrucciones (ILP) es un tipo de computación paralela en el que el procesador elige qué instrucciones ejecutará. En ILP, los procesadores están diseñados para realizar ciertas operaciones simultáneamente para mejorar la optimización de recursos y aumentar el rendimiento.
El paralelismo de tareas es un tipo de computación paralela que paraleliza el código en varios procesadores que ejecutan simultáneamente tareas en los mismos datos. El paralelismo de tareas se utiliza para reducir el tiempo de serie ejecutando tareas simultáneamente; en la canalización, por ejemplo, donde se realiza una serie de tareas en un único conjunto de datos.
Más avanzado que el ILP, el paralelismo a nivel de superpalabras (SLP) es una táctica de vectorización que se utiliza en el código en línea. La vectorización es un proceso de computación paralela que se utiliza para completar múltiples tareas similares a la vez, ahorrando tiempo y recursos. SLP se utiliza para identificar instrucciones escalares que son redundantes en un bloque de código y combinarlas en una sola operación de superpalabra.
Desde blockchain hasta teléfonos inteligentes, consolas de juegos y chatbots, la computación paralela es una parte esencial de muchas de las tecnologías que impulsan nuestro mundo. Estos son algunos ejemplos:
Muchos teléfonos inteligentes dependen del procesamiento paralelo para realizar sus tareas de manera más rápida y eficiente. Por ejemplo, el iPhone 14 tiene una CPU de 6 núcleos y una GPU que potencian su capacidad líder en el mercado para ejecutar 17 billones de tareas por segundo, un nivel de rendimiento impensable utilizando la computación en serie.
La tecnología Blockchain, la tecnología que sustenta las criptomonedas, las máquinas de votación, la atención médica y muchas otras aplicaciones avanzadas de tecnología digital, se basa en la computación paralela para conectar varias computadoras para validar transacciones y entradas. La computación paralela permite que las transacciones en una Blockchain se procesen simultáneamente en lugar de una a la vez, lo que aumenta el rendimiento y lo hace Escalable y eficiente.
Las computadoras portátiles más potentes de la actualidad (MacBooks, ChromeBooks y ThinkPads) utilizan chips con múltiples núcleos de procesamiento, una base del paralelismo. Los ejemplos de procesadores multinúcleo incluyen Intel Core i5 y HP Z8, que permiten a los usuarios editar video en tiempo real, ejecutar gráficos 3D y realizar otras tareas complejas que requieren muchos recursos.
El Internet de las cosas (IoT) se basa en datos recopilados de sensores, que están conectados a Internet. Una vez que se han recopilado esos datos, se requiere computación paralela para analizarlos en busca de insight y ayudar a sistemas complejos, como centrales eléctricas, presas y sistemas de tráfico, a funcionar. La computación en serie tradicional no puede filtrar los datos lo suficientemente rápido como para que IoT funcione, lo que hace que la computación paralela sea crucial para el avance de la tecnología de IoT.
La computación paralela desempeña un papel crítico en el entrenamiento de modelos de machine learning (ML) para aplicaciones de IA, como el reconocimiento facial y el procesamiento de lenguaje natural (PLN). Al realizar operaciones simultáneamente, la computación paralela reduce significativamente el tiempo que lleva entrenar modelos de machine learning (ML) con precisión en los datos.
La computadora que ejecuta el transbordador espacial se basa en cinco computadoras IBM® AP-101 que operan en paralelo para controlar su aviónica y monitorear los datos en tiempo real. Estas potentes máquinas, que también se utilizan en aviones de combate, pueden ejecutar casi 500 000 instrucciones por segundo.
Las supercomputadoras dependen tanto de la computación paralela que a menudo se las llama computadoras paralelas. La supercomputadora American Summit, por ejemplo, procesa 200 cuatrillones de operaciones por segundo para ayudar a los humanos a comprender mejor la física y el entorno natural.2
La suite IBM Spectrum LSF es una plataforma de gestión de carga y programación de trabajos para computación distribuida de alto rendimiento (HPC).
Las soluciones HPC de nube híbrida de IBM ayudan a abordar desafíos a gran escala y de uso intensivo de cómputo y aceleran el tiempo de obtención de insights.
Encuentre una solución de infraestructura en la nube que sea adecuada para las necesidades de su negocio y escale los recursos bajo demanda.