He tenido problemas para aceptar la visión teórica de la complejidad de "eficientemente resuelto por algoritmo paralelo" que es dada por la clase NC :
NC es la clase de problemas que puede resolver un algoritmo paralelo en el tiempo en procesadores con .
Podemos asumir una PRAM .
Mi problema es que esto no parece decir mucho sobre máquinas "reales", es decir, máquinas con una cantidad finita de procesadores. Ahora me dicen que "se sabe" que podemos simular "eficientemente" un algoritmo de procesador procesadores p \ in \ mathbb {N} .
¿Qué significa "eficientemente" aquí? ¿Es este folklore o hay un teorema riguroso que cuantifica la sobrecarga causada por la simulación?
Lo que me temo que sucede es que tengo un problema que tiene un algoritmo secuencial y también un algoritmo paralelo "eficiente" que, cuando se simula en procesadores , también lleva tiempo (que es todo lo que se puede esperar en este nivel de análisis de granularidad si el algoritmo secuencial es asintóticamente óptimo). En este caso, no hay aceleración alguna por lo que podemos ver; de hecho, el algoritmo paralelo simulado puede ser más lento que el algoritmo secuencial. Es decir, realmente estoy buscando declaraciones más precisas que bounds (o una declaración de ausencia de tales resultados).
Respuestas:
Si supone que el número de procesadores está limitado por una constante, tiene razón en que un problema en NC no significa mucho en la práctica. Dado que cualquier algoritmo en una PRAM con k procesadores yt tiempo paralelo puede simularse con una RAM de procesador único en tiempo O ( kt ), el tiempo paralelo y el tiempo secuencial pueden diferir solo en un factor constante si k es una constante.
Sin embargo, si asume que puede preparar una computadora con más procesadores a medida que aumenta el tamaño de entrada, entonces un problema al estar en NC significa que mientras pueda preparar más procesadores, el tiempo de ejecución será "muy corto" o, más precisamente, polylogarithmic en el tamaño de entrada. Si cree que esta suposición no es realista, compárela con la suposición de memoria ilimitada: las computadoras reales solo tienen una cantidad finita de espacio, pero en el estudio de algoritmos y complejidad, casi siempre suponemos que un dispositivo computacional no tiene un nivel superior constante atado al espacio. En la práctica, esto significa que podemos preparar una computadora con más memoria a medida que crece el tamaño de entrada, que es la forma en que usualmente usamos computadoras en el mundo real. NC modela una situación análoga en computación paralela.
fuente
Estoy de acuerdo con usted en que no es la mejor manera de caracterizar algoritmos paralelos eficientes.NC
De hecho, por definición, NC también incluye muchos problemas que no son eficientemente paralelizables. Un ejemplo común es la búsqueda binaria paralela. El problema surge porque la búsqueda binaria paralela tiene una complejidad de tiempo pollogarítmico incluso para . Cualquier algoritmo secuencial que requiera como máximo tiempo logarítmico en el peor de los casos está en N C, independientemente de su viabilidad paralela.p=1 NC
Pero espera, hay más.
algoritmos N C suponen máquinas paralelas con un número polinómico de procesadores para resolver en tiempo pollogarítmico problemas de tamaño moderado. Sin embargo, en la práctica utilizamos máquinas de tamaño moderado (en términos de procesadores) para resolvergrandesproblemas. El número de procesadores tiende a ser subpolinomial, incluso sublineal.NC
Por último, hay problemas en con paralelo sublineal tiempo O ( n ε ) , 0 < ε < 1 .Por lo tanto, estos problemas no pertenecen a N C . Ahora, las funciones sublineales pueden tener un comportamiento asintótico relevante solo para valores prácticamente nulos de n , y en cambio pueden ser mucho menos progresivas para valores prácticos de n . Como ejemplo, √P O(nϵ),0<ϵ<1 NC n n paran≤0.5×109. De ello se deduce que los algoritmos sublineales de tiempo paralelopuedenejecutarse más rápido que losalgoritmosNC.n−−√<lg3n n≤0.5×109 NC
En una de las respuestas, se ha observado que "en la práctica, esto significa que podemos preparar una computadora con más memoria a medida que aumenta el tamaño de entrada, que es la forma en que usualmente usamos computadoras en el mundo real. NC modela una situación análoga en computación paralela ".
Estoy parcialmente de acuerdo con este punto de vista. Compramos una nueva computadora paralela con más memoria cuando una supercomputadora más antigua se retira del servicio también porque los chips DRAM son menos costosos con el tiempo y equilibran un poco la computadora paralela con respecto a sus componentes principales (procesadores, memoria, interconexión, etc.).
Por lo tanto, es cada vez más importante diseñar algoritmos paralelos escalables de memoria, ya que estos son prácticos para grandes problemas.
fuente