Algunos algoritmos son fácilmente divisibles en partes; como por ejemplo, un algoritmo que calcule todos los números primos entre 1 y 100, donde se podría dividir los números originales en subconjuntos y calcular los primos para cada uno de los subconjuntos de los números originales; al final, uniríamos todos los resultados y tendríamos la solución final del algoritmo.
Por otro lado, algunos problemas son difícilmente paralelizables, aunque tengan una estructura recursiva.
Como ejemplo de esto último tendríamos la búsqueda primero en profundidad en un grafo.
Los algoritmos paralelos también necesitan optimizar la comunicación entre diferentes unidades de procesamiento.
Los diseñadores de procesadores paralelos usan buses especiales para que el coste de la comunicación sea pequeño pero siendo el algoritmo paralelo el que decide el volumen del tráfico.