PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamanho: px
Começar a partir da página:

Download "PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1"

Transcrição

1 PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 DUTRA, Evandro Rogério Fruhling 2 ; VARINI, Andre Luis 2 ; CANAL, Ana Paula 2 1 Trabalho de Iniciação Científica _UNIFRA 2 Ciência da Computação do Centro Universitário Franciscano (UNIFRA), Santa Maria, RS, Brasil RESUMO Nos primórdios da computação a programação para GPU - Graphics Processing Unit era considerada muito complexa e por este motivo inviável. A fabricante de placas gráficas NVIDIA foi pioneira no desenvolvimento de uma arquitetura que facilitasse a programação de GPU s para propósitos gerais e não apenas para o processamento de imagens como antigamente, essa arquitetura foi denominada Compute Unified Device Architecture - CUDA. Desde então pesquisas vem sendo feitas sobre a utilização desta arquitetura para aplicações de propósitos gerais. O objetivo do trabalho foi estudar o funcionamento da CUDA e a linguagem de programação utilizada por ela e realizar um estudo de caso. Por meio da compreensão e experimentação prática dos conceitos da arquitetura CUDA, foi implementado o algoritmo paralelo de soma de vetores e observado seu desempenho executando na GPU e na CPU Central Processing Unit. Conclui-se que a GPU permite obter desempenho no processamento deste tipo de operações. Palavras-chave: GPU - Graphics Processing Unit; Algoritmo paralelo; Álgebra Linear. 1. INTRODUÇÃO Nos primórdios da computação a GPU - Graphics Processing Unit, popularmente conhecida como placa de vídeo, era usada como um processador auxiliar apenas para o processamento de imagens, e a programação para ela era considera complexa e inviável, pois exigia que o programador tivesse conhecimento aprofundado em linguagens de baixo nível e sobre o hardware do dispositivo que desejava programar (YANO, 2010). No decorrer dos tempos, houve uma crescente necessidade de poder de processamento, pensando nessa necessidade a fabricante de GPU s NVIDIA foi pioneira no desenvolvimento de uma arquitetura que possibilitasse a programação da GPU para propósitos gerias, e não mais exclusivamente para o processamento de imagens como antigamente. Essa nova arquitetura criada foi denominada CUDA - Compute Unified Device Architecture (PINTO, 2011). Com CUDA é possível programar a GPU para aplicativos que não estejam exclusivamente ligados à processamento de imagens, como por exemplo, aplicativos comerciais onde são realizadas ordenação de valores, cálculo de finanças, dentre outros. O objetivo deste trabalho foi estudar o funcionamento da CUDA, a linguagem de programação utilizada por ela e, a partir disto, realizar um estudo de caso, por meio da implementação do algoritmo paralelo de soma de vetores para execução na GPU e na CPU 1

2 Central Processing Unit. Assim, inicialmente neste artigo, é caracterizada a arquitetura CUDA considerando o gerenciamento de threads, gerência de memórias, kernel e variáveis e funções específicas para execução. Após, é descrita a implementação do algoritmo de soma de vetores neste ambiente, bem como os resultados obtidos e as conclusões do trabalho. 2. ARQUITETURA CUDA CUDA - Compute Unified Device Architecture é uma arquitetura desenvolvida para GPU - Graphics Processing Unit da Nvidia que torna possível seu uso para propósitos gerais. A arquitetura permite que o programador desenvolva algoritmos que executam parte de suas instruções no dispositivo (processador da placa de vídeo), tornando assim a execução paralela. CUDA utiliza uma linguagem de alto nível que é uma extensão da linguagem de programação C padrão, adicionando uma biblioteca especifica com funções que auxiliam o programador. Mesmo assim, ainda é necessário que o programador tenha um conhecimento básico sobre a arquitetura do computador e da GPU, para ter condições de projetar e implementar os algoritmos paralelos que executem na CPU - Central Processing Unit e na GPU (PILLA, 2009), (PINTO,2011) A arquitetura CUDA é constituída por Streaming Multiprocessors (SM) e Scalar Processors (SP), que podem também ser chamados de Multiprocessadores e Núcleos de processamento. Cada multiprocessador é formado por um grupo de núcleos de processamento, em outras palavras, um numero n de núcleos encapsulados formam um multiprocessador. Cada multiprocessador executa de forma independente e paralela em relação aos demais. Os multiprocessadores possuem uma arquitetura chamada de SIMT - Single Instruction, Multiple Thread, onde todos os núcleos de um mesmo grupo executam a mesma instrução de forma paralela. Um exemplo é quando uma função com o qualificador global for chamada, todos os núcleos de um mesmo multiprocessador, irão executar em paralelo as instruções dessa função (IKEDA, 2011), (PILLA, 2009), (PINTO,2011). 2.1 Gerenciamento de Threads CUDA segue o conceito básico de grade (grid) e blocos (blocks). Uma grade apresenta uma estrutura abstrata em forma de matriz, onde cada posição dessa matriz contém um bloco diferente. Cada bloco é formado por um número pré-definido de threads que são também organizadas em forma de matriz. A grade (grid) pode ter sua estrutura abstrata interna em forma de matriz unidimensional ou bidimensional. Os blocos (blocks) apresentam uma estrutura interna em forma de matriz, mas que também podem ser organizadas de forma tridimensional, onde cada posição contém uma thread diferente. As 2

3 dimensões da grade e dos blocos são definidas pelo programador na criação de um novo kernel. Todos os blocos apresentam o mesmo número de threads. A Figura 1 ilustra uma grade formada por 6 blocos, organizada de forma bidimensional com dimensão 2x3 e cada bloco contém 12 threads organizadas internamente com dimensão 3x4. (IKEDA, 2011) Figura 1: Organização da grade e dos blocos de um kernel. (NVIDIA, 2012) Cada bloco é mapeado a um multiprocessador de forma automática pelo dispositivo, o número de blocos é independente do número de multiprocessadores existentes no dispositivo. As threads de cada bloco são organizadas consecutivamente em pequenos grupos denominados warp. Na Figura 2, é ilustrado um modelo de GPU que contém um número n de multiprocessadores (SM) cada um deles contendo 8 núcleos de processamento (SP). Se fossem criados blocos de 32 threads cada um, elas seriam divididas em pequenos grupos de 4 threads, cada grupo seria atribuído a um núcleo diferente. O número de threads por bloco é independente do número de núcleos (SP), mas cada modelo de GPU possui um número máximo suportado (PILLA, 2009), (IKEDA, 2011). Figura 2: Mapeamento das threads para os núcleos de processamento.(pilla, 2009) 2.2 Gerência de Memórias A GPU possui seu próprio conjunto interno de memórias, que é separado das memórias da CPU. Assim, o fluxo de execução de um algoritmo sempre segue os seguintes 3

4 passos: os dados a serem processados pelo dispositivo são criados e inicializados na CPU, depois são copiados da memória principal do computador para a memória global do dispositivo, após o processamento, os dados são novamente copiados para a memória principal do computador. Essas operações podem ser realizadas com as funções cudamemcpy e cudamalloc disponíveis na biblioteca runtime do CUDA (PILLA, 2009). Segundo Pilla (2009), a GPU possui memória dos seguintes tipos: memória local, memória global, memória de constantes e memória de texturas. Cada multiprocessador (SM) possui internamente memórias de alta velocidade com tamanho reduzido em Kbytes, que são dos seguintes tipos: registradores de 32 bits, memória compartilhada, cache de constantes e cache de texturas. A Figura 3 ilustra essa hierarquia de memória. Cada núcleo de processamento (SP) possui seus próprios registradores, que são alocados às threads que estão executando concorrentemente. Todos os núcleos de um mesmo multiprocessador podem acessar a memória compartilhada e efetuar operações de leitura e escrita. As caches de constantes e de texturas de um multiprocessador servem para dar agilidade ao processamento, pois as memórias responsáveis por esses tipos de armazenamentos se encontram na memória global do dispositivo, dessa forma os núcleos conseguem diminuir número de acessos às memórias externas ao multiprocessador. A memória global pode ser acessada por todos os núcleos de todos os multiprocessadores e sofrer operações de leitura e escrita. Existe uma memória local que é dividida e alocada para as threads, cada uma com seu próprio espaço de memória para realizar operações de leitura e escrita (PILLA, 2009). Figura 3: Hierarquia de memórias (PILLA, 2009). 2.3 Kernel O kernel pode ser definido como a parte paralela do código onde as threads são mapeadas aos multiprocessadores do dispositivo (GPU). Funções com o qualificador _global_ são denominadas kernel. Para um novo kernel ser criado, devem ser especificadas as dimensões, da grade (grid) e dos blocos (blocks), com a sintaxe <<<, >>>. A Figura 4 ilustra um exemplo de criação de um novo kernel. 4

5 Na linha 9 do código exemplo da Figura 4, a nova sintaxe é inserida entre o nome da função e a lista de parâmetros. Dois parâmetros devem ser passados: o primeiro diz respeito às dimensões da grade e o segundo diz respeito à dimensão dos blocos. A grade pode ser organizada de forma unidimensional e bidimensional e as threads de um bloco podem ser organizadas de forma tridimensional. No exemplo, a grade foi definida com o valor inteiro 1 e os blocos com o valor 40, ou seja, será criada uma grade contendo apenas 1 bloco e este bloco contem 40 threads, ambos organizados de forma unidimensional. Em outras palavras a dimensão da grade nada mais é que o número de blocos que serão criados, e as dimensões do bloco são o número de threads que cada bloco terá. Como só é possível a passagem de dois valores como parâmetros na sintaxe, para organização da grade e dos blocos em mais de uma dimensão, é necessário o uso de variáveis do tipo dim3 (YANO, 2010), (ROCHA, FILHO, 2010), (RIBEIRO, 2011). Figura 4: Criação de um novo kernel 2.4 Variáveis dim3, Variáveis Built-in, qualificadores de função e de variáveis Varáveis dim 3 são usadas para definição de dimensões, onde dim3 é uma estrutura já definida na linguagem CUDA, que apresenta o seguinte modelo: typedef struct { int x, y, z } dim3; onde, x representa o número de colunas, y o número de linhas e z o número de dimensões. Variáveis do tipo dim3 são comumente utilizadas para a definição de um novo kernel com mais de uma dimensão, e podem ser declaradas da seguinte forma: dim3 dimensaobloco (4,2,1); Na declaração da variável dimensaobloco são passados parâmetros atribuídos respectivamente para x, y e z. Caso não for especificado os valores de x, y e z, eles ficam com os valores padrão (1,1,1) (RIBEIRO, 2011), (NVIDIA, 2012), (IKEDA, 2011). Variáveis Built-in são variáveis pré-definidas pela linguagem e não podem ter seus valores modificados, são válidas somente em funções que executam na GPU. Elas permitem obter as dimensões da grade e dos blocos e também o índice das threads e dos blocos. Segundo NVIDIA (2012), as variáveis desse tipo são: griddim (variável do tipo 5

6 dim3 que contém as dimensões da grade); blockdim (variável do tipo dim3 que contém as dimensões do bloco); blockidx (variável do tipo uint3 que contém o índice do bloco na grade); threadidx (variável do tipo uint3 que contém o índice da thread no bloco); warpsize (variável do tipo int que contém o número de threads do warp). Conforme a estrutura do kernel ilustrado na Figura 1, a dimensão da grade é 2 linhas por 3 colunas então griddim.x = 3, griddim.y = 2. Todos os blocos apresentam as dimensões de 3 linhas por 4 colunas, então blockdim.x = 4, blockdim.y = 3. Em muitos casos é necessário para a resolução de um problema a obtenção do índice de determinado bloco ou thread, por exemplo a thread (3, 1) da grade (1, 1), os índices da thread seriam threadidx.x = 3, threadidx.y = 1, já os índices desse bloco seriam, blockid.x = 1, blockid.y = 1 (NVIDIA, 2012). Quando uma função é declarada, o programador deve especificar quem poderá chamar essa função e onde ela irá executar suas instruções. Essas permissões são denominadas de qualificadores do tipo de função. Existem três tipos de qualificadores do tipo de função: global, host e device : global : a função é chamada pelo host (CPU) mas suas instruções são executadas no device (GPU). Alguns pontos importantes são:o retorno deve ser sempre do tipo void; não suporta numero de argumentos variável; não é permitida a declaração de variáveis estáticas; não suporta recursão; quando uma função com esse qualificador for chamada, deve ser criado um novo kernel especificando as dimensões da grade e as dimensões de cada bloco. host : a função só pode ser chamada pelo host. Uma função com esse tipo de qualificador se torna uma função comum da linguagem C e suas instruções obviamente são executadas no host, e não pode ser chamada por funções que tem permissão device. device : a função é chamada e executada somente pelo device. Funções com qualificador host não podem fazer chamadas a ela. Alguns pontos importantes são: podem retornar valores, mas o endereço da função não pode ser obtido; não suporta recursão; não pode conter inicialização de variáveis estáticas em sua implementação; não suporta número variável de argumentos. Todas as funções declaradas no programa devem conter o seguinte protótipo: <tipo_de_permissão><tipo_do_retorno><nome_da_função>(lista_de_parame tros); caso o tipo de permissão não for especificado na função o compilador irá assumir que a permissão é do tipo host (IKEDA, 2011), (NVIDIA, 2012). Qualificadores do tipo de variáveis servem para especificar em qual das memórias do dispositivo a variável será alocada. Existem três qualificadores de tipos de variáveis, device, constant e shared. 6

7 device : a variável reside na memória global do dispositivo, tem o tempo de vida da aplicação e pode ser acessada por todas as threads de uma grade e pela CPU. constant : a variável reside na memória constante do dispositivo, seu tempo de vida e permissões de acesso são iguais aos do device. shared : a variável reside na memória compartilhada, pode ser acessada apenas pelas threads de um mesmo bloco, e o seu tempo de vida é o mesmo do bloco. Variáveis que não recebem esse qualificador são alocadas na memória local do dispositivo (IKEDA, 2011), (NVIDIA, 2012). 3. METODOLOGIA O presente trabalho foi desenvolvido por meio de uma revisão bibliográfica sobre as placas gráficas GPU Graphics Processing Unit, da NVIDIA e a arquitetura CUDA. Para o desenvolvimento do algoritmo, foi realizada revisão bibliográfica sobre as operações de álgebra linear com matrizes e vetores. Para o desenvolvimento foi instalado SDK Software Development Kit CUDA para Windows 64 bits, juntamente com a linguagem de programação C. A implementação foi desenvolvida e a execução paralela do algoritmo foi realizada em um computador com processador AMD Phenom(tm) II X Ghz, 2GB de memória RAM, e com uma placa gráfica Nvidia GeForce 9500 GT que possui 32 núcleos de processamento divididos em 2 multiprocessadores e 512 MB de memória. Para observar o desempenho, foram utilizadas medidas de tempo de execução do algoritmo. Como estudo de caso, apenas o algoritmo de soma de vetores é descrito, uma vez que os demais algoritmos paralelos de operações de álgebra linear encontram-se em fase de implementação. 4. RESULTADOS E DISCUSSÕES A soma de dois vetores é uma operação de álgebra linear. Esta operação requer que os dois vetores tenham o mesmo número de posições porque todas as posições do primeiro vetor serão somadas com as posições correspondentes do segundo, resultando em um terceiro vetor, do mesmo tamanho. Por exemplo, dado dois vetores e, a soma deles é feita da seguinte forma,, como pode ser observado o terceiro vetor irá conter o resultado da soma das posições correspondentes de e. A soma de dois vetores é comutativa, ou seja,. Foi implementado o algoritmo que efetua a soma de dois vetores de forma paralela, com o objetivo de validar o estudo realizado sobre CUDA e GPU. A Figura 5 ilustra parte da implementação do algoritmo. É necessária a criação de vários ponteiros, uns apontando 7

8 para a memória da CPU e outros para memória da GPU. A convenção da NVIDIA foi utilizada para identificar os tipos de ponteiros: antecedendo o nome do ponteiro colocam-se as palavras host para ponteiros na memória da CPU e device para ponteiros na memória da GPU, favorecendo a legibilidade do código. Isto pode ser observado na linhas 11 e 17. Figura 5: Implementação do algoritmo soma de vetores O algoritmo segue os seguintes passos: primeiramente é alocado espaço para os vetores na memória da CPU (host) (linhas 11, 12, 13); é alocado espaço no dispositivo para os três vetores e aqueles que serão somados são copiados da memória host para a memória do device (linhas 17 a 26); são definidos os parâmetros para a criação de um novo kernel com um cálculo proposto pela NVIDIA para criar um número de blocos, de forma a melhorar a distribuição de threads (linhas 28, 29); o kernel é criado e o processamento inicia 8

9 (linha 33); após o termino do processamento apenas o resultado da soma é copiado da memória do device para a memória do host (linha 40). Nas linhas 1 a 6 a função que realiza a soma dos vetores de forma paralela, obtém o identificador único de cada thread. Cada thread realiza a soma de duas posições equivalentes, por exemplo, se o identificador de thread for igual a 0, ela irá somar a posição 0 dos vetores, e assim sucessivamente para cada uma das n threads criadas, e como podem ser criadas mais threads do que o número total de posições dos vetores, existe um teste que evita a soma de posições inexistentes (linha 4). Para testar o desempenho do algoritmo desenvolvido, foi medido o tempo de execução do kernel soma_vetores, o ponto paralelo do código. Conforme a Figura 5, os tempos inicial e final são capturados, nas linhas 35 e 36. Os resultados obtidos foram satisfatórios para a operação da soma de vetores. Para vetores com , , e posições, o tempo no processamento de todos eles foi igual a zero milissegundos, pois foi medido somente o tempo de processamento da soma na GPU. Primeiramente, este tempo foi questionado, pois se esperava valores maiores, então para testar a validade do resultado, foram gerados vetores de tamanho , e e as medidas de tempo de execução realizadas a partir da inicialização dos dados. Os resultados obtidos neste teste estão no gráfico da Figura 6. Como a inicialização dos vetores se deu na CPU, isto influenciou no tempo de execução, fazendo com que a GPU levasse um pouco mais de tempo de processamento comparada à CPU. Conclui-se que, para problemas mais simples como a soma de vetores, a placa gráfica permite também um processamento rápido. Figura 6: Tempo de execução do algoritmo soma de vetores 5. CONCLUSÃO A partir do trabalho desenvolvido, considerou-se que os resultados foram satisfatórios, pois a GPU efetua o processamento das operações de forma rápida, 9

10 aproximando-se dos valores da CPU. Um dos grandes desafios encontrados na programação para GPU é a paralelização dos algoritmos que consiste em encontrar estratégias de implementá-los de forma que todos os núcleos de processamento executem a mesma instrução, sobre dados diferentes, já que os multiprocessadores executam suas instruções em SIMT, e tudo isso, visando a melhor utilização dos recursos e obtenção de desempenho. Pretende-se continuar o estudo da arquitetura CUDA, implementando em paralelo as demais operações de álgebra linear. REFERÊNCIAS IKEDA, Patricia Akemi. Um estudo do uso eficiente de programas em placas gráficas Dissertação. Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo NVIDIA CUDA C Programming Guide version 4.2. Disponível em ide.pdf. Acessado em Abril de PILLA, Laércio L. Análise de Desempenho da Arquitetura CUDA Utilizando os NAS Parallel Trabalho de Conclusão (Graduação em Ciência da Computação). Instituto de Informática, Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre PINTO, Vinícius G. Ambientes de Programação Paralela Híbrida Dissertação. Programa de Pós-Graduação em Computação, Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, RIBEIRO, Ítalo Mendes da Silva. Paralelização em GPU da Segmentação Vascular com Extração de Centerlines por Height Ridges Dissertação (Programa de Pós-graduação em Sistemas e Computação). Departamento de Informática e Matemática Aplicada, Universidade Federal do Rio Grande do Norte (UFRN), Natal ROCHA, Kassiane de Almeida Pretti, FILHO, Luciano José Varejão Fassarella. Introdução ao CUDA utilizando métodos numéricos Trabalho de Conclusão de Curso. Centro Universitário Vila Velha, Vila Velha YANO, Luís Gustavo Abe. Avaliação e comparação de desempenho utilizando tecnologia CUDA Trabalho de Conclusão (Graduação em Ciência da Computação). Instituto de Biociências, Letras e Ciências Exatas, Universidade Estadual Paulista Júlio de Mesquita Filho, São José do Rio Preto - SP

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Arquitetura e Programação de GPU Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Agenda Primeiras Placas de Vídeo Primeira GPU Arquitetura da GPU NVIDIA Arquitetura

Leia mais

Experimentos com a memória cache do CPU

Experimentos com a memória cache do CPU Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................

Leia mais

Computação Heterogênea Programação paralela, clusters e GPUs

Computação Heterogênea Programação paralela, clusters e GPUs Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICT- Unifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013 Conteúdo Computação heterogênea:

Leia mais

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capí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 mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Cálculo Aproximado do número PI utilizando Programação Paralela

Cálculo Aproximado do número PI utilizando Programação Paralela Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Cálculo Aproximado do número PI utilizando Programação Paralela Grupo 17 Raphael Ferras Renan Pagaiane Yule Vaz SSC-0143 Programação

Leia mais

O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP

O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP Bruno P. dos Santos, Dany S. Dominguez, Esbel V. Orellana Departamento de Ciências Exatas e Tecnológicas

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Claudio André claudio.andre@correios.net.br Motivação Seu computador

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO Programa de Pós-Graduação em Informática

UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO Programa de Pós-Graduação em Informática UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO Programa de Pós-Graduação em Informática Estudo e aperfeiçoamento da técnica de steering behaviors na simulação física de fluidos

Leia mais

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD. AULA4: PROCESSADORES 1. OBJETIVO Figura 1 Processadores Intel e AMD. Conhecer as funcionalidades dos processadores nos computadores trabalhando suas principais características e aplicações. 2. INTRODUÇÃO

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

1 Padrões de Implementação em Processamento de Imagens. 2 Resumo. 4 Computação paralela. 1.1 Relátório final para PIBIC/CNPq

1 Padrões de Implementação em Processamento de Imagens. 2 Resumo. 4 Computação paralela. 1.1 Relátório final para PIBIC/CNPq 1 Padrões de Implementação em Processamento de Imagens 1.1 Relátório final para PIBIC/CNPq Victor M. de A. Oliveira, Rubens Campos Machado Centro de Tecnologia da Informação Renato Archer CTI Divisão de

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

Estruturas do Sistema de Computação

Estruturas do Sistema de Computação Estruturas do Sistema de Computação Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Estruturas do Sistema de

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Sistemas Operacionais

Sistemas 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 mais

UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA

UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA UNIVERSIDADE FEDERAL DE SANTA MARIA DEPARTAMENTO DE ELETRÔNICA E COMPUTAÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA Estudo e aperfeiçoamento da técnica de Steering Behaviors na simulação física de fluidos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

INTRODUÇÃO AO CUDA UTILIZANDO MÉTODOS NUMÉRICOS

INTRODUÇÃO AO CUDA UTILIZANDO MÉTODOS NUMÉRICOS CENTRO UNIVERSITÁRIO VILA VELHA CURSO DE CIÊNCIA DA COMPUTAÇÃO Kassiane de Almeida Pretti Rocha Luciano José Varejão Fassarella Filho INTRODUÇÃO AO CUDA UTILIZANDO MÉTODOS NUMÉRICOS VILA VELHA 2010 Kassiane

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora OpenGL Uma Abordagem Prática e Objetiva Marcelo Cohen Isabel Harb Manssour Novatec Editora Capítulo 1 Introdução A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento

Leia mais

RISC X CISC - Pipeline

RISC X CISC - Pipeline RISC X CISC - Pipeline IFBA Instituto Federal de Educ. Ciencia e Tec Bahia Curso de Analise e Desenvolvimento de Sistemas Arquitetura de Computadores 25 e 26/30 Prof. Msc. Antonio Carlos Souza Referências

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

4 Computação Paralela 4.1. Introdução

4 Computação Paralela 4.1. Introdução 4 Computação Paralela 4.1. Introdução Nos últimos anos observa-se uma tendência cada vez maior do aumento da demanda computacional na resolução de grandes problemas. Exemplos de aplicações que exigem alto

Leia mais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO LABORATÓRIO DE SISTEMAS OPERACIONAIS PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO Gerenciamento de Memória no Linux O Linux é um sistema operacional com memória virtual paginada, isto quer dizer que

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Infraestrutura de Hardware. Memória Virtual

Infraestrutura de Hardware. Memória Virtual Infraestrutura de Hardware Memória Virtual Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA

Leia mais

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EMENTAS DO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS INTRODUÇÃO À COMPUTAÇÃO 60 h 1º Evolução histórica dos computadores. Aspectos de hardware: conceitos básicos de CPU, memórias,

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 5 Estrutura de Sistemas de Computação Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO

JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE COM USO DE UNIDADE DE PROCESSAMENTO GRÁFICO 1 FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO JOSÉ HENRIQUE MADEIRA CIMINO ANÁLISE DE PARALELISMO EM ARQUITETURA MULTICORE

Leia mais

Processos e Threads (partes I e II)

Processos 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 mais

Problema: Solução: Vantagens da estruturação em Níveis: Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Introdução

Problema: Solução: Vantagens da estruturação em Níveis: Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES Curso Técnico de Informática Eduardo Amaral Introdução Computador: Máquina programável, de propósito geral, que processa informação. Programa: Seqüência de instruções

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I Guilherme Pina Cardim Relatório de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Relatório de Sistemas Operacionais I Pesquisa para descobrir as diferenças

Leia mais

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress. Sistemas Operacionais Aula 3 Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.com Nunca cone em um computador que você não pode jogar pela janela.

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Introdução a Threads Java

Introdução a Threads Java Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org

Leia mais

Capítulo 4 Gerenciamento de Memória

Capítulo 4 Gerenciamento de Memória Capítulo 4 Gerenciamento de Memória 4.1 Gerenciamento básico de memória 4.2 Troca de processos 4.3 Memória virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelagem de algoritmos de substituição

Leia mais

Web site. Objetivos gerais. Introdução. http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados. Profa. Patrícia Dockhorn Costa

Web site. Objetivos gerais. Introdução. http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados. Profa. Patrícia Dockhorn Costa Web site http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados Estruturas de Dados Aula 1: Introdução e conceitos básicos Profa. Patrícia Dockhorn Costa Email: pdcosta@inf.ufes.br 01/03/2010

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

ÁREA: CV ( ) CHSA ( ) ECET ( )

ÁREA: CV ( ) CHSA ( ) ECET ( ) ADAPTAÇÃO E INTEGRAÇÃO DO PROCESSADOR RISCO A UMA ARQUITETURA MULTI-CORE PARA SISTEMAS EMBARCADOS DE PROPOSITO GERAL Laysson Oliveira Luz (Bolsista PIBIC/CNPq), Ivan Saraiva Silva (Orientador, Departamento

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 23 CUDA "Compute Unified Device Architecture" Parte 2

Leia mais

Sistemas Operacionais

Sistemas 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 mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE 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 mais

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso

Leia mais

Gerenciamento Básico B de Memória Aula 07

Gerenciamento Básico B de Memória Aula 07 BC1518-Sistemas Operacionais Gerenciamento Básico B de Memória Aula 07 Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Introdução Espaço de Endereçamento Lógico vs. Físico Estratégias

Leia mais

7 Processos. 7.1 Introdução

7 Processos. 7.1 Introdução 1 7 Processos 7.1 Introdução O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não se importando com qual programa

Leia mais

Guilherme Pina Cardim. Pesquisa de Sistemas Operacionais I

Guilherme Pina Cardim. Pesquisa de Sistemas Operacionais I Guilherme Pina Cardim Pesquisa de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Pesquisa de Sistemas Operacionais I Pesquisa realizada para identicar

Leia mais

LÓGICA DE PROGRAMAÇÃO

LÓGICA DE PROGRAMAÇÃO Todos direitos reservados. Proibida a reprodução, mesmo parcial, por qualquer processo mecânico, eletrônico, reprográfico, etc., sem a autorização, por escrito, do(s) autor(es) e da editora. LÓGICA DE

Leia mais

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email:

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email: AULA 1 Disciplina: Informática Básica Professor: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Estudo de caso Empresa do ramo de seguros Presidência RH Financeiro Vendas e Marketing TI CRM Riscos Introdução

Leia mais

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Rafael Vargas Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Leia mais

UNIVERSIDADE DE MOGI DAS CRUZES JOSÉ DA SILVA CONCEITOS DE INFORMÁTICA

UNIVERSIDADE DE MOGI DAS CRUZES JOSÉ DA SILVA CONCEITOS DE INFORMÁTICA UNIVERSIDADE DE MOGI DAS CRUZES JOSÉ DA SILVA CONCEITOS DE INFORMÁTICA Mogi das Cruzes, SP 2007 UNIVERSIDADE DE MOGI DAS CRUZES JOSÉ DA SILVA CONCEITOS DE INFORMÁTICA Trabalho de Conclusão de Curso apresentado

Leia mais

Lista de Exercícios Introdução à Informática

Lista de Exercícios Introdução à Informática Lista de Exercícios Introdução à Informática Histórico e Evolução da Computação 1. Cite alguns problemas que o uso de válvulas provocava nos computadores de 1ª geração. 2. O que diferencia os computadores

Leia mais

Waldemar Celes. 25 de Agosto de 2014

Waldemar Celes. 25 de Agosto de 2014 Introdução a CUDA INF2062 Tópicos em Simulação e Visualização Waldemar Celes celes@inf.puc-rio.br Tecgraf, DI/PUC-Rio 25 de Agosto de 2014 W. Celes Introdução a CUDA 1 GPGPU Programação de propósito geral

Leia mais

Comparação de Desempenho Computacional com Vários Algoritmos Implementados Paralelamente em C

Comparação de Desempenho Computacional com Vários Algoritmos Implementados Paralelamente em C Comparação de Desempenho Computacional com Vários Algoritmos Implementados Paralelamente em C Tiago M. Rohde, Edilaine R. Ferrari, Luciano A. Destefani, Leonardo B. Motyczka, Rogério Martins Departamento

Leia mais

Conceitos de Linguagens de Programação

Conceitos 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 mais

Hardware. Objetivos da aula. Fornecer exemplos de processadores Intel. Esclarecer as diferenças e as tecnologias embutidas nos processadores Intel.

Hardware. Objetivos da aula. Fornecer exemplos de processadores Intel. Esclarecer as diferenças e as tecnologias embutidas nos processadores Intel. Hardware UCP Unidade Central de Processamento Características dos processadores Intel Disciplina: Organização e Arquitetura de Computadores Prof. Luiz Antonio do Nascimento Faculdade Nossa Cidade Objetivos

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Gerência de Memória RAM em Computadores com Mais de 4GB O sistema Windows x86 (32bits) não tem capacidade de reconhecer, fisicamente, mais que 3,X GB de RAM, a não ser que seja ativado, manualmente, o

Leia mais

LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2

LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2 LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2 SANTO AMARO 2011 ANGELO RAMOS JACKELINE BARBOSA JEANDERVAL SANTOS PROCESSADOR TEGRA 2 Trabalho apresentado ao Instituto Federal de Ciências e Tecnologia da

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho 124 - Encontro Anual de Tecnologia da Informação Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho André Luís Stefanello¹, Crístian Cleder Machado1, Dioni da Rosa¹, Maurício

Leia mais

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2 MEMÓRIA CONCEITO Bit- 0 1 Essência de um sistema chamado BIESTÁVEL Ex: Lâmpada 0 apagada 1 acesa 0 e 1 únicos elementos do sistema de numeração de base 2 A que se destina a memória: Armazenamento das instruções

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:

Leia mais

AULA 13 - Gerência de Memória

AULA 13 - Gerência de Memória AULA 13 - Gerência de Memória omo sabemos, os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não-voláteis, tais como: memória cache, memória principal

Leia mais

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng. Aula teórica 3 Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java Preparado por eng.tatiana Kovalenko Linguagens de Programação Para escrever programas é necessário

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 6.7 Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: Escrita (write) armazenar informações na memória; Leitura (read) recuperar

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Funções Classes de armazenamento

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

FACULDADE PITÁGORAS PRONATEC

FACULDADE PITÁGORAS PRONATEC FACULDADE PITÁGORAS PRONATEC DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Objetivos Ao final desta apostila,

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 04 Introdução a Análise de Algoritmos humberto@bcc.unifal-mg.edu.br Última aula Fundamentos de Matemática Exercícios: Somatórios; Logaritmos

Leia mais

Projeto Pedagógico do Bacharelado em Ciência da Computação. Comissão de Curso e NDE do BCC

Projeto Pedagógico do Bacharelado em Ciência da Computação. Comissão de Curso e NDE do BCC Projeto Pedagógico do Bacharelado em Ciência da Computação Comissão de Curso e NDE do BCC Fevereiro de 2015 Situação Legal do Curso Criação: Resolução CONSU no. 43, de 04/07/2007. Autorização: Portaria

Leia mais

Placa de vídeo em CUDA

Placa de vídeo em CUDA Placa de vídeo em CUDA Matheus Costa Leone de Souza Krystian Aparacido Resumo Quando você tem um cálculo que possa ser grande demais para você realizar a mão, a primeira solução que lhe vem a cabeça é

Leia mais

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1 Introdução à Organização e Arquitetura de Computadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Evolução dos Computadores; Considerações da Arquitetura de von Neumann; Execução de uma instrução

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores Máquinas Virtuais e Emuladores Marcos Aurelio Pchek Laureano Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware sistema operacional aplicações Sistemas

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Estudo de Caso 2: Windows Vista

Estudo de Caso 2: Windows Vista Faculdades Integradas de Mineiros Curso de Sistemas de Informação Sistemas Operacionais II Estudo de Caso 2: Windows Vista Grupo 4 Helder / Wagner / Frantyeis Junho/2010 O Windows usa uma estratégia Just-In-Time

Leia mais

Processamento de Sinal através do GPU

Processamento de Sinal através do GPU Processamento de Sinal através do GPU Relatório Final do Projecto Informático n.º 15/ 2007-8, ei15888 Relatório final submetido para avaliação parcial da unidade curricular de Projecto Informático, do

Leia mais