cuda introduccion
DESCRIPTION
Introduccion a la programacion en cudaTRANSCRIPT
-
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