jueves, 5 de diciembre de 2013

Parallel Processing

Parallel processing is the ability to carry out multiple operations or tasks simultaneously. The term is used in the contexts of both human cognition, particularly in the ability of the brain to simultaneously process incoming stimuli, and in parallel computing by machines.


Parallel processing in computers:


Parallel computing is the simultaneous use of more than CPU or processor core to execute a program or multiple computational threads. Ideally, parallel processing makes programs run faster because there are more engines(CPUS or Cores) running it. In practice, it is often difficult to divide a program in such a way that separate CPUs or cores can execute different portions without interfering with each other.

Most computers have just one CPU, but some models have several, and multi-core processor chips are becoming  the norm. There are even computers with thousands of CPUs.

Parallel Computing in the World

The near future will see the increased use of parallel computing technologies at all levels of mainstream computing. Computing hardware increasingly employs parallel techniques to improve computing power for the solution of large scale and computer intensive applications. Cluster and grid technologies make possible high speed computing facilities at vastly reduce costs.


 Tianhe-2

It's a 33.86 petaflops supercomputer located in Guangzhou, China. It was developed by the team of 1300 scientists and engineers.


It is the world's fastest supercomputer according to the TOP500 list for June and November 2013.




domingo, 1 de diciembre de 2013

OPENMP

Hi!

Open Multi-Processing is an application programming interface that supports multi-plataform shared memory multiprocessing programming in C,C++ and fortran on most processor architectures and operating systems, including Solaris, AIX,HP-UX, GNU/Linux, Mac OS X and windows plataforms. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.



 In this picture we can see a process using OPENMP. In this case all 4 CPUs work, but only one is the master CPU ..

Simpson and Montecarlo


Hi!
Before showing the results of my work in parallel will talk a little about Simpson and montecarlo's method  because I needed to know to solve it : Homework

Homero
Simpson's rule:

In numerical analysis, Simpson's rule is a method for numerical integration, the numerical approximation of definite intregals.
Let the following approximation:

\(\small \displaystyle \int_{a}^{b}f(x) \approx \frac{b-a}{6}[f(a) +4f(\frac{a+b}{2}) + f(b)]\)


We assume a cuadratic function f(x) :


How can we obtain a cuadratic function?

Lagrange Interpolation:

With this the curve approximates a parabola P(x):
$$\small \displaystyle P(x)= f(a)\frac{(x-c)(x-b)}{(a-c)(a-b)} + f(c)\frac{(x-a)(x-b)}{(c-a)(c-b)} + f(b)\frac{(x-a)(x-c)}{(b-a)(b-c)}$$

If i integrate P(x), obtain: \(\displaystyle \int_{a}^{b}P(x) = \frac{b-a}{6}[f(a) +4f(\frac{a+b}{2}) + f(b)]\)

The error in this approximation is proportional to: \(\displaystyle \frac{1}{90}(\frac{b-a}{2})^{5}\)


Monte Carlo method:

Monte Carlo methods are especially useful for simulating systems with many coupled degrees of freedom, such as fluids, disordered materials, strongly coupled solids, and cellular structures.



The result of the last Homework is: 1.881185e+009
                                                                                                        

viernes, 1 de noviembre de 2013

Mi primer laboratorio en MPI

Mi primer laboratorio calificado fue una tarea domiciliaria que consistía en calcular la cantidad de energía que se generaba en un determinado tiempo.

Sean 4 dimensiones: x,y,z,t.
Hay un toro de tamaño variable en el tiempo:

( R(t) - sqrt(x2+y2) )2 +z2 =r(t)2

R(t): distancia del centro del tubo del toro al centro del toro (0,0,0)

r(t): radio del tubo

Dentro del toro se genera energía, con una potencia de P(x,y,z,t) Watts (=Joules/s)

Diga cuanta energía se genera desde el tiempo 0 al tiempo 10 para los siguientes R,r,P:

Bajo las condiciones de:

R(t)=100+t; r(t)=(t-1)2+1; P(x,y,z,t)=abs(x)




Publicaré la solución en la siguiente entrada pero hasta entonces les daré la oportunidad de intentarlo a los que estén interesados.



Recuerden usar el método Montecarlo para resolverlo, que trabaja con números aleatorios y contabiliza si caen dentro del espacio a tratar y si caen fuera simplemente no son tomados en cuenta esos puntos.

Espero esto haya sido de su interés.








Gracias, Saludos.





P.D: Recuerden visitar :http://cc301.domina.pe/







Paper

Bueno mi primera presentación de un paper, en la cual debía hacer una explicación detallada y concisa sobre este no fue del todo un gran triunfo mas bien fue una situación un poco confusa para mi pues a pesar de haber leído y releído aun ahora tengo ciertas dudas sobre algunos términos.

Homework


Aquí les dejo mi primera tarea para que la lean y si me ayudan con sus comentarios les agradecería bastante.
Aun estoy empezando y sé que será un camino que demandará de mucho esfuerzo pero como siempre digo ahí esta la magia.


Paper:

http://www.logos.ic.i.u-tokyo.ac.jp/~h_saito/publications/hpdc2007.pdf


Se me olvido decirles que fue un trabajo grupal lo que demando tiempo compartido y momentos gratos y algunos algo frustantes u.u  pero eso es parte de todo proyecto :) .


La idea era debatir y analizar juntos:








Pero lo que ocurrio fue esto:








Gracias por tu visita





P.D: No te olvides de visitar http://cc301.domina.pe/

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

martes, 17 de septiembre de 2013

Aprendiendo

El tema de hoy data de lo importante que es nunca dejar de aprender, debemos encontrar aquello que nos apasiona nos llena y libera ala vez.  Sino ¿Para qué vivimos?
La problematica de la paralelizacion:

Como siempre hemos escuchado que si quieres hacer algo bien haslo tu mismo pero...




Si bien es cierto es muy dificil confiar en el criterio o habilidad del resto,pero aveces no hay de otra, aveces solo debemos ceder un poco y aprender más.

Ahi radica la importancia de paralelizar, pero y ¿Qué es eso? y ¿Cómo o Cuando lo uso? eso es un mucho mas complicado, pero tranquilos yo misma aun nose bien. Asi que iremos descubriendo mas sobre este mundo juntos.


Atte. Lepial