Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Reto Intel VI
Mayo 2010
Categoría Preparatorias
Calcular el valor de PI con integración numérica
El programa que se muestra en el Ejemplo 1 calcula el valor más cercano posible a PI mediante
integración numérica empleando la regla del trapecio. Es decir, si tenemos que f(x) = 4 / (1-x2), PI
es el área que hay debajo de esta función desde x=0 hasta x=1.
La regla del trapecio va tomando intervalos entre 0 y 1 donde va calculando el área de cada
intervalo como se muestra en la Figura 1, al final la suma de todas las áreas es el valor de PI/4. El
valor de PI se aproxima a un valor más exacto mientras los intervalos son más pequeños. Para
propósitos de este reto estos intervalos son de 1/100,000,000, como se muestra en el ejemplo que
se muestra en el Ejemplo 1 y esto implica 100,000,000 de cálculos que significan tiempo de
utilización del CPU valor que no debe ser modificado.
Figura 1. Cálculo del área debajo de una función con la regla del trapecio.
0 1
Reto Intel VI
Mayo 2010
Para desarrollar la versión paralela del programa Pi puedes hacerlo mediante hilos de Windows,
OpenMP o Intel Threading Building Blocks. Referencias sobre ello puedes encontrar en:
API de Windows: http://www.codeproject.com/KB/threads/Threads_1.aspx
OpenMP: https://computing.llnl.gov/tutorials/openMP/
Intel Threading Building Blocks
http://www.threadingbuildingblocks.org/documentation.php
#include <stdio.h>
#include <time.h>
long long num_steps = 100000000;
double step;
int main(int argc, char* argv[])
{
clock_t start, stop;
double x, pi, sum=0.0;
int i;
step = 1./(double)num_steps;
start = clock();
for (i=0; i<num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0/(1.+ x*x);
}
pi = sum*step;
stop = clock();
printf("The value of PI is %15.12f\n",pi);
printf("The time to calculate PI was %f seconds\n",((double)(stop - start)/1000.0));
return 0;
}
Ejemplo 1. Pi.cpp. Cálculo de PI mediante integración numérica (regla del trapecio).
Reto Intel VI
Mayo 2010
Editar y compilar un programa en Visual Studio
A continuación se muestra una breve guía para editar y compilar un programa desde Visual Studio
2008. En este caso el ejemplo se basa en el de los números primos por lo que es el nombre que se
usa para los proyectos y archibos, pero este puede usarse con cualquier programa.
1.- Entrar a Visual Studio 2005/2008. En el menú File seleccionar New y después Project.
Reto Intel VI
Mayo 2010
2.- Seleccionar Win32 Console Application y en la casilla Name introducir el nombre que tendrá el
proyecto
Reto Intel VI
Mayo 2010
3.- Seleccionar el botón Next
Reto Intel VI
Mayo 2010
4.- Seleccionar Console Application y Empty Project, terminar presionando el botón Finish.
Reto Intel VI
Mayo 2010
5.- Añadir el archivo fuente. Seleccionar Source Files y presionar el botón derecho del ratón. En el
menú que se muestra a continuación seleccionar Add y posteriormente New Item.
Reto Intel VI
Mayo 2010
6.- Seleccionar archivo: C++ File (.cpp) y en la casilla Name nombrar el archivo
Reto Intel VI
Mayo 2010
7.- Para compilar puede hacerlo presionando <Ctrl><Alt><F7> o seleccionar en los menús Build ->
Rebuild Solution.
Reto Intel VI
Mayo 2010
8.- Para ejecutarlo puede hacerlo presionando <Ctrl><F5> o desde el menú Debug->Start Without
Debugging