View previous topic :: View next topic |
¿Cómo aconsejarías paralelizar una aplicación? |
OpenMP |
|
0% |
[ 0 ] |
MPI |
|
0% |
[ 0 ] |
MPI entre los nodos y OpenMP en los nodos |
|
100% |
[ 1 ] |
UPC |
|
0% |
[ 0 ] |
OpenMP sobre FDSM |
|
0% |
[ 0 ] |
|
Total Votes : 1 |
|
Author |
Message |
Palmax Maverick Guru
Joined: 14 Oct 2004 Posts: 339
|
Posted: Mon Feb 09, 2009 1:20 pm Post subject: [HPC] OpenMP, MPI y otras soluciones ("abierto") |
|
|
Buenos días
Me dispongo a meterme en el mundo de OpenMP, MPI e hilos para realizar cálculos "científicos". Como sé que alguno sabe algo del tema me he dicho de poner un tema en el foro sobre ello, tanto para unificar esfuerzos como para motivar a nuevas personas a utilizar estas herramientas.
OpenMP es una forma _muy_ sencilla de paralelizar programas en máquinas con 2 o más núcleos. Consiste en hacer hilos en los for de una forma muy sencilla. Proyectos como blender lo utilizan, y hasta yo he hecho alguna prueba jejeje.
MPI es la forma más clásica y potente para entornos de clusters, pero requiere un estudio previo del programa. Ahora mismo voy a meterme con ello.
Otras soluciones más avanzadas podrían ser UPC (unified parallel C) o OpenMP sobre FDSM.
OpenMP se puede aprender con la ayuda de la wikipedia y tanto UPC como OpenMP sobre FDSM pudieran estar un poco verdes aún, por lo que ahora voy a centrarme en estudiar MPI.
La pregunta es ¿conocéis algún tutorial bueno sobre open mpi en español? Yo he visto:
http://muxia.des.udc.es/wordpress/?p=6
http://es.wikipedia.org/wiki/MPI
Y un par de ppt.
¿Por dónde recomendaríais empezar a un novato?
Un saludo
Palmax |
|
Back to top |
|
|
Palmax Maverick Guru
Joined: 14 Oct 2004 Posts: 339
|
Posted: Tue Feb 10, 2009 10:11 pm Post subject: ¿Nadie? |
|
|
¿Realmente nadie ha utilizado ni MPI ni OpenMP ni nada parecido? Me parece ... ¡sorprendente! |
|
Back to top |
|
|
Palmax Maverick Guru
Joined: 14 Oct 2004 Posts: 339
|
Posted: Sun Feb 22, 2009 2:36 pm Post subject: OpenMP es genial |
|
|
Buenas
Sólo deciros que OpenMP es genial, con una directiva le dices al compilador como quieres que te escriba los hilos. Pasos:
0) gcc -g -O programa.c -o programa.bin
1) valgrind --tool=cachegrind ./programa.bin
2) kcachegrind cachegrind.out.pid (donde pid es el pid que tuvo, si sólo tienes un cachegrind.out.69 será ese).
3) Ves en que for o fors pierdes el tiempo
4) Le pones la cabecera, que si la hacer condicional te sirve tanto con compiladores con openMP o sin él.
5) Escribes la/s directiva/s al compilador, una línea delante del for
Por muy poquito tiempo tienes los hilos . Obviamente hay matices, como que se pueden hacer planificaciones entre los hilos (existen algunas automáticas) o cómo se reducen los datos. Pero eso da igual, para un primer programa.
Prueba de su sencillez y potencia podría ser que ya existen muchos proyectos que lo usan => http://gentoo-portage.com/Search?search=&use=openmp
Para más información y ejemplos => http://en.wikipedia.org/wiki/OpenMP.
Espero que os haya interesado.
Un saludo
Palmax |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|