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:
Otros artículos que podría interesarle leer
- Todos (185)
- Bienestar (18)
- Carrera profesional (38)
- Competencias (6)
- Desarrollo (112)
- Diseño (8)
- Diversidad e inclusión (3)
- Eventos (3)
- Historia (15)
- Industrias (6)
- Innovación (38)
- Liderazgo (8)
- Proyectos (23)
Cloud Computing y Transformación Digital e Impacto Social
(5 minutos de lectura)
En los últimos años, hemos sido testigos de una revolución silenciosa que está remodelando fundamentalmente la forma en que vivimos y trabajamos. En el centro de esta transformación está la cloud computing, una innovación tecnológica que trasciende los límites físicos y abre nuevos horizontes de posibilidades. Este texto hablará sobre este tema que está transformando el área TI. ¡Ven a leer!...
Tech en Educación
(9 minutos de lectura)
En el panorama educativo contemporáneo, la tecnología desempeña un papel cada vez más crucial, revolucionando no sólo la forma en que los estudiantes aprenden, sino también la forma en que los educadores enseñan. A medida que nos adaptamos a un mundo conectado digitalmente, están surgiendo nuevas tendencias que prometen transformar aún más la forma en que se diseña e imparte la educación. Venga a leer este texto para conocer las últimas tendencias en tecnología educativa y explorar su impacto en el desarrollo de los estudiantes y la evolución de la enseña...
Desarrollo Ético de Software
(5 minutos de lectura)
Desarrollar software es una actividad compleja que va mucho más allá de la simple codificación. Implica un proceso meticuloso de planificación, diseño, implementación, prueba y mantenimiento para crear sistemas confiables, eficientes y seguros. Sin embargo, además de buscar funcionalidad y rendimiento, los desarrolladores también deben considerar cuidadosamente los aspectos éticos del software que están creando. En este texto hablaremos de ética y responsabilidad a la hora de desarrollar software. ¡Ven a leer!...
Equilibrio Entre Crecimiento Profesional y Personal
(6 minutos de lectura)
En un mundo impulsado por la búsqueda constante del éxito profesional, a menudo nos encontramos inmersos en nuestras carreras, olvidando el equilibrio fundamental entre el crecimiento profesional y personal. A medida que dedicamos horas a codificar, resolver problemas y mejorar nuestras habilidades técnicas, es esencial recordar que nuestro viaje como seres humanos va más allá de las líneas de código. ¡Ven a leer nuestro texto y descubre consejos geniales sobre cómo lograr este equilibrio!...
Cómo Resaltar los Premios del Concurso de Programación en tu CV
(6 minutos de lectura)
En un campo tan dinámico como el desarrollo de software es fundamental destacar entre la multitud. Una forma excepcional de hacerlo es a través del reconocimiento y los premios obtenidos en concursos competitivos de programación. Además de demostrar sus habilidades técnicas superiores, estos premios dan fe de su capacidad para resolver problemas complejos, colaborar como equipo y ofrecer resultados excepcionales bajo presión. Hoy hablaremos de currículum y concursos, ¿te interesa? ¡Ven con nosotros!...
Código Abierto y Colaboración
(5 minutos de lectura)
Si está listo para comenzar a explorar el mundo del código abierto, tenga en cuenta que encontrará muchas oportunidades y desafíos de aprendizaje. La colaboración está en el centro de este entorno, impulsa la innovación e influye en la dirección de la tecnología. ¡Ven a leer nuestro texto para saber más sobre este tema!...
¿Le gustaría que su artículo o video sea publicado en el blog y las redes sociales de beecrowd? Si está interesado, envíenos un correo electrónico con el asunto “BLOG” a [email protected] y le daremos más detalles sobre el proceso y los requisitos previos para que su artículo / video sea publicado en nuestros canales
Sede
Rua Funchal, 538
Cj. 24
Vila Olímpia
04551-060
São Paulo, SP
Brasil