[ Foro de C ]
Programacion en paralelo
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.
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.
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.)