¿Cómo reducir los resultados de complejidad paralela a muchos núcleos constantemente?


20

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 O(logcn) en procesadores con .p(n)O(nk)c,kN

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} .O(nk)pN

¿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).O(nk)pO(nk)O


Teorema de Brent?
cic

¿Quieres decir ? Si es así, esto (afaik) solo es aplicable en ciertas circunstancias y tampoco permite traducir de inmediato los tiempos de ejecución. O si lo hace, por favor explique en una respuesta. Tp<Wp+D
Raphael

NC responde a la pregunta "¿es posible intercambiar más hardware por menos tiempo de ejecución?" Es posible que desee restringirse al hardware constante y esto es similar a restringirse a la memoria constante, un mejor modelo de algunos problemas. Para un uso práctico, vea los sumadores de lookhead de carry, más hardware para que la adición de bits se realice en O ( N ) . NO(N)
Programador

Respuestas:


13

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.


1
1) Sí, el paralelismo constante en muchos núcleos solo puede producir una aceleración constante. Eso es inherente y tristemente oculto en los términos La (interesante) pregunta es: ¿puedo obtener una aceleración (óptima) k , o solo k / 2 , o k - 1 ? 2) Si bien la suposición de memoria infinita puede justificarse por la disponibilidad de gran cantidad de RAM (y, técnicamente, puede agregar el disco duro), esto no es generalmente cierto para los procesadores. Las máquinas típicas (personales) tienen 16 o menos núcleos en la actualidad. En otras palabras, puede utilizar resultados "normales" hasta tamaños de problemas relevantes, muchos resultados paralelos solo hasta n 20 .Okk/2k1n20
Raphael

44
@Raphael: La pregunta de si cierto problema pertenece a NC o no no modela su pregunta. No estoy diciendo que tu pregunta no sea interesante; Solo digo que NC no es la clase de complejidad adecuada para modelar eso.
Tsuyoshi Ito

Estoy realmente feliz de escuchar eso; Sin embargo, una persona afirma lo contrario. No necesariamente con NC sino con resultados teóricos de complejidad en general. ¿Cómo es con otras clases?
Raphael

Una corrección: un problema al estar en Carolina del Norte significa que el tiempo de ejecución es pollogarítmico si el número de procesadores es un polinomio suficientemente grande en el tamaño de entrada. En el escenario posiblemente más realista donde el número de procesadores es un polinomio fijo como , o una función no constante más lenta comoO(logn), la membresía en NC no implica nada formalmente. O(n)O(logn)
JeffE

@JeffE: Eso no es una corrección. Solo escribí "preparar más procesadores" sin dar su significado riguroso (porque pensé que hacerlo oscurecería el punto).
Tsuyoshi Ito

10

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=1NC

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, PO(nϵ),0<ϵ<1NCnnparan0.5×109. De ello se deduce que los algoritmos sublineales de tiempo paralelopuedenejecutarse más rápido que losalgoritmosNC.n<lg3nn0.5×109NC

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.).

pnp

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.

n3n

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.