jueves, 31 de octubre de 2013

Mi primer contacto con la programación paralela


Para programar en paralelo se requiere de algunos requisitos en el poder computacional, lo primero obviamente es un multinúcleos: dual core,quad core, etc; pero esas son las mas conocidas.
Para el curso de Algoritmos Paralelos en mi universidad nuestro profesor nos dijo que minimamente necesitábamos una quadcore y por la dificultad del curso era mejor usar una "Máquina Virtual" para evitar poner en riesgo nuestra herramienta de trabajo y aprendizaje NUESTRA COMPUTADORA.
Pues bien la máquina virtual que tengo es una con un sistema operativo Debian y simulando 4 núcleos.

Algo así:


Ahora, ya creada mi máquina virtual y todo instalado correctamente es hora de empezar a programar y como es usual compile mi primer "Hola mundo" en MPI.

El programa se llama hello.c



Mencione MPI, pues bien para esta primera parte del curso usaremos MPI.


¿Qué es MPI?

MPI hace referencia a "Message Passing Interface", algo así como interfaz de paso de mensajes. Este es una librería de funciones (en C) o subrutinas (en Fortran) que se inserta en el código de datos para llevar a cabo la comunicación entre procesos.

¿Cuando usar o no MPI?

MPI debe ser usado en casos como:

-Cuando necesite escribir código portátil
-La necesidad de lograr un alto rendimiento en programación en paralelo; por ejemplo al escribir librerías paralelas.
-Manejas problemas que involucren data irregular o dinámica que no encajen bien en el modelo "data-parallel".

No deberías usar MPI cuando:

-Si se puede usar HPF o un programa paralelo Fortran90.
-Si se pueden usar librerías de más alto nivel(que pueden haber sido escritas usando MPI).
-Si se usa 1 sola computadora con SMP(varios CPUs o cores) podrías usar OpenMP.



Centrándome en la experiencia al inmiscuirme en el mundo de la programación en paralelo encontraba al MPI algo de otro mundo luego ya con el tiempo te das cuenta que es algo así como un "C" un poco diferente, hago esta comparación porque las librerías y todo lo demás esta en C.

Mi primer programa en MPI(o bueno mi primer entendimiento de un programa en MPI no mio):





Estas capturas de pantalla muy bien comentadas explican lo que ocurren en cada linea y las 2 cosas más importantes cuando empieza la paralelización y que se paraleliza.

Gracias


P.D: No olviden visitar esta página para mayor información: http://cc301.domina.pe/


viernes, 4 de octubre de 2013

Parallel Computing for beginners!



What does it mean?

Well.... Wikipedia says:


Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ('in parallel').


In simple words, parallel computing aims to optimize the execution time by dividing the task among multiple computers.


what kind of forms? there are several different forms of parallel computing, for example: bit-level, instruction level, data and task parallelism.. Parallelism has been employed for many years , mainly in high-performance computing, but interest in it has grown lately due to the physical constraints preventing frequency scaling.







Work with others computers could be better, but in some cases this kind of computing worsens the job. Imagine that you want to start a newspaper, what happens first? you have to designate specific tasks for specific persons. So, work with more people give better results.

Now, focus your attention on the case of solving combined operations with friends and imagine the time doing it by yourself. It is worst working with other persons that doing it by yourself because takes more time asking for an answer that operating by yourself.


These are simple examples special for beginners like me.


You can see more details in : http://www.parallella.org/



See you soon!


Lepial