Historias
Slashboxes
Comentarios
 

Login Barrapunto

Login

[ Crear nueva cuenta ]

mig21 (7781)

mig21
  reversethis-{moc.liamg} {ta} {pb12gim}
https://twitter.com/yapw

Hola, soy Miguel. Algo que pueda ser relevante aquí... Uhmm... Me gusta escribir en mi bitácora de BP [barrapunto.com] y en su clon en blogspot: Yet Another Programming Weblog [blogspot.com]
Me gustaría que Barrapunto fuese un sitio con más discusiones técnicas y trato de hacer lo que está en mi mano. De todos modos, también me gusta leer flames ;)

No creo que te interese, pero en Lecturas aleatorias [blogspot.com] dejo registro de los libros que voy leyendo...

Esta es toda mi información de usuario :)

Down Kill Up Publicidad

Bitácora de mig21 (7781)

Martes, 25 de Enero 2005

Programación funcional implícitamente paralela

08:52h.
Tecnología
Hace poco comentaba Draco por aquí que el rendimiento iba a dejar de ser gratis, por los límites de la frecuencia de los procesadores. Para paliar este problema los fabricantes de micros se han decantado por tecnologías multicore, con lo que, al menos en principio, se le pasaba la pelota a los programadores/diseñadores, forzándoles a paralelizar su código para sacarles todo el rendimiento a esas arquitecturas.

Otra opción es que la paralelización sea implícita, que el lenguaje paralelize transparentemente las tareas y de como resultado una mejora de rendimiento sin el aumento de esfuerzo del programador. Esto ahora es ciencia-ficción en su aplicación práctica diaria, pero ¿se puede conseguir?

Vía Lambda the Ultimate me he encontrado con un debate en la lista de Haskell sobre este tema, aunque no demasiado optimista en general: "Implicit parallel functional programming". Se parte de la facilidad que en principio dan los lenguajes funcionales para paralelizar las tareas y se pregunta ¿es la hora de ese tipo de lenguajes? Un resumen, para mi clarificador,sobre el debate:

First, there is a claim that functional languages facilitate parallel execution, which is undeniably true if the implementation is something like that of Haskell (no assignment statements mean no memory contention, etc.).

Then there is the claim that it is difficult (if not impossible) to analyze a piece of code and parallelize it optimally automatically, which is a point that was conceded long ago.

Third, there is the issue of whether "reasonable" parallelization can be obtained, and the answer to this problem is that it has been done before, and it can be done again. The open question is whether or not the parallelization thus achieved is sufficiently "good" in some sense.

Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Yo me apunto.

    (Puntos:1)
    por Tei (4535) el Martes, 25 Enero de 2005, 14:11h (#430613)
    ( Última bitácora: Viernes, 03 Febrero de 2012, 15:18h )
    A mi si me das una compilacion especial de PERL, en la que map y otras funciones se ejecuta en paralelo, con pequeñas pero importancites diferencias con el PERL normal, sobretodo mucha mayor velocidad, pues me pasaria a ese PERL-X, y lo mismo para un C++X y otros. Osea, no sera por ganas, y seguro que hay gente deseando escribir esos lenguajes.
    Lo que tambien quiero esplicitamente es reciclar lo que ya se, a ser posible :D

  • He oido ultimamente la palabra "paralelización" con mucha alegría. Todos sabemos que hay cosas que no se pueden paralelizar.

    scanf("%d",a);
    x=a+3;
    y=x+x;

    Y ahora que me digan como hacer que el resultado de y salga a la vez que el de x, que me lo digan.....estoy escuchando......

    En pruebas que hice algunos años en laboratio, algoritmos muy paralelizables lograban realizar las tareas en un 75-80% menos de tiempo que un algoritmo secuencial. Pero como os he dicho, eran algoritmos muy paralelizables, en algoritmos aleatorios, quedaba reducido el tiempo de ejecución en torno a un 20-30%, poniendo una capacidad hardware de paralelizacin infinita (nada de 4 cpus, todas las que nos diera la gana). Así que bueno,si el experimento fue mas o menos aproximado, cuando ya parezca que no den mas de si los micros, aún podemos arañarles un 30% mas.
    Un 30% mas no es despreciable, pero no es la octava maravilla del mundo, o al menos eso creo, os imaginais que desde los tiempos del 8086, cada año los micros hubiesen sido un 30% mas rapidos, me parece que todavía andaríamos por el 386. Además es una solución finita, cuando tengamos el procesador mas rápido, diremos "un 30% mas y se acabó"

    He oido campanas sobre la computación cuántica, no se de que va, pero todos hemos oido cosas como que si un fotón, lo pones a correr mucho mucho (mas allá de la velocidad de la luz), llega al destino antes de que se pusiera a correr, ¿os parece suficientemente rápido?A mi sí. Esto que nos puede parecer un absurdo hoy, quizá no lo sea dentro de 15 años y tengamos una fuente para seguir mejorando las prestaciones....

    Muzaraque