Buenas, soy nuevo en la comunidad y me pasé revisando y buscando algo que me ayude a entender un poco mejor la programación paralela o distribuida, de modo que pueda hacer mis programas funcionar en todos los núcleos (procesadores) de un ordenador.
Ya busque mucho en google y sin resultado, muchos papers, proyectos y teoría pero nada práctico.
Me gustaría ver algunos ejemplos de como se aplica esto, que librerías necesito para empezar, como es que funciona y cuales son las ventajas y desventajas que obtengo al usar este tipo de programación.
Si hay algún tema de este tipo, es posible que se me haya pasado por alto, agradecería me brinden el enlace y si en caso yo encuentro algo navegando en la red lo publicaré aquí para ayudar al resto de gente.
Saludos y gracias por su tiempo.
Tan dificil es un buscar un poco en google? https://www.google.com/search?client=ubuntu&channel=fs&q=c%2B%2B+varios+procesadores&ie=utf-8&oe=utf-8#sclient=psy-ab&hl=es&client=ubuntu&hs=M6L&channel=fs&source=hp&q=c%2B%2B+SMP&pbx=1&oq=c%2B%2B+SMP&aq=f&aqi=g-L1g-sL1g-vL2&aql=&gs_sm=e&gs_upl=18569l20535l2l20743l7l5l0l1l1l0l419l1449l0.1.1.2.1l6l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=3082a67125ca6cda&biw=1914&bih=961 (https://www.google.com/search?client=ubuntu&channel=fs&q=c%2B%2B+varios+procesadores&ie=utf-8&oe=utf-8#sclient=psy-ab&hl=es&client=ubuntu&hs=M6L&channel=fs&source=hp&q=c%2B%2B+SMP&pbx=1&oq=c%2B%2B+SMP&aq=f&aqi=g-L1g-sL1g-vL2&aql=&gs_sm=e&gs_upl=18569l20535l2l20743l7l5l0l1l1l0l419l1449l0.1.1.2.1l6l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=3082a67125ca6cda&biw=1914&bih=961)
Por si Google con su ansia de conseguir la personalización de las busquedas consiguiera que a ti no te salieran los mismos enlaces... las primeras paginas que salen no estan nada mal.
1: http://tldp.org/HOWTO/SMP-HOWTO-3.html (http://tldp.org/HOWTO/SMP-HOWTO-3.html)
2: http://www.faqs.org/docs/Linux-HOWTO/SMP-HOWTO.html (http://www.faqs.org/docs/Linux-HOWTO/SMP-HOWTO.html)
Si no es esto lo que buscabas, mil perdones xDD
Un saludo!
Gracias por la respuesta, pero no es lo que busco.
Si me dejo entender, hay una forma de volver la programación en C++ al paralelo, para que de este modo distribuya la ejecución de distintas tareas en diversos nucleos, por ejemplo:
Tengo un código que aplica 2 for, uno dentro del otro(anidado).
for(int i=0; i < x; i++)
{
for(int j=0; j < y; j++)
{
if(i == j)
return x+y;
}
}
Entonces lo que hace esto es dividir el primer for a un nucleo y el for anidado en otro nucleo, lo cual permite doble ejecución en la mitad del tiempo. Se que para esto hay que usar algunas librerias y declaraciones pero la verdad no he encontrado nada de ejemplos acerca de esto, mucha teoria y poca práctica y/o ejemplos.
Si alguien tuviera conocimientos acerca de este metodo de programación y me brindara su ayuda le estaria eternamente agradecido.
Saludos.
Te refieres a hilos?
Cita de: CobraCY en 13 Noviembre 2011, 00:38 AMEntonces lo que hace esto es dividir el primer for a un nucleo y el for anidado en otro nucleo
El problema con el ejemplo es: lo que ejecuta el bucle externo es el bucle interno. Para que fuera posible realizar el proceso en paralelo deberia ser:
for (int i = 0; i < x; i++){
// Algun proceso basado en i ...
}
for (int j = 0; j < y; j++){
// Algun proceso basado en j ...
}
Informacion en Wikipedia: Parallel computing (http://en.wikipedia.org/wiki/Parallel_computing#Parallel_programming_languages)
Una de las APIs: OpenMP (http://en.wikipedia.org/wiki/OpenMP)
Un saludo
exacto rir3760, es por eso que busco algunos ejemplos acerca de esto, donde pueda ver como aplicarlo y desarrollar software de esta forma, pues como sabemos los ordenadores tienen cada vez más núcleos y haces que tu software trabaje solo en 1 estás desperdiciando potencial de ordenador, así que me gustaría información de como aplicar este método en un lenguaje como C++.
Saludos.
Para memoria compartida, averigua sobre Threads ( pthreads o std::thread por ejemplo ), OpenMP, Cilk, Cilk++ . Y averigua sobre algoritmos lock-free.
Para entornos distribuidos averigua sobre MPI, Erlang y design patterns para estos, como MapReduce.
gracias :) ;-) ahora me pondré a investigar, igual agradezco más respuestas :D...
Saludos.