Introducción a los Sistemas Paralelos (libro)
Federico Gonzalez
Universidad Nacional de Tierra del Fuego, Argentina
Este libro presenta una introducción progresiva a los sistemas paralelos, orientada a estudiantes universitarios de informática y áreas afines. El recorrido parte de las distinciones fundamentales entre computación secuencial, concurrencia, paralelismo y computación distribuida, para luego abordar las arquitecturas, modelos de memoria y métricas que permiten analizar el rendimiento de una implementación paralela. Se estudian conceptos como speed-up, eficiencia, escalamiento fuerte y débil, leyes de Amdahl y Gustafson, jerarquía de memoria, localidad, false sharing y arquitecturas NUMA. Sobre esa base conceptual, el texto introduce modelos de programación paralela, entre ellos coordinador-trabajadores, divide and conquer, pipelining, MapReduce y actores, junto con APIs clásicas como Pthreads, OpenMP y MPI. La segunda parte del libro adopta Python como lenguaje de trabajo para explorar estrategias prácticas de paralelización en CPU mediante hilos, procesos, pools, executors y compilación JIT con Numba. Luego se desarrolla la reformulación del cálculo sobre arreglos y tensores mediante vectorización, broadcasting, NumPy y PyTorch, antes de avanzar hacia la computación sobre GPU mediante CUDA, Numba y operaciones tensoriales de alto nivel. El objetivo general es ofrecer una base conceptual y práctica para comprender cómo se descomponen problemas, cómo se distribuye el trabajo, qué costos introduce la coordinación y bajo qué condiciones el paralelismo produce mejoras reales de rendimiento.