¿Cuál es la actitud común en la computación paralela?

Una vez mordido dos veces tímido.

Cualquiera que use sistemas paralelos tendría una mala experiencia antes de que pueda obtener algún beneficio. Sólo para nombrar unos pocos:

  • No se puede compilar con mpicc.
  • Error de tiempo de ejecución en referencia indefinida.
  • El envío del trabajo falló.
  • Fallo de segmentación. Mensaje MPI truncado. Desbordamiento de pila. Tuberia rota.
  • Los algoritmos solo funcionan con tamaños de problemas específicos [matemática] 2 ^ N [/ matemática] y recuento de procesadores [matemática] 2 ^ k [/ matemática]. Establecer el tamaño del problema al siguiente [matemático] 2 ^ N [/ matemático] más cercano explota la memoria. Y es demasiado generalizar el tamaño del problema y el recuento de procesadores.
  • Resultados aleatorios Uno no creería que [matemáticas] a + b [/ matemáticas] no es [matemáticas] b + a [/ matemáticas].
  • Funciona muy lentamente que la versión en serie. ¡¡¡Bravo!!!

Y aquellos que nunca usan sistemas paralelos, heredarían la mala experiencia de todos los demás.

El tiempo es dinero. No todos tienen grandes problemas en la mano que requieren computación paralela para justificar el dinero por el momento. No es necesario que todos eviten la computación paralela.

He estado disfrutando el uso de sistemas paralelos para mi trabajo de desarrollo, como compilar kernel de Linux, Paraview, codificación de audio / video, ejecutar casos de prueba, etc.

El genio puede hacer lo contrario. Por ejemplo, el problema suma 1 a 100, realmente haré las sumas una por una de 1 a 100. Pero un genio lo hizo de otra manera con [matemáticas] N (N + 1) / 2 [/ matemáticas]. Si eres un genio que puede mejorar el algoritmo mucho mejor, anímate.

La computación paralela no se trata solo de la paralelización, se trata de mejorar el rendimiento, ya sea tiempo o energía por todos los medios.

Hay una curva de aprendizaje con concurrencia, va en etapas:

1) Wow, concurrencia. ¡Guay! ¡Voy a usar esto en todas partes!
2) ¿Por qué se bloquea al azar?
3) Tengo semáforos y mutexes en todas partes, todavía se bloquea, pero ahora también tengo dealocks.
4) Sí, uso concurrencia. Solo hay un objeto compartido en todo mi programa, y ​​los datos solo pueden ser propiedad de un hilo a la vez.
5) Esto no necesita concurrencia.

La computación paralela es un subcampo especializado de computación. Si bien la fuente original de computación, la computación numérica es ahora una esquina del campo en lugar del paradigma dominante. Una gran cantidad de computación está involucrada con el control en lugar de la computación. La cantidad de paralelismo involucrado en tomar un pedido en una tienda web, calcular el flujo de combustible para un motor a reacción, mostrar una página en un teléfono celular, enrutar un paquete a través de una red grande, dar una cotización de seguro, registrar los datos de un avión volador, es minuto

Entonces, si quieres entrar en ese subcampo, buena suerte. No tiene absolutamente nada de malo, y allí se hace mucho trabajo interesante. Pero no tendrá mucho de qué hablar con la gran mayoría de las personas que trabajan en software.