Este documento describe los conceptos básicos de los algoritmos paralelos. Existen dos tipos principales de arquitecturas de computación paralela: memoria compartida y memoria distribuida. El diseño de algoritmos paralelos implica identificar oportunidades para la paralelización utilizando técnicas como la división y conquista, la descomposición de datos y la programación dinámica paralela. La implementación de algoritmos paralelos presenta desafíos únicos relacionados con la coordinación y comunicación de datos entre procesadores