Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PIG - Parallel Image and Geometry

Raquel Oliveira
November 01, 2016
39

PIG - Parallel Image and Geometry

Raquel Oliveira

November 01, 2016
Tweet

Transcript

  1. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas PIG - Parallel Image and Geometry Fernanda Isabel Lucas Torres Lu´ ıs Cl´ audio Raquel Oliveira Universidade Federal do Rio Grande do Norte Departamento de Inform´ atica e Matem´ atica Aplicada DIM0437 - Linguagens de Programa¸ c˜ ao: Conceitos e Paradigmas 2016-11-01 1/26
  2. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Roteiro 1 Dom´ ınio de Aplica¸ c˜ ao 2 Caracter´ ısticas Principais 3 Vari´ aveis 4 Tipos 5 Estruturas de Controle 6 Subprogramas 7 M´ odulo 8 Templates 9 Perguntas 2/26
  3. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Problemas em: Geometria Computacional Computa¸ c˜ ao Gr´ afica Processamento de Imagem Geoprocessamento Fatores em comum Uso de t´ ecnicas de ´ algebra linear Necessidade de alto desempenho Possibilidade de paraleliza¸ c˜ ao ( =/= de concorrˆ encia!) 3/26
  4. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas PIG: Parallel Image & Geometry 1 func main () { 2 def v: vec2 = [1, 2]; 3 def w: vec2 = [-2, 1]; 4 5 print("hell{v . w} world\n"); 6 # output: hell0 world 7 } 4/26
  5. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas PIG: Parallel Image & Geometry Compilada Opera¸ c˜ oes vetoriais Opera¸ c˜ oes matricias Suporte a paralelismo 5/26
  6. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Vari´ aveis 1 def m: int; 2 def n: int = 2; 3 def p, q, r: int; 4 5 m = 0; 6 n += 1; 7 p, q, r = 1, 2, 3; 8 p, q = q, p; 9 10 def a, b: int = 0, 1; 11 a, b = b, a + b; 12 13 _, _, n = p, q, r 6/26
  7. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Modificadores Modificadores 1 # constantes 2 def x: const int = 16; 3 def y: const int = x + 14; 4 5 x += 1; # erro 7/26
  8. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Tipos vec vec2 vec3 vec4 mat mat2 mat3 mat4 int bool float 8/26
  9. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Tipos B´ asicos Tipos B´ asicos 1 # inteiros 2 def x, y: int = 1, 2; 3 def z: int; 4 z = x * y + y ^ x - (x / y mod x); 5 6 # operacoes em bits 7 x = (x << z) & !(y >> x ~ z); 8 9 # floats 10 def p, q, r: float = 0.0, 1.0, 2.0; 11 z = p ^ q - 0.5 * r; 9/26
  10. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Tipos B´ asicos Tipos B´ asicos 1 # booleanos 2 def a, b: bool = true , false; 3 a = (a and b) or (not a) or (a xor b); 4 5 # casting 6 p = (x : float ); 7 x, y, z = floor(p), ceil(q), round(r); 10/26
  11. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Tipos Matriciais Tipos matriciais 1 # Single -precision A.X plus Y 2 func out: vec4 = 3 saxpy(a: float , x: vec4 , y: vec4) { 4 # O operador * e sobrecarregado para 5 # float e vec: 6 # 7 # k * [a b c d] = [k*a k*b k*c k*d] 8 # 9 out = a * x; 10 11 # A checagem estatica garante 12 # que as dimensoes sao compativeis: 13 out = out + y; 14 } 11/26
  12. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Tipos Matriciais Tipos matriciais 1 #Refletir vetor em outro vetor 2 func theResult: vec3 = 3 reflect(v: vec3 , normal: vec3) 4 { 5 # Matemagica. 6 # v.normal : produto interno 7 # vec x vec => float 8 theResult = v - 2.0*(v.normal )* normal; 9 } 12/26
  13. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Structs Structs 1 struct point = (x: float , y: float , z: float ); 2 3 def p: point; 4 5 def p: point = (4.0 , 2.0, 1.0); 6 7 p->x = 4.0; 8 p = (4.0, 3.0, 3.0); 13/26
  14. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas if if 1 if x > 0 { 2 x *= 2; 3 } else if x < 0 { 4 x *= -2; 5 } else { 6 x += 1; 7 } 14/26
  15. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas while while 1 while x > 0 { 2 x -= 1; 3 } 15/26
  16. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas for in for in 1 def a : vec2 = [2, 3]; 2 3 for x in a { 4 print("{x} "); 5 } # output: 2 3 6 7 for x in [1,2,4,5] { 8 print("{x} "); 9 } # output: 1 2 4 5 10 11 for i in 1..5 { 12 print("{2*i} "); 13 } # output 2 4 6 8 10 16/26
  17. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas for // for // (for paralelo) 1 def m : mat4; 2 3 for i, j // [0,1,2,3], [0,1,2,3] { 4 # Escreva 1.0 paralelamente 5 # em todas as posicoes de m. 6 m[i,j] = 1.0; 7 } 17/26
  18. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Declara¸ c˜ ao Fun¸ c˜ oes e Procedimentos 1 # funcao 2 func x: int = min(a: int , b: int) { 3 if a <= b { 4 x = a; 5 } else { 6 x = b; 7 } 8 } 9 10 # procedimento 11 func esc(pessoa: string) { 12 print ("fala maldosa sobre {pessoa}"); 13 } 18/26
  19. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Declara¸ c˜ ao Fun¸ c˜ oes e Procedimentos 1 # retorno multiplo 2 func x, y: int = minmax(a: int , b: int) { 3 if a <= b { 4 x = a; 5 y = b; 6 } else { 7 x = b; 8 y = a; 9 } 10 } 19/26
  20. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Chamada Chamada 1 func main () { 2 def x, y: int = 1, 2; 3 4 def z: int = min(x, y) + 4; 5 x, y = minmax(x, y); 6 esc("todo mundo"); 7 } 20/26
  21. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Argumentos Argumentos 1 # modificadores 2 func p(x: int , y: mut int , z: mut ref int) { 3 y += 1; 4 z = x + y; 5 } 6 7 func main () { 8 def a, b, c: int = 1, 2, 3; 9 p(a, b, c); 10 print("a = {a}, b = {b}, c = {c}"); 11 # output: a = 1, b = 2, c = 4 12 } 21/26
  22. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas M´ odulos 1 module nome_do_modulo ; 2 import outro_modulo ; 3 4 def var_interna: int; 5 export def var_externa: float; 6 7 # Tradicionalmente chamado Pa3 ’mayim 8 # Nekudo ’tayim (" dois pontos "), nosso 9 # operador de resolucao de escopo 10 # chama -se Khetz (" seta "). (= 11 var_externa = outro_modulo ->outra_var; 22/26
  23. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas M´ odulos M´ odulos com template 1 module <T1 , T2 > nome_do_modulo ; 2 3 # Supondo que outro_modulo precisa 4 # receber um parametro no template , 5 # e dai passamos T2. 6 import <T2 > outro_modulo ; 7 8 def var_interna : T1; 9 export def var_externa : T2; 10 11 var_externa = outro_modulo ->outra_var; 23/26
  24. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Structs Structs com template 1 struct <T1 ,T2 ,T3 > uma_struct = 2 (a: T1 , b: T2 , c: T3); 3 4 def minha_struct : uma_struct <float ,int ,vec4 >; 24/26
  25. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Fun¸ c˜ oes Fun¸ c˜ oes com template 1 func <T1 ,T2 > x: T1 , y: T2 = 2 minha_func(a: T1 , b: T2) { 3 # ... coisas complicadas aqui ... 4 x, y = a, b; 5 } 6 7 minha_func <float ,float >(0.3 , 0.4); 25/26
  26. Dom´ ınio Linguagem Vari´ aveis Tipos Controle Subprogramas M´ odulo

    Templates Perguntas Documenta¸ c˜ ao e perguntas https://raquel-oliveira.gitbooks.io/pig https://github.com/luisclaudio26/PIGi 26/26