Os modelos de programação paralela...
|
|
- Lívia Osório da Conceição
- 8 Há anos
- Visualizações:
Transcrição
1 Programação Paralela e Hierarquia de Memória Nicolas Maillard Roteiro Qual é o problema? Soluções tradicionais para programação paralela MPI Posix Threads OpenMP Soluções emergentes UPC Fortress, Chapel, Titanium, etc... O problema COMO DESCREVER o PARALELISMO num programa? 1
2 O que se quer de um modelo de programação? Um modelo de programação paralela Precisa ser expressivo: em geral, complexo. Abrange muitos parâmetros. deve levar a uma implementação do algoritmo. Precisa abstrair os fenômenos para capturar as caraterísticas gerais i.e. ser genérico! Precisa possibilitar desempenho bom. i.e. poder levar em consideração a arquitetura. Qual modelo de hardware? Os modelos de programação paralela... Não existe um modelo universal para programação paralela! Existem vários modelos para vários tipos de máquinas e vários tipos de programas; processos leves memória compartilhada. SMPs, CPUS multicores... Processos comunicantes troca de mensagem Memória distribuída Paralelismo de dados Owner Compute Rule Single Program Multiple Data Paralelismo de laços Influência de trabalhos em Compiladores Dificuldade para extração automática do paralelismo Paralelismo funcional / Divisão e Conquista paralela Templates para programação paralela Os resultados mais importantes foram obtidos até agora com modelos de memória compartilhada. Limitados em escalabilidade! Modelos de máquina Desconsiderar as comunicações (PRAM) Funciona para máquinas com memória compartilhada Funciona para processadores Multicore. Considerar uma máquina estática e homogênea, com rede perfeita (e.g. latência = 0) Considerar uma máquina estática homogênea, com rede que sofre de latência/vazão/contenção (LogP) Funciona para um cluster Considerar uma máquina dinâmica (Grid)... Ninguém sabe fazer. 2
3 Modelo de programa vs. Modelo de máquina RMI/RPC Java Processos comunicantes Threads Modelo de programa OpenMP Posix Threads Cilk PVM/MPI Satin Modelo de máquina Mem. compartilhada Mem. distribuída Message-Passing Interface (Não perder muito tempo!) Posix Threads int int pthread_create (( pthread_t *thr, *thr, const pthread_attr_t *attr; *attr; void*( *start_routine)(void *), *), void void *arg); pthread_t thr ; variável Identificador Atributos Função Ponteiro p/ parâmetros status Uma thread é uma estrutura de dados tipo pthread_t 3
4 Exemplo de criação de threads #include <pthread.h> int g; void do_it_1(void *arg) { int i, n= *arg; for(i=0; i < n; i++) g = i; void do_it_2(void *arg) { int i, n= *arg; for(i=0; i < n; i++) printf( %d\n, g); int main( int argc, char **argv) { pthread_t th1, th2; int n = 10; pthread_create(&th1, NULL, do_it_1, &N); pthread_create(&th2, NULL, do_it_2, &N);... Primitivas relacionadas com término (cont.) void voidpthread_join (( pthread_t thread, void void **status); pthread_join (t2) pthread_join (t3) T 1 pthread_exit (status) T 2 pthread_exit ( status ) T 3 Válido apenas para threads com atributo undetached (joinable): é o default! int int pthread_detach (pthread_t thread); Exemplo de espera por threads #include <pthread.h> int g; void do_it_1(void *arg) { int i, n= *(int *)arg; for(i=0; i < n; i++) g = i; void do_it_2(void *arg) { int i, n= *(int *)arg; for(i=0; i < n; i++) printf( %d\n, g); int main( int argc, char *argv) { pthread_t th1, th2; int n = 10; pthread_create(&th1, NULL, do_it_1, &n); pthread_create(&th2, NULL, do_it_2, &n);... pthread_join(th1, NULL); pthread_join(th2, NULL); 4
5 Algumas outras primitivas... pthread_attr_init ((); ); pthread_attr_setdetachstate (); (); pthread_attr_getdatechstate (); (); pthread_attr_setinheritsched (); (); pthread_attr_getinheritsched (); (); pthread_attr_setschedparam(); pthread_attr_getschedparam (); (); pthread_attr_setschedpolicy (); (); pthread_attr_getschedpolicy (); (); pthread_attr_setscope (); (); pthread_attr_getscope (); (); pthread_attr_setstackaddr (); (); pthread_attr_getstackaddr (); (); pthread_attr_setstacksize (); (); pthread_attr_destroy (); (); The problem with Threads... Thread é uma noção de Sis. Op. Gerenciamento de recursos de HW Posix (ou outras soluções) não fornece um modelo de programação paralela limpo. Programação com threads é complexa; Fácil de cometer erros (deadlocks) É difícil achar os erros!!!!! Ler The trouble with Threads. Lee (Berkeley), IEEE Computer, vol. 36, no. 5, May 2006, pp OpenMP (Não perder muito tempo) Idéia central: deixa o compilador se virar para mapear as iterações de laços em threads. Memória compartilhada Paralelismo de laços Compilador. 5
6 Outras abordagens Paralelismo funcional descreve as tarefas o que executam, quais dados acessam. sincroniza as tarefas explicitamente (sync), ou implicitamente (através dos acessos aos dados). Cria o paralelismo durante a execução Paralelismo baseado num Vetor Global Particionado GPAs SPMD + acesso a dois níveis de memória. Paralelismo Funcional: Cilk Projeto do MIT - Blumofe, Leiserson. começou em 1994, ainda atual. leva a programas altamente eficientes cilkchess 1996! Descreve tarefas (tasks) as tarefas acessam variáveis compartilhadas, pode-se disparar tarefas recursivamente gera programas paralelos de tipo Fork/Join. Restringe o modelo de programação! Implementação para memória distribuída... Complicado! Exemplo de programa Cilk cilk int fib (int n) { if (n < 2) return n; else { int x, y; x = spawn fib (n-1); y = spawn fib (n-2); sync; return (x+y); Tirando as palavras chave, recupera-se um programa seqüencial. cilk marca o procedimento como sendo potencialmente executado em paralelo. spawn dispara a execução assíncrona do procedimento. sync sincroniza as threads de execução 6
7 Acessos concorrentes na memória compartilhada cilk int foo (void) { int x = 0, y; spawn bar(&x); y = x + 1; sync; return (y); cilk void bar (int *px) { printf("%d", *px + 1); return; cilk int foo (void) { int x = 0; spawn bar(&x); x = x + 1; sync; return (x); cilk void bar (int *px) { *px = *px + 1; return; Okay! Problema! Cilk - modelo de programação Cilk suporta o modelo chamado strict parallel computation. Mais ou menos um Divisão & Conquista Grande vantagem: pode-se comprovar que a execução executa com tempo: T p = T 1 /p + T * Como? Escalonamento das tarefas com Work-Stealing. Unified Parallel C Paralelismo baseado num Vetor Global Particionado Projeto que começou nos anos 2000 Berkeley Mais uma extensão de C... Programação SPMD: fluxos de execução se distribuem o trabalho Trabalho intensivo em nível do compilador. Diferença grande com OpenMP: modo de acessar a memória UPC provê uma memória compartilhada distribuída 7
8 Exemplo de programa UPC (K. Yelick) #include <upc.h> #include <stdio.h> main() { printf("thread %d of %d: hello UPCworld\n, MYTHREAD, THREADS); Example: Monte Carlo Pi Calculation (K. Yelick) Estimate Pi by throwing darts at a unit square Calculate percentage that fall in the unit circle Area of square = r 2 = 1 Area of circle quadrant = ¼ * π r 2 = π/4 Randomly throw darts at x,y positions If x 2 + y 2 < 1, then point is inside circle Compute ratio: # points inside / # points total π = 4*ratio r =1 Pi in UPC (K. Yelick) Independent estimates of pi: main(int argc, char **argv) { int i, hits, trials = 0; double pi; Each thread gets its own copy of these variables if (argc!= 2)trials = ; else trials = atoi(argv[1]); Each thread can use input arguments srand(mythread*17); for (i=0; i < trials; i++) hits += hit(); pi = 4.0*hits/trials; printf("pi estimated to %f.", pi); Initialize random in math library Each thread calls hit separately 8
9 Helper Code for Pi in UPC (K. Yelick) Required includes: #include <stdio.h> #include <math.h> #include <upc.h> Function to throw dart and calculate where it hits: int hit(){ int const rand_max = 0xFFFFFF; double x = ((double) rand()) / RAND_MAX; double y = ((double) rand()) / RAND_MAX; if ((x*x + y*y) <= 1.0) { return(1); else { return(0); Acessos na memória Variáveis normais são privadas Declara-se variáveis compartilhadas com a palavra chave shared Pi in UPC: Shared Memory Style Parallel computing of pi, but with a bug shared int hits; main(int argc, char **argv) { int i, my_trials = 0; int trials = atoi(argv[1]); shared variable to record hits divide work up evenly my_trials = (trials + THREADS - 1)/THREADS; srand(mythread*17); for (i=0; i < my_trials; i++) hits += hit(); accumulate hits upc_barrier; if (MYTHREAD == 0) { printf("pi estimated to %f.", 4.0*hits/trials); What is the problem with this program? 9
10 Shared Arrays Are Cyclic By Default Shared scalars always live in thread 0 Shared arrays are spread over the threads Shared array elements are spread across the threads shared int x[threads] /* 1 element per thread */ shared int y[3][threads] /* 3 elements per thread */ shared int z[3][3] /* 2 or 3 elements per thread */ In the pictures below, assume THREADS = 4 Blue elts have affinity to thread 0 Think of linearized x C array, then map in round-robin y z As a 2D array, y is logically blocked by columns z is not Pi in UPC: Shared Array Version Alternative fix to the race condition Have each thread update a separate counter: But do it in a shared array Have one thread compute sum shared int all_hits [THREADS]; main(int argc, char **argv) { declarations an initialization code omitted for (i=0; i < my_trials; i++) all_hits[mythread] += hit(); upc_barrier; if (MYTHREAD == 0) { all_hits is shared by all processors, just as hits was update element with local affinity for (i=0; i < THREADS; i++) hits += all_hits[i]; printf("pi estimated to %f.", 4.0*hits/trials); UPC Pointers Where does the pointer point? Where does the pointer reside? Private Shared Local PP (p1) SP (p2) Shared PS (p3) SS (p4) int *p1; /* private pointer to local memory */ shared int *p2; /* private pointer to shared space */ int *shared p3; /* shared pointer to local memory */ shared int *shared p4; /* shared pointer to shared space */ Shared to private is not recommended. 10
11 Common Uses for UPC Pointer Types int *p1; These pointers are fast (just like C pointers) Use to access local data in part of code performing local work Often cast a pointer-to-shared to one of these to get faster access to shared data that is local shared int *p2; Use to refer to remote data Larger and slower due to test-for-local + possible communication int *shared p3; Not recommended shared int *shared p4; Use to build shared linked structures, e.g., a linked list forall & shared arrays If this code were doing nearest neighbor averaging (3pt stencil) the cyclic layout would be the worst possible layout. Instead, want a blocked layout Vector addition example can be rewritten as follows using a blocked layout #define N 100*THREADS shared int [*] v1[n], v2[n], sum[n]; void main() { int i; upc_forall(i=0; i<n; i++; &sum[i]) sum[i]=v1[i]+v2[i]; Affinity All non-array objects have affinity with thread zero. Array layouts are controlled by layout specifiers: Empty (cyclic layout) [*] (blocked layout) [0] or [] (indefinite layout, all on 1 thread) [b] or [b1][b2] [bn] = [b1*b2* bn] (fixed block size) The affinity of an array element is defined in terms of: block size, a compile-time constant and THREADS. Element i has affinity with thread (i / block_size) % THREADS In 2D and higher, linearize the elements as in a C representation, and then use above mapping 11
12 MFlops per Thread UPC Matrix Vector Multiplication Code Matrix-vector multiplication with matrix stored by rows (Contrived example: problems size is PxP) shared [THREADS] int a[threads][threads]; shared int b[threads], c[threads]; void main (void) { int i, j, l; upc_forall( i = 0 ; i < THREADS ; i++; i) { c[i] = 0; for ( l= 0 ; l< THREADS ; l++) c[i] += a[i][l]*b[l]; NAS FT Variants Performance Summary MFlops per Thread Best MFlop rates for all NAS FT Benchmark versions Best NAS Fortran/MPI 1000 Best MPI Best (always NAS Slabs) Fortran/MPI Best UPC Best (always MPIPencils) Best UPC Tflops Myrinet 64 Myrinet 64 InfiniBand 256 InfiniBand 256 Elan3 256 Elan3 256 Elan3 512 Elan3 512 Elan4 256 Elan4 256 Elan4 512 Elan4 512 Joint work with Chris Bell, Rajesh Nishtala, Dan Bonachea UPC HPL Performance GFlop/s X1 Linpack Performance MPI/HPL UPC GFlop/s Opteron Cluster Linpack Performance MPI/HPL UPC 50 GFlop/s Altix Linpack Performance MPI/HPL 40 UPC 20 MPI HPL numbers from HPCC database Large scaling: 2.2 TFlops on 512p, 4.4 TFlops on 1024p (Thunder) 0 60 X1/64 X1/128 0 Opt/64 Comparison to ScaLAPACK on an Altix, a 2 x 4 process grid ScaLAPACK (block size 64) GFlop/s (tried several block sizes) UPC LU (block size 256) GFlop/s, (block size 64) GFlop/s n = on a 4x4 process grid ScaLAPACK GFlop/s (block size = 64) UPC Gflop/s (block size = 200) Joint work with Parry Husbands 0 Alt/32 12
13 Outras APIs de programação paralela Fortress: proposta da SUN para uma nova linguagem paralela, OO, alto-nível (script?), que inclui tratamento de arrays distribuídos. Herdado de HPF. Chapel: proposta da CRAY para uma nova linguagem paralela, OO, alto-nível (script?), que inclui tratamento de arrays distribuídos. Herdado de HPF. Titanium: equivalente do UPC, mas em Java. Tendências... Hoje, OpenMP / MPI são a referência para PP em produção alternativa (?): threads Posix. A comunidade de Compiladores apoia muito GPAs (UPC, Chapel, Fortress...) simplicidade de uso devido ao espaço de endereçamento global, desempenho. A comunidade de Processamento de Alto Desempenho defende muito MPI. A comunidade de Processamento Distribuído defende muito Java RMI. Para usar a hierarquia de memória... Basicamente, não tem nada. MPI: esquece. No sentido de deixa o núcleo se virar com processos pesados. Threads Posix. Pode usar chamadas de sistema, mas será que se quer fazer isso? OpenMP: nada. GPAs: tem o conceito de dois níveis de memória. Idéia: acrescentar OpenMP com diretivas para uso de acessos NUMA? 13
Sistemas Operacionais II
Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Da teoria à prática... (Processos, threads, mutex, semáforos, variáveis de condição e monitores) Aula 07 Fluxos de controle para programação
Leia maisSistemas Operacionais I
UFRJ IM - DCC Sistemas Operacionais I Unidade II - Threads 24/04/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Threads Processos Threads Conceituação Descrição e Imagem de uma Thread Tipos de thread
Leia maisCOMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0
COMPUTAÇÃO PARALELA uma visão geral Guilherme Galante v.2.0 Guilherme Galante Bacharel em Informática Unioeste (2003) Mestre em Ciência da Computação UFRGS (2006) Professor Assistente do curso de Informática/Ciência
Leia maisOO Engenharia Eletrônica
OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à Multithreading. Introdução à Multithreading: execução concorrente de tarefas. Exemplos usando a biblioteca pthread que é de acordo
Leia maisProgramação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 11 CUDA Parte 2 N. Cardoso & P. Bicudo Programação em
Leia maisMochila Binária com OpenMP
UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TÉCNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO Mochila Binária com OpenMP Cícero Augusto de Lara Pahins, Cristiano Reis dos Santos. Professora: Profª Andrea Schwertner
Leia maisProgramação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 12 CUDA Parte 3 N. Cardoso & P. Bicudo Programação em
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura
Leia maisCapítulo 8 Arquitetura de Computadores Paralelos
Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da
Leia maisProgramação com Posix Threads
9 Programação com Posix Threads Revisão: Data: 11-03-2016 Cap. 9 1/6 Programação multi-threaded com Pthreads 9.1. O que é uma thread? Um processo represente a execução pelo sistema operativo dum programa.
Leia maisProcessos e Threads (partes I e II)
Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa
Leia maisHPF & UPC. Modelos de programação PGAS. Paulo Matias. Seminários de Arquiteturas Avançadas de Computadores, Universidade de São Paulo
vs & Modelos de programação PGAS 1 1 Instituto de Física de São Carlos Universidade de São Paulo Seminários de Arquiteturas Avançadas de Computadores, 2010 & vs Semelhanças Diferenças PGAS - Partitioned
Leia maisInfra-Estrutura de Software. Introdução. (cont.)
Infra-Estrutura de Software Introdução (cont.) O que vimos Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como
Leia maisUm processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:
Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar
Leia maisCapítulo 2. Charm++ 16
2 Charm++ O Charm++ é uma linguagem orientada a objetos para programação paralela baseada em C++ (34). Ela possui uma biblioteca de execução para suporte a computação paralela que se chama Kernel do Charm
Leia mais1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Leia maisThreads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads
Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Threads Atividade 3 Threads em Ambiente LINUX Objetivo Estudo e testes com a biblioteca pthreads Threads Como vimos em
Leia maisArquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França
Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisArquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens
Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI/LMCC - 4º/5º Ano Passagem de Mensagens João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Novembro 2004 Passagem
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 07 Arquitetura de Sistemas Operacionais Prof. Maxwell Anderson www.maxwellanderson.com.br Introdução Conceitos já vistos em aulas anteriores: Definição de Sistemas Operacionais
Leia maisLCAD. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES.
ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Tópico 20 janeiro 27 janeiro 3 fev 10 fev 17 fev 24 fev 3 março Paradigma de Paralelismo
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisProgramação Paralela e Distribuída (DCC/UFRJ)
Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória
Leia maisAlocação Dinâmica e Transparente de Computadores Ociosos em Java
Alocação Dinâmica e Transparente de Computadores Ociosos em Java Márcia Cristina Cera, Rodrigo Righi e Marcelo Pasin {cera, rodrigor, pasin}@inf.ufsm.br Universidade Federal de Santa Maria - UFSM Laboratório
Leia maisINF 1620 P1-10/04/02 Questão 1 Nome:
INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,
Leia maisIntrodução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração: 1945-1955
O que vimos Infraestrutura de Software Introdução (cont.) Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma
Leia maisProgramação Paralela e Concorrente
Linguagens para Programação Paralela PGAS 2016 Linguagens de Programação Paralelas paralelismo de dados (data-parallel) GAS e PGAS orientação a processos memória compartilhada troca de mensagens Paralelismo
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia maisÁREA DE CONCENTRAÇÃO EM SISTEMAS E CONTROLE - PG-EEC/S
INSTITUTO TECNOLÓGICO DE AERONÁUTICA CURSO DE PÓS-GRADUAÇÃO EM ENGENHARIA ELETRÔNICA E COMPUTAÇÃO DIVISÃO DE ENGENHARIA ELETRÔNICA - IEE ÁREA DE CONCENTRAÇÃO EM SISTEMAS E CONTROLE - PG-EEC/S EA-254/2007
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.
Leia maisProgramação em Memória Compartilhada com OpenMP
Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br
Leia maisConcorrência e Paralelismo
Concorrência e Paralelismo mleal@inf.puc-rio.br 1 Programação Concorrente e Paralela Na programação sequencial todas as instruções de um programa são executadas através de uma única linha de execução Na
Leia maisProgramação Estruturada I
Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:
Leia maisFerramentas para Programação em Processadores Multi-Core
Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Programação multithread Prática
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisslide 0 Algoritmos Paralelos
slide 0 Algoritmos Paralelos Slide 2 Demanda por Velocidade Computational Demanda contínua por maior rapidez computational das máquinas que as atualmente disponíveis. As áreas que exigem maior rapidez
Leia maisProgramação Sistemas
Programação Sistemas Fios de Execução Programação de Sistemas Threads : 1/28 Porquê o paralelismo? (1) 1. Crescentes necessidades de computação têm sido satisfeitas com aumento do número de transístores
Leia maisESTUDO DE CASO WINDOWS VISTA
ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado
Leia maisSistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br
Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a
Leia maisProgramação Concorrente
+ XV Jornada de Cursos CITi Programação Concorrente Aula 1 Benito Fernandes Fernando Castor João Paulo Oliveira Weslley Torres + Suposições básicas Conhecimento básico sobre Programação Orientada a Objetos
Leia maisTipo de Dados em Linguagem C
Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa
Leia maisTipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
Leia maisLinguagem de Programação III
Clique para editar o estilo do subtítulo mestre Linguagem de Programação III Histórico Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Comparação com Java Histórico Desenvolvido por
Leia maisOracle Grid Engine. Thiago Marques Soares. Pós-Graduação em Modelagem Computacional Universidade Federal de Juiz de Fora. 8 de abril de 2015
Oracle Grid Engine Thiago Marques Soares Pós-Graduação em Modelagem Computacional Universidade Federal de Juiz de Fora 8 de abril de 2015 Thiago Marques Soares Algoritmos e E.D. 8 de abril de 2015 1 /
Leia maisSistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias
Sistemas Operacionais Microsoft Windows R Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias Histórico Início da década de 80 MS-DOS (vai evoluindo, mas sem nunca deixar de ser um SO orientado à linha
Leia maisSua resposta deve conter entre 50 a 100 palavras, incluindo o exemplo.
MT-1 Explique como efeitos colaterais podem levar a comportamentos indesejados em um programa. Apresente um exemplo. Sua resposta deve conter entre 50 a 100 palavras, incluindo o exemplo. Esboço de resposta:
Leia maisALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES
ALGORÍTMOS PARALELOS (Aula 2) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas
Leia maisNtrip Detalhes de Implementação do Protocolo
Ntrip Rogério Takeshi Oyama Milton Hirokazu Shimabukuro Presidente Prudente SP, 05/11/2010 Tópicos Visão geral internet Aplicação Cliente Servidor HTTP Ntrip Threads RTCM Código desenvolvido Internet -
Leia maisGrupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais
Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:
Leia maisResumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software
Resumo até aqui Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma máquina estendida abstrações SO como um
Leia maisSIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)
SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver
Leia maisDesenvolvimento OO com Java Orientação a objetos básica
Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Leia maisPOSIX Threads. Walter Fetter Lages.
POSIX Threads Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter
Leia maisSimulação de um catálogo espectrofotométrico III ABC do método de Monte Carlo. Laerte Sodré Jr. Fevereiro, 2011
Simulação de um catálogo espectrofotométrico III ABC do método de Monte Carlo Laerte Sodré Jr. Fevereiro, 2011 O começo: População e Amostra População: uma coleção completa de objetos (pessoas, animais,
Leia maisNa Aula Anterior... O Conceito de Threads
GSI018 Sistemas Operacionais 12/09/2016 Na Aula Anterior... Nesta Aula Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Comunicação entre Processos Pipes;
Leia maisapt-get install openssh-client (Debian) yum install openssh-clents (Fedora) slapt-get install openssh (Slackware)
Capítulo 1 O CLUSTER Acessando o Cluster O cluster pode ser acessado através de SSH. A partir do *UNIX A maioria dps sistemas unix já oferece um cliente ssh (openssh) na instalação padrão. Caso use uma
Leia maisParalelização de Simuladores de Hardware Descritos em SystemC
Paralelização de Simuladores de Hardware Descritos em SystemC 18 de maio de 2011 Roteiro Motivação Introdução à SLDL SystemC O Escalonador SystemC Simulação Paralela baseada em Eventos Discretos Suporte
Leia maisTrabalhando com Processos e Threads em Ambiente LINUX
Objetivo Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Processo/Threads Atividade 3 Trabalhando com Processos e Threads em Ambiente LINUX 1.Trabalhar com comandos
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisPROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com
PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisOrientação a Objetos com Java
Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações
Leia maisDefinindo melhor alguns conceitos
Definindo melhor alguns conceitos Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema. Processamento Distribuído: processamento
Leia maisFBV - Linguagem de Programação II. Um pouco sobre Java
FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base
Leia maisThreads Aula 04 2 Quadrimestre
BC1518 - Sistemas Operacionais Threads Aula 04 2 Quadrimestre de 2010 Prof. Marcelo Z. do Nascimento Email: marcelo.nascimento@ufabc.edu.br Roteiro Threads: Visão Geral Benefícios Tipos Modelos de multithread
Leia maisExercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento
1/5 Exercício 1 Um sistema de segurança militar, usado num submarino nuclear, controla o acesso de usuários a três subsistemas (armamento, navegação e comunicações) através da digitação do login do usuário
Leia maisALGORÍTMOS PARALELOS LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES
ALGORÍTMOS PARALELOS Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas de Sistemas
Leia maisParte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE
Produto Escalar com MPI-2 (C++) Aula Sistemas Distribuídos Prof. Dr. Marcelo Facio Palin profpalin@gmail.com 1 1 O que é Paralelismo? Conceitos Paralelismo é uma técnica usada em tarefas grandes e complexas
Leia maisMulti-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores
Multi-processamento Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores Arquitecturas MIMD de memória distribuída Massive Parallel Computers Sistemas distribuídos Ainda
Leia maisEstudo Qualitativo e Quantitativo de Linguagens Paralelas para Arquiteturas Multicore
Estudo Qualitativo e Quantitativo de Linguagens Paralelas para Arquiteturas Multicore Título do capítulo Mst. Raffael B. Schemmer André L. Tibola Junior F. Barros Prof. Mst. Julio C. S. Anjos Prof. Dr.
Leia maisLinguagem de Programação I
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Exemplo: Explorar Templates e Exceções Incrementar com o uso de STL 2 Crie uma função verificarpalindromo()
Leia maisGABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios
CURSO - TADS TURMA 2008.1 2 PERÍODO 3 MÓDULO AVALIAÇÃO MP2 DATA 02/10/2008 SISTEMAS OPERACIONAIS 2008/2 GABARITO COMENTADO SISTEMAS OPERACIONAIS PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida,
Leia mais2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Leia maisResumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.
Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática
Leia maisProgramação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação Paralela com Troca de Mensagens Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Modelo de programa MPI Comunicação em MPI Comunicadores Mensagens Comunicação ponto-a-ponto Comunicação coletiva
Leia maisBásico, Ferramentas e o Primeiro Programa em Qt
Conteúdo 1 Básico, Ferramentas e o Primeiro Programa em Qt 3 1.1 Primeiro Programa.......................... 3 1.1.1 Compilando o programa................... 4 1.2 Layouts................................
Leia maisÉ a associação de mais de um fluxo de execução em um único processo.
Profa. Rita Rodorigo Threads Um processo é uma abstração que reúne uma série de atributos como espaço de endereçamento descritores de arquivos abertos, quotas, etc. Um processo possui ainda uma área de
Leia mais1. Discute as vantagens e desvantagens dum sistema de memória paginada, indicando também a importância do sistema dispôr duma memória cache.
Frequência II, 3 de Junho de 2011 Grupo A: Gestão de Memória (7 Valores) 1. Discute as vantagens e desvantagens dum sistema de memória paginada, indicando também a importância do sistema dispôr duma memória
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisMÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS
MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS 1. ATIVIDADE 01 Verificar a criação de um processo filho (que imprime de 51 a 100) que rodará concorrentemente com o processo pai (que imprime de 1 a 50)
Leia maisAvaliação do Uso de Xen em Ambientes de Computação de Alto Desempenho
Avaliação do Uso de Xen em Ambientes de Computação de Alto Desempenho Márcio Parise Boufleur Guilherme Piegas Koslovski Andrea Schwertner Charão LSC - Laboratório de Sistemas de Computação UFSM - Universidade
Leia maisSistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com
Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32
Leia maisControle de granularidade de tarefas em OpenMP
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MÁRCIO DE OLIVEIRA DA SILVA Controle de granularidade de tarefas em OpenMP Trabalho de Conclusão
Leia maisPthreads. O que são threads? Mario João Junior. Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional.
Pthreads Mario João Junior O que são threads? Uma thread é um fluxo de execução de instruções que pode ser escalonado pelo sistema operacional. O que são threads? No UNIX, uma thread: Existe no interior
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisSlides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.
Slides_Java_1!"#$!" $ % & $ Sistemas Informáticos I, 2005/2006 ( Java source code Compile javac Java bytecode Run java Output:!"#) %& Name of program. Must be the same as name of file.!"#$!"$ % & $ Where
Leia maisIntrodução a Computação
Introdução a Computação Aula 02 Introdução a Linguagem C Edirlei Soares de Lima Lógica de Programação Lógica de Programação é a técnica de criar sequências lógicas de ações para
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 01 Fundamentos de Computadores Sumário : Conceitos básicos: computador,
Leia mais15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido
PARTE III: Java e OO - detalhes Membros de classe e instâncias Pacotes Visibilidade Classes aninhadas Membros de classe e de instância De classe Static Método não necessita de objeto para ser chamado.
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisExercício de Revisão Linguagem C
Exercício de Revisão Linguagem C * Baseado no material do curso: PET Engenharia de Computação - UFES Responda às questões a seguir, selecionando a alternativa mais apropriada dentre aquelas existentes.
Leia mais