cuda introduccion

16
Dr. José Mejía López Oficina e-mail: [email protected] Sitio Web: http://neel2.fis.puc.cl/cncm/FisCompu/index.html Física Computacional Física Computacional - JML - 2012

Upload: usuario

Post on 26-Sep-2015

28 views

Category:

Documents


0 download

DESCRIPTION

Introduccion a la programacion en cuda

TRANSCRIPT

  • Dr. Jos Meja Lpez

    Oficina

    e-mail: [email protected]

    Sitio Web: http://neel2.fis.puc.cl/cncm/FisCompu/index.html

    Fsica Computacional

    Fsica Computacional - JML - 2012

  • Introduccin

    Fsica Computacional - JML - 2012

    Computers are incredibly fast, accurate, and stupid; humans are incredibly slow, inaccurate, and brilliant; together they are powerful beyond imagination

    Albert Einstein? Leo Cherne?

    Alguien que no ha cometido errores nunca trat de hacer

    algo nuevo

  • Fsica Computacional - JML - 2012

    Naturaleza de la Fsica Computacional - El paradigma cientfico se ha ampliado para incluir la simulacin como una dimensin

    adicional.

    experimento

    sim

    ulac

    in

    - Objetivo: explorar modelos y resolver problemas Profundo entendimiento > de otro modo posible

    - Problemas difciles o complejos Ms all de la solucin analtica Ms all de la capacidad humana

    - Uso de la computadora: Mquina super-calculadora Lab: simulaciones numricas del mundo Palanca de nuestras habilidades intelectuales

  • Fsica Computacional - JML - 2012

    Qu es Fsica Computacional?

    Fsica Aplicaciones

    CC Hardware sofware

    Matemat. tcnicas

    FC

    - Es un tema multidisciplinario de la Ciencia que combina Fsica, Ciencias de la computacin y

    Matemticas.

    - Necesitamos entender las herramientas matemticas y de la CC lo suficientemente bien para resolver

    nuestros problemas correctamente.

    - La Fsica Computacional no solo es un superposicin de estos campos, tambin es un puente entre ellos (contiene elementos propios: DM, MC, ab-initio, etc).

    - Paradigma del curso -> problema-solucin:

    Problema Fsica

    Modelo Discreto, continuo

    Mtodo Numrico, simblico

    Implementacin F90, C, phyton

    Evaluacin Visualizacin, exploracin, anlisis

  • Fsica Computacional - JML - 2012

    - Introduccin a los lenguajes de programacin.

    - Integracin numrica: mtodos estndares y mtodo de Monte Carlo.

    - El Mtodo de Monte Carlo en Fsica.

    - Ecuaciones diferenciales ordinarias.

    - Dinmica Molecular.

    - Algebra lineal y el problema de autovalores.

    - Sistemas Cunticos: DFT

    - Ecuaciones diferenciales parciales: Ecuacin de onda.

    Tpicos del curso

  • Fsica Computacional - JML - 2012

    Textos de Referencia

    - R. H. Landau, M. J. Paez, C. C. Bordeianu; A survey of computational Physics; Princenton University Press; 2008.

    - J. M. Thijssen; Computational Physics; Cambridge University Press; 2003.

    - D. Frenkel, B. Smit; Understanding Molecular Simulation; Academic Press; 2002.

    - D. C. Rapaport; The Art of Molecular Simulation. Cambridge University Press; 2004.

    - H. Gould, J. Tobochnik, W. Christian; An introduction to Computer Simulation Methods; Addison Wesley; 2007.

    - H. P. Langtangen; A primer on scientific programming with python; Springer-Verlag; 2009.

  • Fsica Computacional - JML - 2012

    Evaluacin - Tareas: 20% del curso

    - Proyectos y presentaciones de las mismas (2): 80%

    Reporte de los proyectos - El reporte se debe escribir de manera que pueda ser entendido por otras personas

    quienes no han hecho la tarea, y debe incluir:

    Introduccin

    Breve resumen de la naturaleza del sistema fsico, el mtodo numrico bsico o

    algoritmo, y el inters o cuestiones relevantes

    Mtodo

    Describir el algoritmo y como es implementado en el programa. Algunas veces

    esta explicacin puede ser dado en el programa mismo. Asegurarse de discutir

    cualquier rasgo importante de tu programa.

    Verificacin del programa

    Confirmar que el programa es correcto considerando casos especiales y

    comparando con resultados conocidos.

  • Fsica Computacional - JML - 2012

    Resultados

    Mostrar tus resultados de manera grfica y/o tabular, con discusiones sobre

    ellas, las cuales pueden incluir relaciones cualitativas y cuantitativas entre las

    variables y una estimacin de las precisiones numricas. Cada figura o tabla

    debe tener un caption con informacin competa,

    Conclusiones

    Resumir tus resultados explicarlos en fsica simple si es posible. Tambin dar

    sugerencias para trabajo futuro o posibles extensiones.

  • Fsica Computacional - JML - 2012

    Lenguajes de programacin - Un computador hace exactamente lo que se le dice que haga => obtener el

    suficiente entendimiento del problema

    - Ejemplo, le decimos al computador:

    Calculate area of circle # haz esto computador!

    qu crculo se considera? qu hacer con el rea?

    - Un mejor programa sera

    read radio # dato de entrada calculate area of circle # clculo numrico write area # dato de salida

    La 2 lnea no tiene sentido, hay que implementar un algoritmo (conjunto de reglas que debe seguir el computador)

  • Fsica Computacional - JML - 2012

    - Un mejor programa sera

    read radio # dato de entrada PI = 3.141593 # deifine constante area = PI *radio*radio # Algoritmo write area # dato de salida

    Qu lenguaje utilizamos?

    - FORTRAN, C, C++, usan compiladores para leer todo el programa y traducirlo en lenguaje mquina.

    - Maple, matematica, matlab, traducen cada lnea del programa cuando es entrada.

    - Phyton, java, interpretan el lenguaje en un cdigo byte universal, transportable a cualquier arquitectura.

    Figuras y grficos?

    - Gnuplot, xmgrace, qtiplot (directamente en Debian) - PGPlot (http://www.astro.caltech.edu/~tjp/pgplot/) - SciDavis (http://scidavis.sourceforge.net/) - Matplotlib (http://matplotlib.sourceforge.net/); Vphyton (http://vpython.org/)

  • Fsica Computacional - JML - 2012

    Breve Introduccin al FORTRAN - rea de un crculo:

    PROGRAM area_circle

    implicit none real(kind(1.d0)) :: area, radio, PI ! o real(8)::

    write(6,*)'radio? read(5,*)radio ! dato de entrada PI=3.141593d0 ! constante area=PI*radio**2 ! Calculo del area write(6,*)'area= ',area ! salida

    END PROGRAM area_circle

    bash-3.2$ gfortran area.f90 -o xarea bash-3.2$ bash-3.2$ ./xarea radio? 2 area= 12.566371999999999 bash-3.2$

  • Fsica Computacional - JML - 2012

    - Declaraciones de variables y asignaciones:

    PROGRAM asignaciones implicit none integer :: i, j real (kind=4) :: x ! declara variables de precision simple real (kind=8) :: z, t ! Precision doble complex :: u ! Numeros complejos (kind=4) character (len=4) :: palabra ! (len=4) indica que tiene 4 caracteres logical :: test

    x=3.24e-2 ! asignacion de 3.24 102 z=0.0324d0 ! d0 indica que es doble precision t=0.0324 u=(3.4,2.) ! = 3.4 + 2i palabra=casa ! las comillas identifican las constantes test=.TRUE. write(6,*) x, z, t, u, palabra, test

    END PROGRAM asignaciones

    3.24000008E-02 3.23999999999999982E-002 3.24000008404254913E-002 ( 3.4000001 , 2.0000000 ) casa T

  • Fsica Computacional - JML - 2012

    - Estructuras de decisin: ifthen

    PROGRAM decisiones implicit none real(8) :: x, y

    write(6,*)'numeros x y'; read(5,*)x,y if (y0)then write(6,*)'x es positivo' else write(6,*)'x es negativo' end if if((x>0.and.y>0).or.(x

  • Fsica Computacional - JML - 2012

    - Estructuras de decisin: select case

    PROGRAM casos implicit none integer :: op

    write(6,*)'elija una opcion ; read(5,*)op select case(op) case(1) write(6,*)'op=1' case(2) write(6,*)'op=2' case(3:5) write(6,*)'3

  • Fsica Computacional - JML - 2012

    - Estructuras de repeticin:

    PROGRAM repeticion implicit none integer::i real(8)::x do i=1,10,2 write(6,"(1x,i2,'x 3 = ',i3)")i,i*3 end do do i=10,1,-1 write(6,"(a,i2)")'vamos en el numero i= ',i write(6,"(a)")'dar un numero'; read(5,*)x if (.not.x>=0) then write(6,"(a12)")'x es negativo' cycle !se egresa a la primera linea, incrementando i end if write(6,"('el numero fue ',F10.4)")x if (i.eq.8)then write(6,*)'se alcanzo el numero 8' exit !se sale del bucle end if end do END PROGRAM repeticion

    1x 3 = 3 3x 3 = 9 5x 3 = 15 7x 3 = 21 9x 3 = 27 vamos en el numero 10 dar un numero 2 el numero fue 2.0000 vamos en el numero 9 dar un numero -3 x es negativ vamos en el numero 8 dar un numero 1 el numero fue 1.0000 se alcanzo el numero 5

  • Fsica Computacional - JML - 2012

    - ficheros

    PROGRAM ficheros implicit none integer::i,n real(kind(1.d0))::a,b

    character(len=20)::arch arch='datos.dat' open(unit=1,file=arch,status='unknown') do i=1,10 a=i*10.d0 write(1,"(i4,2x,F10.3)")i,a end do close(1)

    open(unit=1,file=arch,status='old') open(unit=2,file='salida.res',status='unknown') do i=1,5 read(1,*)a,b write(2,*)a+b end do close(1); close(2)

    END PROGRAM ficheros

    bash-3.2$ more datos.dat 1 10.000 2 20.000 3 30.000 4 40.000 5 50.000 6 60.000 7 70.000 8 80.000 9 90.000 10 100.000 bash-3.2$ more salida.res 11.000000000000000 22.000000000000000 33.000000000000000 44.000000000000000 55.000000000000000