[ Foro de C ]

Programacion en paralelo

23-Jul-2008 23:57
Santiago Ibez
2 Respuestas

Buenos días a todos. Escribo para preguntar sobre la programacion en paralelo. En el trabajo tengo un procesador core 2 quad. Para poder aprovechar toda la capacidad del procesador quiero empezar a programar en paralelo. Siempre en C. Gracias por su ayuda.
Santiago.

24-Jul-2008 18:56
Nacho Cabanes (+32)

Generalmente estarás un poco atado de manos, porque la última palabra sobre el reparto de tareas la tiene el sistema operativo, por lo que, aunque tu programa intente usar paralelismo, quizá el resultado no sea el que tú esperas, por ejemplo si el sistema decide enviar al mismo núcleo del procesador dos procesos distintos, que tú habías planificado para que trabajaran en paralelo.

Aun así, a nivel de programación tienes básicamente dos alternativas para "pedir paralelismo" (insisto, ninguna te garantiza paralelismo real):

- Que varios fragmentos de tu programa se ejecuten en paralelo, ayudándote de hilos (threads).

- Que tu programa lance varios procesos, los cuales se ejecuten en paralelo y se coordinen al terminar su tarea. Para eso existen librerías de programación paralela bastante consolidadas, como PVM y MPI.

No son las únicas opciones. Hay alternativas de menor nivel todavía, a nivel de paralelismo de microinstrucción, pero supone que domines el funcionamiento interno de la pipeline del procesador y qué tipo de instrucciones puede ejecutar en paralelo, para que intentes reorganizar tu código en forma óptima, pero eso es moderadamente factible en ensamblador, y bastante más difícil en C.

Como alternativas de más alto nivel, está el paralelismo a nivel de programa, que queda fuera de tu alcance, y es totalmente gestionado por el sistema operativo.


24-Jul-2008 19:52
Santiago Ibez

Estimado Nacho, te agradezco tu respuesta, veloz y clara. Lastima que siempre termine dependiendo de la voluntad del sistema operativo. Igual voy a intentar leer acerca de estas librerías MPI. Hasta la próxima.
Santiago.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)