Esqueletos Algorítmicos para Paralelismo de Tarefas em Sistemas Multi-GPU

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

Download "Esqueletos Algorítmicos para Paralelismo de Tarefas em Sistemas Multi-GPU"

Transcrição

1 Esqueletos Algorítmicos para Paralelismo de Tarefas em Sistemas Multi-GPU Fernando Alexandre, Ricardo Marques, and Hervé Paulino CITI / Departamento de Informática Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa Caparica, Portugal Resumo A crescente utilização de Unidades de Processamento Gráfico (GPUs) na computação de caráter geral levanta questões de desempenho e de escalabilidade. Para responder a estes requisitos de forma efetiva, cada vez mais se recorre à utilização colaborativa de vários GPUs num só sistema. Esta abordagem introduz, no entanto, novos desafios, tal como a decomposição do domínio do problema e a gestão da possível heterogeneidade dos dispositivos. Neste contexto assume particular relevância a proposta de abstrações que escondam a complexidade da programação destes sistemas. Existe já algum trabalho na área, mas este restringese ao paralelismo de dados. Por conseguinte, neste artigo abordamos a utilização de uma biblioteca de esqueletos algorítmicos, Marrow, para a exploração de paralelismo de tarefas em sistemas computacionais com estas características. Os resultados são promissores, apresentado a escalabilidade esperada nos sistemas testados. 1 Introdução O GPU tem, cada vez mais, assumido um papel de relevo na resolução de problemas que possam beneficiar de paralelismo centrado nos dados, exemplos são o processamento numérico, a prospeção de dados (data-mining), simulações físicas, entre outros [1]. Com a crescente popularidade deste paradigma surgiu a necessidade de lidar com questões de escala e melhorar o desempenho, em termos de tempos de resposta e de quantidade de trabalho efetuado por unidade de tempo. Por conseguinte, emergiu recentemente uma nova tendência que recorre à utilização colaborativa de múltiplos GPUs dentro de uma só máquina [2, 3]. As plataformas base para computação de caráter geral em GPUs - GPGPU (General Programming on Graphics Processing Units) - OpenCL [4] e CUDA [5] oferecem algum suporte para computação em múltiplos dispositivos. No entanto, o nível de abstração é bastante baixo; o nível de conhecimentos de programação paralela exigido no contexto de um único dispositivo são subsequentemente amplificados. Além da gestão explícita dos espaços de memória e a orquestração Este trabalho foi parcialmente financiado pela FCT-MCTES através do PEst- OE/EEI/UI0527/ Centro de Investigação em Informática e Tecnologias e utilizou equipamento adquirido no âmbito dos projectos PTDC/EIA-EIA/102579/2008 e PTDC/EIA-EIA/111518/2009.

2 das operações que devem ser executadas pelos dispositivos, o programador deve agora também assumir a responsabilidade de decompor a computação pelos diversos GPUs, possivelmente heterogéneos, e considerar detalhes arquiteturais, como a eventual partilha de barramentos (bus) pelos mesmos. Neste contexto torna-se imperativo a proposta de abstrações que, por um lado, escondam a complexidade da programação destes sistemas computacionais, e por outro, sejam úteis na resolução de problemas que beneficiem de execução com múltiplos GPUs. Esta área tem recebido particular atenção, com várias propostas a endereçar o paralelismo de dados [6, 7], que mapeia naturalmente no modelo de execução subjacente. No que se refere à exploração do paralelismo de tarefas, a área é muito recente e com muitos desafios por endereçar, particularmente no contexto multi-gpu. Que seja do nosso conhecimento, para além da biblioteca Marrow [8] que será a base deste trabalho, apenas é suportado o encadeamento de tarefas, pipelining, sem suporte multi-gpu em [9] ou restrito a um dado domínio, como o processamento de streams em [10, 11]. O Marrow é uma biblioteca de esqueletos algorítmicos para a orquestração de computações OpenCL. Destaca-se das restantes disponíveis para GPGPU [6,7,12 14] por ser a primeira a suportar esqueletos para paralelismo de tarefas e propor o aninhamento destes mesmos esqueletos como ferramenta para a criação de árvores de computação de complexidade arbitrária. Nesta medida, o objetivo deste trabalho é permitir que computações Marrow possam executar em vários GPUs num só nó computational, com particular ênfase no paralelismo de tarefas. Pretende-se utilizar esqueletos algorítmicos para usufruir da capacidade de abstração da complexidade inerente às computações paralelas, delegando ao sistema de execução a decomposição da computação, a adaptação de acordo com a heterogeneidade dos dispositivos e endereçar possíveis otimizações nas transferências de dados entre os múltiplos espaços de memória. As contribuições deste trabalho são portanto: 1 - a proposta de esqueletos para paralelismo de tarefas em sistemas multi-gpu, tirando partido do aninhamento de esqueletos para o cálculo de computações complexas (Secção 3); 2 - um sistema de execução capaz de distribuir a computação de uma tarefa por múltiplos dispositivos, possivelmente heterogéneos (Secção 4); 3 - uma avaliação comparativa do desempenho dos esqueletos propostos relativamente à execução num único GPU (Secção 5). 2 Biblioteca de Esqueletos Algorítmicos Marrow Marrow é uma biblioteca de esqueletos algorítmicos com o objetivo de orquestrar computações OpenCL em vários GPUs. Para criar computações complexas, o Marrow suporta aninhamento de esqueletos algorítmicos, sendo que este pode ser representado através de uma árvore onde os nós intermédios introduzem comportamentos sobre a sua sub-árvore até chegar às folhas, que contém as computações OpenCL (kernels). Os esqueletos algorítmicos escolhidos para in-

3 Pipeline Pipeline Pipeline Estágio 1 Estágio 2 Estágio 4 Estágio 5 Figura 1. Aninhamento de pipelines. clusão na biblioteca têm em conta a sua utilidade na área de GPGPU, sendo que os seguintes são suportados: Pipeline define uma sequência de computações dependentes pelos dados, em que os dados de saída resultantes de um estágio são passados para a entrada da computação seguinte. Os dados intermédios entre dois estágios são mantidos no respetivo GPU de forma a evitar transferências de dados desnecessárias e caras. Uma instância deste esqueleto suporta apenas dois estágios. É no entanto possível utilizar aninhamento para criar estruturas com um número arbitrário de estágios, como apresentado na Figura 1. Loop permite a execução iterativa de uma computação de acordo com uma condição de paragem definida pelo programador. O esqueleto permite modelar os comportamentos dos esqueletos For e While [15] que diferem pelo facto que a condição de paragem pode depender dos dados intermédios da iteração corrente (While) ou não (For). Ambas as variantes do esqueleto suportam aninhamento. Map permite aplicar uma árvore de computação em paralelo a um conjunto de dados. MapReduce é uma extensão do Map que permite que um passo posterior de redução seja este executado no GPU, utilizando internamente um Pipeline, ou no CPU. Nenhum destes esqueletos permitem aninhamento pois precisam de deter controlo sobre os dados residentes na memória do host para iniciar a execução e transferências de dados. Exemplo de Programação A Listagem 1 apresenta a um exemplo que faz uso de um Pipeline com dois estágios de computação, sendo o primeiro um FFT (Fast Fourier Transformation) e o segundo, o seu inverso. A árvore de computação é construída de baixo para cima, iniciando-se com a criação das folhas, instâncias de KernelWrappers que representam as computações em si (kernels, linha 2), seguindo-se o aninhamento incremental nos esqueletos desejados (linha 3 4). Uma vez criada, a arvore de computação pode receber múltiplos pedidos de execução. Estes recebem como argumento o conjunto de dados (composto por escalares e/ou vetores) sobre o qual a árvore vai ser aplicada. Vetores em Marrow são instâncias da classe Vector, que abstrai as operações de decomposição necessárias para a execução multi-gpu (linhas 6 9). A função de submissão (linha 11) devolve imediatamente a referência ao objeto Future que permite à aplicação esperar pelo fim da execução da árvore, tal como acesso aos dados resultantes.

4 1 // Computation Tree Allocation 2 std :: unique_ptr < IExecutable > fft ( new KernelWrapper( kernelfile, " fft1d_512 ", ininfo, outinfo, globalworksize )); 3 std :: unique_ptr < IExecutable > ifft ( new KernelWrapper( kernelfile, " ifft1d_512 ", ininfo, outinfo, globalworksize )); 4 std :: unique_ptr < IExecutable > pipe ( new Pipeline (fft, ifft )); 5 // Request skeleton executions ; Vector Creation 6 std :: vector <std :: shared_ptr <Vector >> inputvectors (1) ; 7 inputdata [0] = std :: shared_ptr <Vector >( new Vector ( input, sizeof ( cl_float2 ), size )); 8 std :: vector <std :: shared_ptr <Vector >> outputvectors (1) ; 9 outputdata [0] = std :: shared_ptr <Vector >( new Vector ( output, sizeof ( cl_float2 ), size )); 10 // Execution Requests 11 future = pipe -> write ( inputvectors, outputvectors ); 12 // Wait for results ; Computation tree de - allocation : delete pipe Listing 1. Pipeline de FFTs e a sua operação inversa 3 Orquestração do Loop e Pipeline Nesta secção é descrita a orquestração necessária para a implementação dos esqueletos para paralelismo de tarefas presentes no Marrow, nomeadamente Loop e Pipeline, seguido de considerações relacionadas ao aninhamento de esqueletos. Condição Step (2) (4) Loop GPUs (5) Input (1) Computação (3) Output (6) Sistema de Execução Figura 2. Orquestração do Loop GPUs Input Stage1 Middle Stage2 Output Pipeline (1) (2) Sistema de Execução (3) (4) Figura 3. Orquestração do Pipeline Orquestração do Loop A Figura 2 apresenta os passos principais na execução do Loop. Os dados são inicialmente transferidos para os GPUs (1). De seguida, iniciam-se as iterações, seguido pelo teste da condição (2), sendo que se assume que a condição é inicialmente válida. A condição de paragem pode ou não depender do conjunto de dados de saída da computação, assemelhando-se a um For e While respetivamente. Caso esta for verdadeira é lançada a execução das árvores de computação nos GPUs (4). É utilizada uma função de step para evoluir os valores necessários pela condição de paragem (5), e imediatamente a seguir é efetuada uma sincronização de dados que tenham sido modificados pela função

5 step (1) e são trocados os dados de entrada com os dados de saída em preparação da próxima iteração (6). Para suportar múltiplos GPUs, o While precisa garantir que os passos relacionados à função de evolução step sejam sincronizados entre as várias tarefas, para esta ser apenas calculada uma vez, e apenas quando os dados de todas as partições estão disponíveis. Orquestração do Pipeline A Figura 3 ilustra os passos principais da orquestração realizada pelo Pipeline. Este começa por transferir os dados de entrada para os vários GPUs (1), seguindo-se a computação sequencial dos dois estágios (2 e 3), sendo que os resultados do primeiro, já presentes nos GPUs, são utilizados como dados de entrada do segundo. Por fim, os resultados da segunda execução são transferidos para a memória principal (4). Em ambos os esqueletos é necessário que exista compatibilidade nos dados de entrada e saída, nomeadamente entre dois estágios do Pipeline e na entrada e saída do Loop. Uma consideração importante, é que esta compatibilidade tem de transpor para as várias decomposições criadas pelo Marrow. Aninhamento de Esqueletos O aninhamento permite a criação de computações complexas através da composição de um número arbitrário de esqueletos aninhados, apenas limitada pela quantidade de memória disponível nos GPUs. Que seja do nosso conhecimento, o Marrow é o único sistema a suportar este nível de composicionalidade no contexto GPGPU, o que levanta uma série de desafios. O suporte de aninhamento requer que os esqueletos tenham comportamentos diferenciados, dependendo se se encontram, ou não, na raiz da árvore de computação. Tal deve-se ao facto de todo o controlo sobre a computação e interação com o hospedeiro estar concentrado na raiz. Desse modo, o fluxo da computação e da partilha dos dados desce ao longo da árvore. A raiz é responsável por transferir os dados (do e para o hospedeiro) e por desencadear a computação, orquestrando subsequentemente a(s) sua(s) sub-árvore(s) (emitindo pedidos de execução e comunicando as necessárias referências para dados) de acordo com o comportamento que fatoriza. Estas sub-árvores assumem, por sua vez, essas mesmas responsabilidades perante a sua descendência, até que seja atingindo uma folha, caso em que a computação associada é executada. 4 Sistema de execução Nesta secção apresentamos a arquitetura e modelo de execução do Marrow. A arquitetura, representada na Figura 4, está organizada em três camadas principais, sendo que cada uma só tem visão da camada abaixo. O programador apenas tem acesso à camada da biblioteca de esqueletos, possibilitando a criação de árvores de computação, com esqueletos ou computações OpenCL (KernelWrapper), com a ajuda de um conjunto de contentores que descrevem os tipos de dados válidos para uma computação OpenCL. A camada de execução é utilizada pela biblioteca para lidar com a plataforma, seja para a decomposição do domínio, utilizando

6 Aplicações Biblioteca de Esqueletos MapReduce Loop Pipeline Tipos de Dados Kernel Map For Vector KernelWrapper Sistema de Execução KernelBuilder Scheduler Excepções Contentores PartitionInfo ExecutionPlatform Task Launcher Auto-Tuner Task Dispositivos OpenCL Figura 4. Arquitectura do Marrow o Auto-Tuner, para distribuir tarefas pelos GPUs com o Scheduler ou para o lançamento de tarefas com o TaskLauncher. Por sua vez, o modelo de execução (Figura 5) está dividido em dois estágios principais: decomposição estática do domínio e pedidos dinâmicos de execução. O primeiro é iniciado com a criação do Skeleton (1) que desencadeia um pedido ao Scheduler para a decomposição das suas estruturas de entrada/saída (2). Para levar a cabo tal tarefa, o Scheduler recorre a dados de desempenho predeterminados (3), recolhidos no ato de instalação da biblioteca utilizando o Shoc Benchmark Suite [16]. A descrição das partições é de seguida organizada numa estrutura (4), que é guardada na informação associada às respetivas computações (KernelWrapper) aninhadas na árvore de computação (5). O segundo estágio inicia quando o programador submete um pedido execução ao esqueleto algorítmico, fornecendo o conjunto de dados ao qual quer aplicar a computação (6). É criado e devolvido um objeto Future (7, 8) que permite o acesso ao estado da computação (se terminou, ou não) tal como para acesso aos dados quando esta acaba. O programador pode então escolher esperar que a computação acabe (9), ou continuar execução até precisar dos resultados. O pedido é então submetido para o Scheduler, que utilizando as já criadas (10), adicionaas às filas de tarefas de cada GPU para serem executadas (11). A emissão dos comandos de execução e transferência de dados para o GPUs está a cargo do TaskLauncher. Para tal, este dispõe de um conjunto de threads que consomem os pedidos de execução da fila (12), transferem os dados de entrada para o dispositivo alvo e emitem os pedido de execução (13). Por fim quando todas as tarefas associadas a um pedido de execução terminam, o TaskLauncher notifica o Future que a computação acabou (14), que por sua ver notifica qualquer aplicação bloqueada à espera dos resultados (15). 4.1 Decomposição do Domínio A decomposição estática dos dados de entrada é efetuada utilizando o módulo Auto-Tuner, que permite a utilização de dados empíricos de desempenho para criar cargas de trabalho adequadas para os GPUs presentes no sistema. Neste contexto, o Auto-Tuner calcula o desempenho relativo entre todos os GPUs e as partições são criadas de acordo com este rácio. O desempenho relativo é na

7 Decomposição Estática de Domínio (9) (15) (8) Future Aplicação Skeleton (1) (6) (5) (7) Skeleton Pedido Dinâmico de Execução Partições GPU #1: P11 P12... P1n GPU #2: P21 P22... P2n (14) (2) Ref. (4) (10) Sistema de Execução (3) Scheduler (11) T(P1n)... T(P12) T(P11) T(P2n)... T(P22) T(P21) TaskLauncher (13) (12) GPU #1 GPU #2 Figura 5. Fluxo de execução do Marrow. realidade calculado em duas métricas: cálculo de precisão simples e dupla. A classificação no Marrow de que métrica utilizar não é perfeita, visto que o Auto-Tuner apenas tem acesso aos tipos de dados dos argumentos e não é analisado o código da computação OpenCL. Dado que apenas consideramos neste trabalho computações com paralelismo de dados e operações do tipo stencil (com fronteiras partilhadas) não são ainda suportadas, tem de existir uma correspondência entre os conjuntos de dados de entrada e de saída. Para ajudar o utilizador é possível, no entanto, definir um tamanho indivisível, pelo qual o Auto-Tuner adere de forma a possibilitar restrições na decomposição dos dados. 5 Resultados Experimentais Esta secção tem o objetivo de avaliar o desempenho dos esqueletos Marrow para paralelismo de tarefas quando transpostos de um para um para vários GPUs. Não comparamos com computações OpenCL puras, dado que Ricardo et al. já o fizeram em [8] com bons resultados. Começamos por descrever os casos de estudo escolhidos, seguido de uma breve discussão sobre o impacto do barramento PCIe na performance geral de aplicações em GPUs e finalmente são apresentados os resultados dos casos de estudo. Neste contexto, apresentamos quatro testes. O primeiro caso de estudo é um encadeamento de filtros de imagem, constituído por dois pipelines e três filtros, nomeadamente Gaussian Noise, Solarize e Mirror. Estes requerem que seja decomposto por tamanho de linha sendo que esta restrição é passada como tamanho indivisível ao Auto-Tuner. O segundo é um conjunto de Fast-Fourier Transformations (FFTs) de 512kB cada, adaptados do Shoc Benchmark Suite. Este é composto por um Pipeline em que o primeiro estágio é o FFT e o segundo é a sua inversa. É designado a cada GPU um certo número de FFTs, sendo que é utilizado o tamanho de um FFT como o tamanho indivisível para decomposição no Auto-Tuner.

8 Pipeline de filtros FFT N-Body (pixels) (MBytes) (número de corpos) Input parameter size S 1 tempo de execução (ms) S 2 tempo de execução (ms) Tabela 1. Tempos de execução com um GPU em milisegundos. O terceiro e último caso de estudo é uma simulação N-Body em que são iterativamente calculados os efeitos de forças num sistema de dinâmico de corpos (bodies). Este é decomposto pelo número de partículas (uma região) a calcular por cada decomposição. Visto que este teste precisa de acesso a todos os outros corpos do sistema, é necessário que todo o conjunto de entrada esteja disponível em todos os GPUs na sua integralidade, tal como a sincronização ao fim de cada iteração da simulação. Este caso de estudo é implementado utilizando um Loop com uma condição de paragem semelhante a um For. A única diferença é que é necessário forçar a sincronização dos dados de entrada para todos os GPUs, simplesmente marcando-os como modificados na função de evolução step. Foram utilizados dois sistemas distintos para avaliar os casos de estudos: S 1 S 2 tem um Intel(R) Xeon(R) E GHz, com uma motherboard ASUS P6T7, 12 GB de RAM, e três GPUs: duas NVidia Tesla C1060 e uma NVIDIA Quadro FX A configuração dos GPUs é C1060 :: FX3800 :: C1060. tem um Intel(R) Core(TM) i7-3930k 3.20GHz, com uma motherboard ASUS P9X79 PRO, 32 GB de RAM, e duas AMD Radeon HD É importante notar que o S 2 ao contrário do S 1 suporta uma configuração com duplo x16 PCIe possibilita fatores de aceleração escalarem linearmente na transferência de dados para dois GPUs versus um único GPU. Este facto foi confirmado com o nosso benchmark de transferência de dados. Em contraste, o S 1, apesar de apresentar um melhoramento na taxa de utilização do barramento PCIe, este não é linear, apresentando ganhos de 40% quando se utiliza dois GPUs e 54% quando se utiliza os três. Desempenho Os casos de estudo têm o objetivo de avaliar a nossa abordagem em termos da escalabilidade. Os tempos de execução estão limitados ao tempo entre a submissão e obtenção dos resultados, excluindo o tempo de inicialização e tempos de decomposição do domínio. Este último apenas calculado uma vez, e tem um tempo de execução mínimo, sem ultrapassar 0.15ms. A Tabela 1 apresenta os tempos base de execução usando um GPU. Na Figura 6 podemos ver os fatores de aceleração de múltiplos GPUs para os quatro casos de estudo apresentados previamente, em relação à execução no Marrow utilizando apenas um GPU. Cada caso de estudo foi executado 500 vezes, as suas durações foram guardadas e ordenadas e apenas temos em conta um terço dos valores situados no meio da lista.

9 2.00 Fator de Aceleração ^2 4096^2 8192^2 128 MB 256 MB 512 MB Pipeline de Filtros (pixels) FFT (tamanho dos dados) N- Body (número corpos) (S1) 2 GPUs (S1) 3 GPUs (S2) 2 GPUs ^2 4096^2 8192^2 3 GPU 2 GPU 1 GPU 3 GPU 2 GPU 1 GPU 3 GPU 2 GPU 1 GPU 0% 20% 40% 60% 80% 100% Execução Transferência de dados e orquestração Figura 6. Fatores de aceleração versus execução com um GPU. Figura 7. Decomposição do pipeline de filtros de imagem em S1. Sendo que no sistema S 1, temos um conjunto de GPUs heterogéneos, o desempenho relativo calculado pelo Marrow para o tamanho das partições é: C1060 (36%) :: FX 3800 (27%) :: C1060 (37%). Desta forma o fator de aceleração máximo para dois e três GPUs 1.75 e 2.70 respetivamente. Estes, no entanto, são os valores ótimos que não têm em conta o barramento PCIe partilhado entre os três GPU, limitando mais os fatores de aceleração possíveis em problemas com tamanhos significativos de transferências. Na Figura 7 podemos observar a decomposição do tempo de execução numa computação limitada pela transferência de dados, sendo que esta relação entre tempo de computação e tempo de transferência é indiretamente proporcional ao número de GPUs. No nosso conjunto de casos de teste, o pipeline de filtros de imagens tem esta característica, sendo que apresentam os melhores resultados em problemas de tamanho médio com um fator de aceleração máximo de 1.85 com três GPUs. O FFT, em contraste, tem um peso de computação mais significante, que se pode ver na escalabilidade constante, apesar de não ser linear, sendo o valor mais elevado de A simulação N-Body, utiliza um algoritmo O(N 2 ), apresentando uma carga computacional extrema, que contabiliza entre 88% (para problemas pequenos) e 98% (para um número elevado de corpos). Para ter melhor performance, este tira partido de memória local de cada grupo de trabalho no GPU para otimizar o acesso aos dados em memória global. Esta característica implica que o tamanho do trabalho de grupo local tem um papel importante no desempenho desta computação. O Auto-Tuner neste momento não tenta otimizar este parâmetro, sendo que neste momento os grupos de trabalho são forçados para serem múltiplos de 64 (variando no tamanho, de acordo com o tamanho da partição). Esta é uma medida temporária, e proporciona um tradeoff entre granularidade da decomposição dos conjuntos de dados (mantendo alguma precisão em relação à proporção de desempenho dos GPUs) e o tamanho dos grupos

10 de trabalho locais possíveis. Este facto pode-se observar na escalabilidade, por vezes super-escalabilidade, mas que não se aplica a todos os casos devido à flutuação implícita do tamanho dos grupos locais de trabalho presente no sistema S 1. No caso do sistema S 2, devidos aos GPUs serem homogéneos, temos resultados consistentes, visto que o tamanho do grupo local de trabalho se tornar constante dado haver decomposições iguais, este possibilita uma escalabilidade proporcional ao tamanho do problema, sendo interessante mencionar que obtém um fator de aceleração 1.77 para corpos neste caso de estudo apesar de este caso não estar apresentado devido à instabilidade do desempenho no S 1 no estado corrente do Marrow. Esta escalabilidade deve-se à elevada capacidade de computação dos GPUs, que se pode observar na Tabela 1 em relação às placas presentes em S 1. Em geral os tempos de execução no S 2 apresentam um grau de escalabilidade melhor, devido, não só à potência já mencionada dos GPUs, mas também do facto de existirem barramentos PCIe dedicados. Tal como no N-Body, todos os testes escalam proporcionalmente com o tamanho do conjunto de dados, mostrando fatores de aceleração perto ou acima de Trabalho Relacionado Já existe alguma investigação de construções pipeline no contexto GPGPU, nomeadamente Lime [9], StreamIt [10] e NMM [11]. O Lime é uma linguagem compatível com o Java que permite computação em sistemas com um único GPU de forma transparente. Pipelines são possíveis utilizando uma operação nova (=>), encadeando filters, a unidade de computação. O StreamIt e NMM são trabalhos que tiram partido de stream processing, um modelo de programação que permite a computação de fluxos contínuos de dados. Ambos suportam múltiplos GPUs, e as computações podem ser representadas utilizando um grafo orientado, onde cada nó é uma computação. No StreamIt o grafo é particionado, utilizando um algoritmo iterativo de coarsening/uncoarsening que permite a partição do grafo tendo em conta os requisitos de cada nó e analisando os caminhos dos dados. Esta abordagem permite também minimizar a migração de dados entre GPUs. O NMM suporta clusters, sendo que se baseia no alto número potencial de GPUs disponíveis para distribuir apenas um nó de computação do grafo para cada GPU. Existe um alto nível de migração de dados neste sistema, sendo que é necessário que cada nó de computação seja pesado o suficiente para que o overhead da transferência seja minimizado. No contexto dos esqueletos algorítmicos, não existe nenhum sistema que implemente Pipeline nem Loop no contexto GPGPU. Do nosso conhecimento, apenas três bibliotecas suportam computação em múltiplos GPUs. O primeiro é o SkelCL [6] que oferece um conjunto de esqueletos que tira partido de paralelismo de dados, nomeadamente Map, Reduce, Zip e Scan. Para o suporte multi-gpu, o SkelCL usa decomposição estática dos conjuntos de dados e distribui estas usando políticas predeterminadas. O segundo é o SkePU [7] que se foca também em esqueletos que tiram partido de paralelismo de dados tais como Map, Reduce e variantes do Map, MapOverlap

11 e MapArray. O seu suporte para múltiplos GPU é conseguido através de integração do StarPU [17]. Este utiliza paralelismo de tarefas com work-stealing num ambiente com vários GPUs e clusters. O terceiro é o Muesli [18], que suporta clusters com múltiplos cores e GPUs usando CUDA. Os esqueletos suportados são Pipeline, Farm, DivideAndConquer, BranchdAndBound, Fold, Map, Scan e Zip, sendo que apenas os quatro últimos são suportados para execução GPU. O Pipeline é semelhante ao presente no Marrow, podendo ser utilizado para a orquestração explícita de execuções em CPUs, no entanto, este não tem suporte para GPUs. Não existe muita informação sobre o funcionamento das execuções com múltiplos GPUs, e o código disponível não apresenta suporte para execução GPU. No entanto, pela informação existente consegue-se concluir que todo o particionamento e agendamento de tarefas é delegado ao programador. O Marrow distingue-se das bibliotecas de esqueletos mencionadas ao implementar esqueletos novos (Pipeline e Loop) no contexto GPGPU utilizando múltiplos GPUs. O modelo interno de execução do Marrow assemelha-se vagamente ao presente no SkePU, pois ambos utilização paralelismo de tarefas internamente. Em relação aos trabalhos de processamento de fluxos de dados, há uma diferença obvia em modelo de programação, sendo que o Marrow é mais flexível nos tipos de computação possíveis pelo programador. 7 Conclusões Neste trabalho apresentamos o Marrow, uma biblioteca de esqueletos algorítmicos, para a execução de computações complexas em sistemas contendo múltiplos GPUs. Do nosso conhecimento o Marrow é a primeira biblioteca de esqueletos algorítmicos a implementar, neste contexto, esqueletos que tiram partido de paralelismo de tarefas, nomeadamente o Loop e Pipeline. Os resultados apresentam escalabilidade significativamente consistente, exceto no caso do N-Body, que introduz novas considerações relacionadas a ambientes com GPUs heterogéneos, que não são ainda consideradas no Marrow. Estas estão intrinsecamente associadas ao tamanho do grupo local de trabalho quando se utiliza a memória local para implementar técnicas de caching. Discutimos também o impacto que a configuração do barramento PCIe tem em vários tipos de computação, através dos dois sistemas apresentados na avaliação do Marrow, em que um sistema está equipado com barramentos PCIe dedicados a cada GPU, e o outro tem um barramento partilhado entre três GPUs. O Marrow está ainda em desenvolvimento pelo que existem ainda vários tópicos de investigação a endereçar. Uma nova abordagem seria a designação de tarefas utilizando work-stealing. É também possível melhorar a decomposição do domínio de duas formas: (1) introduzindo otimizações relativas à configuração dos grupos locais de trabalho e (2) decompondo a árvore de computação e distribuindo-a pelos GPUs. Esta última abordagem implica também a utilização de técnicas que minimizem a migração de dados, devido ao elevado custo inerente ao barramento PCIe.

12 Referências 1. hgpu.org: High performance computing on graphics processing units - Applications. (consultado em Junho 2013) 2. Gu, L., Li, X., Siegel, J.: An empirically tuned 2D and 3D FFT library on CUDA GPU. In: ICS 10, ACM (2010) Lalami, M.E., Baz, D.E., Boyer, V.: Multi GPU implementation of the simplex algorithm. In: HPCC 11, IEEE (2011) Munshi, A., et al.: The OpenCL Specification. Khronos OpenCL Working Group. (2009) 5. NVIDIA Corporation: NVIDIA CUDA. home_new.html (last visited in June 2013) 6. Steuwer, M., Kegel, P., Gorlatch, S.: Towards High-Level Programming of Multi- GPU Systems Using the SkelCL Library. In: IPDPSW 12, IEEE Computer Society (2012) Dastgeer, U., Enmyren, J., Kessler, C.: Auto-tuning SkePU: a multi-backend skeleton programming framework for multi-gpu systems. In: IWMSE 11, ACM (2011) Marques, R., Paulino, H., Alexandre, F., Medeiros, P.D.: Algorithmic skeleton framework for the orchestration of GPU computations. In: Euro-Par Number 8097 in Lecture Notes in Computer Science, Springer-Verlag (2013) Dubach, C., Cheng, P., Rabbah, R.M., Bacon, D.F., Fink, S.J.: Compiling a highlevel language for GPUs: (via language support for architectures and compilers). In: PLDI 12, ACM (2012) Huynh, H.P., Hagiescu, A., Wong, W.F., Goh, R.S.M.: Scalable framework for mapping streaming applications onto multi-gpu systems. In: PPOPP 12, ACM (2012) Repplinger, M., Slusallek, P.: Stream processing on GPUs using distributed multimedia middleware. Concurrency and Computation: Practice and Experience (2011) Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-gpu systems and clusters. IJHPCN 7(2) (2012) AMD Corporation: Bolt C++ Template Library. tools/heterogeneous-computing/ (consultado em Junho 2013) 14. Hoberock, J., Bell, N.: Thrust: A parallel template library (consultado em Junho 2013) 15. González-Vélez, H., Leyton, M.: A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers. Softw., Pract. Exper (2010) Danalis, A., Marin, G., McCurdy, C., Meredith, J.S., Roth, P.C., Spafford, K., Tipparaju, V., Vetter, J.S.: The scalable heterogeneous computing (SHOC) benchmark suite. In: GPGPU 10, ACM (2010) Augonnet, C., Thibault, S., Namyst, R., Wacrenier, P.A.: StarPU: A unified platform for task scheduling on heterogeneous multicore architectures. In: Euro-Par 09, Springer (2009) Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-gpu systems and clusters. Int. J. High Perform. Comput. Netw. (2012)

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

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

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

PPD: Balanceamento de Carga e Scheduling 2

PPD: Balanceamento de Carga e Scheduling 2 PPD: Balanceamento de Carga e Scheduling 2 Fernando Silva DCC-FCUP 2 (Alguns dos slides são baseados nos de Kathy Yelick, www.cs.berkeley.edu/ yelick) Fernando Silva (DCC-FCUP) PPD: Balanceamento de Carga

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

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

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

Balanceamento de Carga

Balanceamento de Carga 40 4. Balanceamento de Carga Pode-se entender por balanceamento de carga uma política a ser adotada para minimizar tanto a ociosidade de utilização de alguns equipamentos quanto a super utilização de outros,

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação Ricardo Argenton Ramos Engenharia de Software II 2013.1 Diagrama de Estado Um diagrama de estados (statechart), também conhecido por

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

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

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler Emilio Hoffmann, Bruno M. Muenchen, Taís T. Siqueira, Edson L. Padoin e Philippe O. A. Navaux Universidade Regional do Noroeste

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

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

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

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

Organização e Arquitetura de Computadores

Organização e Arquitetura de Computadores Organização e Arquitetura de Computadores Entrada e saída Alexandre Amory Edson Moreno Nas Aulas Anteriores Foco na Arquitetura e Organização internas da Cleo Modelo Von Neuman Circuito combinacional Circuito

Leia mais

Introdução aos Sistemas Operativos

Introdução aos Sistemas Operativos Introdução aos Sistemas Operativos Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 06/07 Sérgio Sobral Nunes mail: sergio.nunes@fe.up.pt web: www.fe.up.pt/~ssn Sumário Definição

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

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

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Profª Dra. Ana Paula Gonçalves Serra Engenharia de O Processo Uma Visão Genérica Capítulo 2 (até item 2.2. inclusive) Engenharia de - Roger Pressman 6ª edição McGrawHill Capítulo

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

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

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

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

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

Universidade Paulista

Universidade Paulista Universidade Paulista Ciência da Computação Sistemas de Informação Gestão da Qualidade Principais pontos da NBR ISO/IEC 12207 - Tecnologia da Informação Processos de ciclo de vida de software Sergio Petersen

Leia mais

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling DIMENSIONANDO PROJETOS DE WEB-ENABLING Uma aplicação da Análise de Pontos de Função Dimensionando projetos de Web- Enabling Índice INTRODUÇÃO...3 FRONTEIRA DA APLICAÇÃO E TIPO DE CONTAGEM...3 ESCOPO DA

Leia mais

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado 5 Avaliação Decidimos avaliar a arquitetura de componentes para o OiL proposta neste trabalho em duas dimensões diferentes. Na primeira, demonstramos a capacidade de configuração do middleware com alguns

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

Introdução ao Processamento Paralelo

Introdução ao Processamento Paralelo Introdução ao Processamento Paralelo Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Introdução Crescente aumento de desempenho dos PCs (máquinas convencionais). Existem aplicações que requisitam

Leia mais

Engenharia de Software Sistemas Distribuídos

Engenharia de Software Sistemas Distribuídos Engenharia de Software Sistemas Distribuídos 2 o Semestre de 2009/2010 FEARSe Requisitos para a 1 a entrega 18 de Março de 2010 1 Introdução O projecto conjunto das disciplinas de Engenharia de Software

Leia mais

Categorias de Padrões

Categorias de Padrões Categorias de Padrões Padrão Arquitetural ou Estilo Arquitetural Padrão de Design (Design Patterns) Idiomas Categorias de Padrões ESTILOS ARQUITETURAIS PADRÕES DE DESIGN IDIOMAS Padrões de Design Os subsistemas

Leia mais

Orientação a Objetos

Orientaçã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 mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 19: Visão geral sobre otimização de programas 06 de julho de 2010 1 2 3 Características esperadas dos programas O primeiro objetivo ao escrever programas de computador

Leia mais

AULA 5 Sistemas Operacionais

AULA 5 Sistemas Operacionais AULA 5 Sistemas Operacionais Disciplina: Introdução à Informática Professora: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Sistemas Operacionais Conteúdo: Partições Formatação Fragmentação Gerenciamento

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

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. Centro de Emprego e Formação Profissional da Guarda Curso: Técnico de Informática Sistemas (EFA-S4A)-NS Trabalho Realizado Por: Igor_Saraiva nº 7 Com

Leia mais

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

Leia mais

O quê um Processador e qual a sua função?

O quê um Processador e qual a sua função? O quê um Processador e qual a sua função? O processador é um chip de silício responsável pela execução das tarefas atribuídas ao computador. Os processadores (ou CPUs, de Central Processing Unit) são responsáveis

Leia mais

12 EXCEL MACROS E APLICAÇÕES

12 EXCEL MACROS E APLICAÇÕES INTRODUÇÃO O principal objetivo deste livro é auxiliar o leitor na sua aprendizagem sobre os recursos avançados do Excel em especial na interligação com o Visual Basic for Applications (VBA). Pretende-se

Leia mais

Curso de Instalação e Gestão de Redes Informáticas

Curso de Instalação e Gestão de Redes Informáticas ESCOLA PROFISSIONAL VASCONCELLOS LEBRE Curso de Instalação e Gestão de Redes Informáticas SISTEMAS DE ARQUIVOS FAT E FAT32 José Vitor Nogueira Santos FT2-0749 Mealhada, 2009 Introdução Muitos usuários

Leia mais

Clip-art Retrieval using Sketches PTDC/EIA-EIA/108077/2008

Clip-art Retrieval using Sketches PTDC/EIA-EIA/108077/2008 PROJECTOS DE INVESTIGAÇÃO CIENTÍFICA E DESENVOLVIMENTO TECNOLÓGICO Clip-art Retrieval using Sketches PTDC/EIA-EIA/108077/2008 Deliverable: D1 - Clip-art Simplification Tool Task: T1 - Clip-art Simplification

Leia mais

Análise de Sistemas. Conceito de análise de sistemas

Análise de Sistemas. Conceito de análise de sistemas Análise de Sistemas Conceito de análise de sistemas Sistema: Conjunto de partes organizadas (estruturadas) que concorrem para atingir um (ou mais) objectivos. Sistema de informação (SI): sub-sistema de

Leia mais

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva Arquitetura de Computadores - Processadores Superescalares por Helcio Wagner da Silva Introdução O Pipeline é uma técnica desenvolvida para a melhoria do desempenho frente à execução seqüencial de instruções

Leia mais

Análise de Desempenho de um SGBD para Aglomerado de Computadores

Análise de Desempenho de um SGBD para Aglomerado de Computadores Análise de Desempenho de um SGBD para Aglomerado de Computadores Diego Luís Kreutz, Gabriela Jacques da Silva, Hélio Antônio Miranda da Silva, João Carlos Damasceno Lima Curso de Ciência da Computação

Leia mais

3 Arquitetura do Sistema

3 Arquitetura do Sistema 3 Arquitetura do Sistema Este capítulo irá descrever a arquitetura geral do sistema, justificando as decisões de implementação tomadas. Na primeira seção iremos considerar um conjunto de nós interagindo

Leia mais

CPU Unidade Central de Processamento. História e progresso

CPU Unidade Central de Processamento. História e progresso CPU Unidade Central de Processamento História e progresso O microprocessador, ou CPU, como é mais conhecido, é o cérebro do computador e é ele que executa todos os cálculos e processamentos necessários,

Leia mais

Hardware & Software. SOS Digital: Tópico 2

Hardware & Software. SOS Digital: Tópico 2 Hardware & Software SOS Digital: Tópico 2 Os objetos digitais são acessíveis somente através de combinações específicas de componentes de hardware a parte física do computador software programas para operar

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

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores As empresas mais antigas e ainda hoje no mercado que fabricam CPUs é a Intel, AMD e Cyrix.

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

APOO Análise e Projeto Orientado a Objetos. Requisitos

APOO Análise e Projeto Orientado a Objetos. Requisitos + APOO Análise e Projeto Orientado a Objetos Requisitos Requisitos 2 n Segundo Larman: n São capacidades e condições às quais o sistema e em termos mais amplos, o projeto deve atender n Não são apenas

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

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

Leandro Ramos RAID. www.professorramos.com

Leandro Ramos RAID. www.professorramos.com Leandro Ramos RAID www.professorramos.com RAID RAID significa Redundant Array of Independent Disks. Em bom português, significa Matriz Redundante de Discos Independentes. Apesar do nome ser complicado,

Leia mais

Uso do Netkit no Ensino de Roteamento Estático

Uso do Netkit no Ensino de Roteamento Estático Uso do Netkit no Ensino de Roteamento Estático Nyl Marcos Soares Barbosa, Moisés Lima dos Anjos, Madianita Bogo Curso de Sistemas de Informação Centro universitário Luterano de Palmas (CEULP/ULBRA) Teotônio

Leia mais

Prof. Sandrina Correia

Prof. Sandrina Correia Tecnologias de I informação de C omunicação 9º ANO Prof. Sandrina Correia TIC Prof. Sandrina Correia 1 Objectivos Definir os conceitos de Hardware e Software Identificar os elementos que compõem um computador

Leia mais

4 Implementação e Resultados Experimentais

4 Implementação e Resultados Experimentais 4 Implementação e Resultados Experimentais Com o objetivo de fazer a criação automática de visões materializadas, ou seja, prover uma solução on-the-fly para o problema de seleção de visões materializadas,

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel 2.6 2799 1575

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel 2.6 2799 1575 21 4 Análise É necessária uma análise criteriosa, que busque retornar as questões primordiais sobre o que é realmente preciso para a aquisição de uma plataforma de produção gráfica digital profissional.

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Aula 04 A. Barramentos. Prof. Ricardo Palma

Aula 04 A. Barramentos. Prof. Ricardo Palma Aula 04 A Barramentos Prof. Ricardo Palma Definição Em ciência da computação barramento é um conjunto de linhas de comunicação que permitem a interligação entre dispositivos, como o CPU, a memória e outros

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto.

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto. Discussão sobre Nivelamento Baseado em Fluxo de Caixa. Item aberto na lista E-Plan Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em

Leia mais

On Scalability of Software-Defined Networking

On Scalability of Software-Defined Networking On Scalability of Software-Defined Networking Bruno dos Santos Silva bruno.silva@ic.uff.br Instituto de Computação IC Universidade Federal Fluminense UFF 24 de Setembro de 2015 B. S. Silva (IC-UFF) On

Leia mais

ESTUDO DE CASO WINDOWS VISTA

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

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Serviço de instalação e arranque HP para o HP Insight Control

Serviço de instalação e arranque HP para o HP Insight Control Serviço de instalação e arranque HP para o HP Insight Control Serviços HP Care Pack Dados técnicos O serviço de instalação e arranque HP para o HP Insight Control fornece a implementação e configuração

Leia mais

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003 PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003 1 PLANEAMENTO DA INSTALAÇÃO Instalar o Windows Server 2003 requer alguma preparação, devido à sua complexidade: Ao correr o programa de setup (configuração)

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

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

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Alta Disponibilidade na IPBRICK

Alta Disponibilidade na IPBRICK Alta Disponibilidade na IPBRICK IPBRICK International 5 de Dezembro de 2012 1 Conteúdo 1 Introdução 3 1.1 Vantagens.................................... 3 2 Requisitos HA 4 3 Configuração HA 4 3.1 Serviço

Leia mais

VIRTUALIZAÇÃO CONVENCIONAL

VIRTUALIZAÇÃO CONVENCIONAL VIRTUALIZAÇÃO CONVENCIONAL Sera usado o VirtualBox 5.0.8 a versão mais atual e estável da aplicação, para virtualização de um sistema Linux sobre a plataforma Windows. Para esse modelo pratico de virtualização

Leia mais

CHECK - LIST - ISO 9001:2000

CHECK - LIST - ISO 9001:2000 REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da

Leia mais