Programación Paralela

(5 minutos de lectura) Autora: Jessica Dagostini - beecrowd La programación paralela es la capacidad de realizar el procesamiento de una misma actividad en diferentes recursos de cómputo al mismo tiempo, reduciendo así su tiempo de ejecución

Programación Paralela

Autora: Jessica Dagostini – beecrowd

(5 minutos de lectura)


Probablemente ya te hayas preguntado por qué los procesadores de portátiles y teléfonos móviles ahora vienen con dual, quad ou octa core (núcleos), ¿verdad? Después de todo, ¿cómo me beneficiará esta cantidad diferente de núcleos? La respuesta más simple es: rendimiento. Sin embargo, eso depende.

Nos estamos acercando cada vez más al límite de la Ley de Moore, que determina la tasa de crecimiento del número de transistores(1) en el mismo chip de procesamiento. Cada salto que dimos en su arquitectura trajo, para el consumidor final (ya sea desarrollador o no), una gran ganancia de rendimiento en los procesos realizados por la computadora. Sin embargo, como se mencionó, estamos llegando al límite máximo de optimizaciones en un solo hardware de procesamiento. Esto abrió otras posibilidades. Es en este contexto que se destaca la programación paralela.

Ya bien estudiado allá por los años 60, muchos años antes de que llegáramos al límite de la arquitectura, este paradigma de programación ha ido ganando espacio y protagonismo en los últimos años. Pero ¿qué es la programación paralela de todos modos? ¿Están dos programadores codificando juntos el mismo programa? ¿O incluso dos programadores compartiendo el mismo teclado? Creo que no... :) 

La programación paralela es la capacidad de realizar el procesamiento de una misma actividad en diferentes recursos de cómputo al mismo tiempo, reduciendo así su tiempo de ejecución. Piense, por ejemplo, en el ejemplo de la receta de torta tradicional. En esta receta, no hay necesidad de una secuencia exacta de adición de ingredientes, lo que nos permite agregarlos al recipiente para mezclar en cualquier orden. Para hacer esta torta necesitamos 2 huevos, 2 tazas de harina de trigo, 1 taza de leche, 1 taza de azúcar y 2 cucharadas de chocolate en polvo. Además de ti, vinieron tres personas más para ayudarte a preparar la receta y les pedirás que te ayuden. Inmediatamente, te das cuenta de que no tienes que estar solo en la recolección de todos los ingredientes y pides su ayuda. Los cuatro seréis responsables de un ingrediente cada uno y, por tanto, buscaréis los mismos ingredientes al mismo tiempo, es decir, de forma paralela. Después de eso, para mezclar, no necesita a sus ayudantes y usted mismo realizará la acción. Pero recuerda que necesitas engrasar el molde para agregar la mezcla y también necesitas encender el horno para precalentar. ¿Qué haces? Vuelve a pedir ayuda para que, mientras mezclas los ingredientes, dos de tus ayudantes se encarguen de alguna de estas dos nuevas actividades. Al final, te das cuenta de que tomó mucho menos tiempo hacer esta torta con ayuda que solo. ¡Este pensamiento es la base misma de la programación paralela!

¿Recuerdas los muchos núcleos presentes en nuestros dispositivos que mencionamos al principio del texto? ¡Pueden ser nuestros ayudantes de recetas de tortas para ejecutar un programa de computadora! Por lo tanto, al programar software en paralelo, el desarrollador necesita identificar regiones del código que se pueden ejecutar en paralelo (como recolectar los ingredientes para la torta) y delegar tales actividades para que cada uno de los núcleos haga este trabajo en paralelo y entregue a ti, que te encargarás del resto. Pero el programador necesita decirle a su software que realmente haga uso de todo este paralelismo disponible. Al igual que si no hubieras delegado actividades para que tus ayudantes realicen la receta de la torta, se habrían quedado quietos, así que hazlo con los múltiples núcleos en tu dispositivo. El desarrollador del software en ejecución debe tener funciones delegadas a estos recursos paralelos para que realmente obtengamos una mejora de rendimiento de estos muchos núcleos.

Cabe mencionar que esta paralelización no solo se restringe a los núcleos de un solo procesador. Podemos realizar computación paralela utilizando diferentes computadoras completas, agregadas por una conexión de alta velocidad, que son lo que llamamos clusters de computadoras. En estos clusters podemos hacer uso no solo de los núcleos paralelos sino de toda la estructura de este otro nodo de cómputo, como memoria, disco, etc. Y por más lejos que parezca de su realidad, ¡está más cerca de lo que piensa! El software de pronóstico del tiempo, por ejemplo, prácticamente no existiría sin la computación paralela (o incluso existiría, pero no sabríamos el pronóstico del tiempo de hoy hasta el próximo mes). Cada vez más, tenemos la necesidad de un alto procesamiento para realizar cálculos complejos y, por lo tanto, tenemos resultados de simulación que impactan en nuestras vidas, como el pronóstico del tiempo, de manera oportuna para su uso. En estos casos, nuestros núcleos paralelos por sí solos no son suficientes y necesitamos un gran conglomerado de computadoras para realizar estos cálculos en paralelo, que es lo que llamamos supercomputadoras. Pero ese tema es para el próximo texto.


¿Te gustó nuestro contenido? Así que síganos en las redes sociales para estar al tanto de más información y siga nuestro blog.


(1) La Ley de Moore dicta que la cantidad de componentes en un chip de procesamiento se duplica cada 18 meses. La mayoría de los procesadores modernos pueden tener más de mil millones de transistores en una sola placa de silicio. Cuantos más transistores coloque en una sola placa, más potencia de procesamiento tendrá.

Jessica Dagostini es Principal System Architect en beecrowd. Tiene una Maestría en Ciencias de la Computación de la Universidad Federal de Rio Grande do Sul y ha tenido la oportunidad de participar en Maratones de Programación alrededor de América Latina.

Comparte este artículo en tus redes sociales:
Califica este artículo:
[yasr_visitor_votes size=”medium”]

CONTENIDO

Nuestros artículos más recientes
Lea sobre las últimas tendencias en tecnología
Blog 09-07
La realidad virtual y la realidad aumentada están redefiniendo múltiples industrias y...
Thumbnail Unlocking LATAM
La demanda de talento tecnológico en EE. UU. y Europa sigue aumentando,...
Blog 04-07
La programación competitiva es una excelente herramienta para desarrollar habilidades sociales esenciales...

Extra, extra!

Assine nossa newsletter

Fique sempre atualizado com as novidades em tecnologia, transformação digital, mercado de trabalho e oportunidades de carreira

¿Le gustaría hablar con un representante de ventas?

Interesado en: