Cluster Benchmarking. Autores: Bernardo Nunes Figueiredo Patrão Susana Filipa de Noronha Boavida Fernandes



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

Introdução aos Computadores

CASE STUDY FOR RUNNING HPC APPLICATIONS IN PUBLIC CLOUDS

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

MEDIDA E ANÁLISE DE DESEMPENHO AULA 14 Arquitetura de Computadores Gil Eduardo de Andrade

Comparativo de desempenho do Pervasive PSQL v11

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

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters

Arquitetura de Rede de Computadores

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

CPU Unidade Central de Processamento. História e progresso

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Memórias Prof. Galvez Gonçalves

Sistemas Computacionais II Professor Frederico Sauer

AULA TEÓRICA 2 Tema 2. Conceitos básicos de informática, computadores e tecnologias de informação. Sistemas de numeração (continuação)

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Programação de Sistemas

Processos e Threads (partes I e II)

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

TRABALHO COM GRANDES MONTAGENS

Sistemas Distribuídos

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

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

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem

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

Sistemas Operacionais. Prof. André Y. Kusumoto

Introdução à Arquitetura de Computadores

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

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

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

1 - SISTEMA DE FICHEIROS NO WINDOWS

AVALIAÇÃO À DISTÂNCIA 1 GABARITO

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

Análise de desempenho de processadores ATmega328 utilizando Benchmark Linpack Marcos S. Morgenstern, Lori R. F. Machado Filho, Edson L.

Profs. Deja e Andrei

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Sistemas Operacionais Gerência de Dispositivos

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Sistemas Operacionais. Prof. André Y. Kusumoto

Um Modelo Matemático de Gestão de Recursos Humanos

Introdução a Informática. Prof.: Roberto Franciscatto

Figura 1 - Memória 1. OBJETIVO. Conhecer os principais tipos de memórias entendendo suas funcionalidades e características.

Arquitetura de Computadores I

Desempenho de Computadores

Introdução a Organização de Computadores Aula 4

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

discos impressora CPU memória AULA 04 - Estruturas de Sistemas Computacionais Operação dos sistemas de computação Controlador de disco

Entendendo como funciona o NAT

Um sistema SMS 1 simplificado

Dadas a base e a altura de um triangulo, determinar sua área.

Referencial do Módulo B

Técnicas de Manutenção de Computadores

Prof. Samuel Henrique Bucke Brito

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

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

Figura 1 - O computador

GESTÃO DE SISTEMAS OPERACIONAIS II

SISTEMAS INFORMÁTICOS

ARQUITECTURA DO WINDOWS

Arquitectura de Sistemas Paralelos e Distribuídos

Introdução a Informática. Prof.: Roberto Franciscatto

LEIC/LERC 2012/13 2º Teste de Sistemas Operativos 15/Janeiro/2013

CAP. I ERROS EM CÁLCULO NUMÉRICO

Aula 06. Memórias RAM

Prof. Sandrina Correia

Introdução à Computação: Arquitetura von Neumann

Tecnologia da Informação. Prof Odilon Zappe Jr

RAID 1. RAID 0 2. RAID 1

Sistemas Operativos I

Orientação a Objetos

MEMÓRIA M.1 - HIERARQUIA DE MEMÓRIAS NUM COMPUTADOR DIGITAL

Serial Paralela USB FireWire(IEEE1394)

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

DIFERENÇAS ENTRE HUB, SWITCH E ROOTER

Organização de Computadores 1

1. NÍVEL CONVENCIONAL DE MÁQUINA

Informática I. Aula 5. Aula 5-13/05/2006 1

Tecnologia de Sistemas Distribuídos Capítulo 8: Sistemas de Ficheiros Distribuídos Paulo Guedes

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 20

4 Estrutura do Sistema Operacional Kernel

Sistemas Operativos. Funções genéricas de um S.O.

Introdução Processamento Paralelo

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Escola Secundária de Emídio Navarro

Memória Cache. Prof. Leonardo Barreto Campos 1

Sistemas Operacionais

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 11

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

PROJETO DE REDES

Placa de vídeo em CUDA

Grupo I [4v] executaprograma();

Curso Técnico em Redes

Desempenho DESEMPENHO DE COMPUTADORES

Transcrição:

Cluster Benchmarking Autores: Bernardo Nunes Figueiredo Patrão Susana Filipa de Noronha Boavida Fernandes

Índice Introdução... página 2 O que é um cluster?... página 2 Cluster benchmarking... página 3 Tipos de High-Performance Computing Benchmarks... página 3 NAS Parallel Benchmark... página 4 High-Performance Linpack. página 6 Hierarchical Integration... página 7 Perf... página 8 IOzone... página 9 Tutoriais... página 10 Case Study.. página 13 Perguntas página 18 Bibliografia página 19 Pagina nº1

Introdução Com o rápido desenvolvimento dos processadores e das tecnologias de rede, os sistemas distribuídos têm vindo a ganhar cada vez mais importância, tendo-se tornado cada vez mais atraentes pela sua elevada performance. As necessidades de poder computacional estão em constante crescimento, desta forma, cada vez mais se trabalha no sentido de arranjar soluções baratas para conseguir grande capacidades de processamento e/ou de armazenamento. É neste contexto que nasceu a ideia de cluster. O que é um cluster? Um cluster é um conjunto de duas ou mais máquinas (nodos) interligadas de um modo dedicado, funcionando como uma só supermáquina. Um dos primeiros clusters era constituído por 4 nodos, cada um com um processador DX4 a 100Mhz. Este cluster chamava-se Wiglaf e data de 1994. Desde essa altura que se têem vindo a criar clusters cada vez mais potentes e maiores. Desta forma e em paralelo com o crescimento dos novos clusters, apareceram métodos para os testar e comparar: As benchmarks para clusters! Pagina nº2

Cluster Benchmarking Tradicionalmente, as benchmarks são os instrumentos utilizados para quantificar o desempenho de um sistema que permitem fazer uma análise comparativa entre sistemas. No entanto, em clusters de alta performance (High Performance Computing, HPC), o uso de benchmarks não serve apenas para medir a performance de um cluster, mas também para medir a escalabilidade dos nodos e/ou aplicações intensivas de comunicação. Quando consideramos o uso de um HPC cluster (High Performance Computing cluster) para correr aplicações computacionais intensivas, é necessário prever a maneira como o cluster se irá comportar com um grande número de nodos e como se comportará com grandes fluxos de tráfego. Tipos de High Performance Computing Benchmarks As HPC benchmarks dividem-se em vários tipos. Existem benchmarks específicas para testar o subsistema de memória, ou outros subsistemas específicos. Outras benchmarks actuam ao nível da performance de aplicações paralelas. As benchmarks existentes normalmente resumem o resultado a um simples número. As duas unidades de medida de desempenho mais importantes em HPC são MFLOPS (millions of floating-point operations per second), também chamada megaflops, MIPS (millions of instructions per second) e QUIPS (quality improvement per second). A unidade MIPS estão relacionadas com o clock rate, o que nem sempre é a melhor maneira de comparação entre sistemas, devido às grandes diferenças entre arquitecturas dos vários processadores. As unidades QUIPS medem a velocidade a que os resultados se estão a aproximar da solução final. Esta medida varia, obviamente, com o desenrolar da execução do programa. Pagina nº3

NAS Parallel Benchmark Para medição e comparação do desempenho de sistemas paralelos (ao nível de aplicações), têm sido largamente utilizadas as Numerical Aerodynamic Simulation (NAS) Parallel Benchmarks (NPB). As NPB foram desenvolvidas pela NASA Ames Research Center. Como a versão 2.4 desta benchmark se baseia em MPI (message passing interface), permite fazer uma análise comparativa da performance de um cluster com vários nodos. A suite de benchmarks NPB consiste em oito programas que derivam de código CFD (computational fluid dynamics). CFD consiste em de substituir as equações diferenciais que orientam os problemas fluídos por equações algébricas lineares. Figura 1 Exemplos de CFD As características de CFD fazem com que as NPB sejam ideais para medir e testar vários níveis da comunicação entre máquinas de um mesmo cluster, assim como velocidade de processamento, pois é necessário processar paralelamente grandes matrizes. Dos oito programas que constituem as NPB, cinco são kernels e três são aplicações CFD. Os cinco kernels EP, FT, MG, CG e IS tentam simular o núcleo computacional de aplicações CFD. As três aplicações CFD são SP, BT e EP. A seguir resumimos as funções de cada um destes oito programas. IS (Integer Sort) esta benchmark testa a velocidade de computação de inteiros, e performance de comunicação através da realização de operações paralelas de organização de inteiros. Pagina nº4

FT (Fast Fourier Transformation) esta benchmark testa a performance da comunicação de longa distância, resolvendo equações diferenciais 3D. MG (Multigrid Benchmark) testa tanto a comunicação estruturada de curta e longa distância. CG (Conjugate Gradient) testa a comunicação irregular de longa distância. LU (Lower-Upper diagonal) o kernel LU serve para testar comunicação bloqueante. Para isso esta benchmark utiliza um esquema numérico para resolver matrizes triangulares superiores e inferiores. SP (Scalar pentadiagonal) e BT (Block tridiagonal) estas duas benchmarks testam o equilíbrio entre processamento e comunicação. Para isso faz um uso relativamente alto de I/O paralelo, ou seja, escreve num disco, lê de outros, etc. Invulgarmente, estas benchmarks precisam de um cluster com um número de processadores cuja raiz seja um número inteiro (i.e., 2, 4, 9, 16, 25, etc), ou seja, precisam de ser executados paralelamente com esse número de processos. EP (Embarassingly Parallel) este teste gera pares de variáveis Gaussianas aleatórias, não havendo comunicação inter-processador quer dentro da mesma máquina quer para outras maquinas do cluster. Por isso, este tipo de programas são normalmente chamados de Embarassingly Parallel. Os resultados das NBP podem ser usados para comparar a escalabilidade de um cluster, assim como a performance dos vários nodos. Pagina nº5

High-Performance Linpack (HPL) A benchmark Linpack foi desenvolvida por Jack Dongarra e é uma das mais conhecidas e mais largamente utilizada na área de HPC. Esta benchmark utiliza rotinas algébricas para medir o tempo necessário para a resolução de um sistema denso de equações lineares de precisão dupla (64 bits), utilizando para esse efeito o conceito de memória distribuída. Os resultados desta benchmark são expressos em número de FLOPS (floating point operations per second). A benchmark inicial, em 1980, tinha um tamanho fixo (matriz de tamanho aproximado 100x100) que deixou de ser viável assim que essa matriz passou a caber na cache de um micro-processador. Para ultrapassar este problema foi assim criada a nova Linpack, denominada High- Performance Linpack, que é a utilizada hoje em dia. Esta difere da versão anterior na medida em que o utilizador pode definir o tamanho da matriz. A ideia é escolher uma matriz suficientemente grande mas que ainda assim caiba na memória principal. Para atingir isto, é recomendado escolher o tamanho da matriz, como sendo 80% do tamanho total da memória. Se o tamanho escolhido for demasiado grande, pode ocorrer swapping o que irá reduzir a performance significativamente. A HPL é frequentemente utilizada para medição de performance genérica de super computadores. Para correr esta benchmark é necessário o uso de MPI e ou BLAS (Basic Linear Algebra Subprograms) ou VSIPL (Vector Signal Image Processing Library). Pagina nº6

Hierarchical Integration (HINT) Esta benchmark foi desenvolvida pelo U.S Departement of Energy s Ames Research Laboratory. É bastante popular, sendo largamente utilizada para medir a performance de subsistema. Os resultados obtidos representam graficamente a performance de floating-point e de inteiros, hierarquia de memória, performance da memória e precisão numérica. A HINT benchmark utiliza como medida de velocidade QUIPS (quality improvement per second), ou seja uma medida que indica a velocidade a que os resultados se estão a aproximar da solução final. O teste da performance é efectuado através da tentativa de resolução de um problema de integração sucessiva. Quando se corre a benchmark o requisito de memória começa por ser pequeno, aumentando drasticamente ao longo do tempo, enchendo primeiro as caches, depois a memória principal e depois passando a aceder a disco. Figura 2 Exemplo de resultados gráficos obtidos com a benchmark HINT Pagina nº7

Perf Perf é uma benchmark simples de medição da latency e bandwidth que permite comunicação ponto a ponto (ping pong). São enviadas mensagens de diferentes tamanhos entre dois nodos que podem variar entre 1byte a 1MB. É assim calculada a latência, ou seja, o tempo que decorre entre o envio de uma mensagem e a recepção do respectivo acknowledge. A bandwidth é calculada com base nos valores médios dos tempos de respostas. Figura 3 Exemplo de um gráfico gerado pelos resultados obtidos com Perf Pagina nº8

IOzone O subsistema de I/O é um dos subsistemas frequentemente testados, assim como o desempenho do file system. A benchmark IOzone mede uma variedade de operações sobre ficheiros. As seguintes operações são testadas por esta benchmark: read, write, reread, rewrite, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, e aio_write. A IOzone além de medir o subsistema de I/O e comparar a performance dos diferentes sistemas de ficheiros, pode também ser utilizada para comparar e medir a performance de diferentes níveis de RAID. Em HPC, o armazenamento de dados é um factor bastante importante, visto que os dados estão normalmente armazenados exteriormente, sendo depois transferidos para o nodo principal e depois para os restantes nodos, sendo assim fundamental que o throughput seja suficiente para não haver estrangulamentos. Figura 4 Exemplo de comparação de sistemas RAID com a benchmark IOzone Pagina nº9

Tutoriais NAS Parallel Benchmark: (download: http://www.nas.nasa.gov/software/npb/#source) - Descomprimir file.tar.gz - Entrar na directoria do programa - Entrar na directoria config - Criar um ficheiro make.def de acordo com as nossas máquinas e de acordo com o ficheiro de exemplo fornecido (make.def.template) - Voltar a directoria principal - Se quisermos compilar as várias benchmarks 1 a 1, entramos dentro da directoria onde se encontra cada uma a fazemos apenas: $> make CLASS=x NPROCS=y onde x é a classe A, B, C, D, S ou W e y é o número de processos com que a benchmark deve correr. - Se quisermos compilar as várias benchmarks de uma vez, criamos um ficheiro na directoria config chamado suite.def. Este ficheiro deve conter todos os nomes das benchmarks a ser compiladas seguidas do número de processos de cada uma. É possível, por exemplo, mandar compilar diferentes variantes da mesma benchmark. - Para correr cada uma das benchmarks, posicionamo-nos na directoria bin e corremos cada um dos executáveis através do comando: $>mpirun np x nome_executavel onde x é o numero de processos a serem utilizados pelo executável. Pagina nº10

HPL Benchmark: (download: http://www.netlib.org/benchmark/hpl/hpl.tgz) - Fazer o download do ficheiro principal - Posicionar-se na directoria do ficheiro - Correr o comando: $>gunzip hpl.tgz; tar xvf hpl.tar - Criar um ficheiro Make.<arch> na directoria principal do programa. Podemos para isso utilizar um dos vários exemplos fornecidos, - Executar o comando: $>make arch=<arch>. Isto irá criar na directoria bin/ dentro da directoria principal um ficheiro chamado xhpl. - Depois para correr a benchmark basta fazer: $>mpirun np x xhpl, onde x é o número de nodos do cluster onde queremos que a benchmark corra - Podem-se modificar vários parâmetros de performance da benchmark através da modificação do ficheiro bin/<arch>/hpl.dat Pagina nº11

HINT Benchmark: (download: http://hint.byu.edu/pub/hint/source/parallel/mimd/hint.tar.gz) - Fazer o download do ficheiro para MPI - Posicionar-se na directoria do ficheiro - Descomprimir o ficheiro com o comando: $>tar xzvf hint.tar.gz - Criar uma Makefile (já inclui duas makefiles exemplo) a partir das características do cluster em questão - Na Makefile ter a certeza que ARCH=MPI e certificar que path e as library do MPI - Compilar o programa através do comando: $>make - Correr a benchmark executando o comando: $>mpirun np x nome_executável Pagina nº12

Case Study: Titan@dei.uc.pt Corremos algumas das benchmarks estudadas neste trabalho no Cluster TITAN do Grupo de Sistemas Confiáveis. E apresentamos de seguida os resultados obtidos: - NAS: NAS Parallel Benchmarks 2.4 -- SP Benchmark No input file inputsp.data. Using compiled defaults Size: 102x102x102 Iterations: 400 dt: 0.001000 Number of active processes: 16 Time step 1 Time step 20 Time step 40 Time step 60 Time step 80 Time step 100 Time step 120 Time step 140 Time step 160 Time step 180 Time step 200 Time step 220 Time step 240 Time step 260 Time step 280 Time step 300 Time step 320 Time step 340 Time step 360 Time step 380 Time step 400 Verification being performed for class B accuracy setting for epsilon = 0.1000000000000E-07 Comparison of RMS-norms of residual 1 0.6903293579998E+02 0.6903293579998E+02 0.5311088792668E-13 2 0.3095134488084E+02 0.3095134488084E+02 0.8264435224331E-13 3 0.4103336647017E+02 0.4103336647017E+02 0.1108237978030E-12 4 0.3864769009604E+02 0.3864769009604E+02 0.3640255376994E-13 5 0.5643482272596E+02 0.5643482272596E+02 0.7063271496343E-13 Comparison of RMS-norms of solution error 1 0.9810006190188E-02 0.9810006190188E-02 0.4915930907403E-13 2 0.1022827905670E-02 0.1022827905670E-02 0.3888096469241E-12 3 0.1720597911692E-02 0.1720597911692E-02 0.1526177408397E-12 Pagina nº13

4 0.1694479428231E-02 0.1694479428231E-02 0.1045504784730E-12 5 0.1847456263981E-01 0.1847456263981E-01 0.8263019204417E-13 Verification Successful SP Benchmark Completed. Class = B Size = 102x 102x 102 Iterations = 400 Time in seconds = 671.75 Total processes = 16 Compiled procs = 16 Mop/s total = 528.49 Mop/s/process = 33.03 Operation type = floating point Verification = SUCCESSFUL Version = 2.4 Compile date = 05 Jun 2003 Compile options: MPIF77 = mpif77 FLINK = mpif77 FMPI_LIB = -L/usr/local/lib -lmpi FMPI_INC = -I/usr/local/include FFLAGS = -O3 FLINKFLAGS = (none) RAND = (none) NAS Parallel Benchmarks 2.4 -- LU Benchmark Size: 102x102x102 Iterations: 250 Number of processes: 16 Time step 1 Time step 20 Time step 40 Time step 60 Time step 80 Time step 100 Time step 120 Time step 140 Time step 160 Time step 180 Time step 200 Pagina nº14

Time step 220 Time step 240 Time step 250 Verification being performed for class B Accuracy setting for epsilon = 0.1000000000000E-07 Comparison of RMS-norms of residual 1 0.3553267296998E+04 0.3553267296998E+04 0.2303641024381E-14 2 0.2621475079531E+03 0.2621475079531E+03 0.7155638583229E-14 3 0.8833372185095E+03 0.8833372185095E+03 0.1158313629331E-14 4 0.7781277473943E+03 0.7781277473943E+03 0.8766183041460E-15 5 0.7308796959255E+04 0.7308796959255E+04 0.5475287807433E-14 Comparison of RMS-norms of solution error 1 0.1140117638021E+03 0.1140117638021E+03 0.1246437581640E-14 2 0.8109896365542E+01 0.8109896365542E+01 0.6790106746047E-14 3 0.2848059731770E+02 0.2848059731770E+02 0.3368021683590E-14 4 0.2590539456783E+02 0.2590539456783E+02 0.2194269564664E-14 5 0.2605490750486E+03 0.2605490750486E+03 0.2181678014025E-14 Comparison of surface integral 0.4788716270331E+02 0.4788716270331E+02 0.1335406873333E-14 Verification Successful LU Benchmark Completed. Class = B Size = 102x 102x 102 Iterations = 250 Time in seconds = 426.68 Total processes = 16 Compiled procs = 16 Mop/s total = 1169.07 Mop/s/process = 73.07 Operation type = floating point Verification = SUCCESSFUL Version = 2.4 Compile date = 05 Jun 2003 Compile options: MPIF77 = mpif77 FLINK = mpif77 FMPI_LIB = -L/usr/local/lib -lmpi FMPI_INC = -I/usr/local/include FFLAGS = -O3 FLINKFLAGS = (none) RAND = (none) Pagina nº15

NAS Parallel Benchmarks 2.4 -- IS Benchmark Size: 33554432 (class B) Iterations: 10 Number of processes: 16 iteration 1 2 3 4 5 6 7 8 9 10 IS Benchmark Completed Class = B Size = 33554432 Iterations = 10 Time in seconds = 35.41 Total processes = 16 Compiled procs = 16 Mop/s total = 9.48 Mop/s/process = 0.59 Operation type = keys ranked Verification = SUCCESSFUL Version = 2.4 Compile date = 05 Jun 2003 Compile options: MPICC = mpicc CLINK = mpicc CMPI_LIB = -L/usr/local/lib -lmpi CMPI_INC = -I/usr/local/include CFLAGS = -O3 CLINKFLAGS = (none) Pagina nº16

- HPL: ===================================================================== HPLinpack 1.0 -High-Performance Linpack benchmark- September 27, 2000 Written by A. Petitet and R. Clint Whaley, Innovative Computing Labs ===================================================================== An explanation of the input/output parameters follows: T/V : Wall time / encoded variant. N : The order of the coefficient matrix A. NB : The partitioning blocking factor. P : The number of process rows. Q : The number of process columns. Time : Time in seconds to solve the linear system. Gflops : Rate of execution for solving the linear system. The following parameter values will be used: N : 33776 NB : 64 P : 4 Q : 5 PFACT : Left NBMIN : 8 NDIV : 4 RFACT : Left BCAST : 1ring DEPTH : 8 SWAP : Mix (threshold = 96) L1 : transposed form U : transposed form EQUIL : yes ALIGN : 8 double precision words --------------------------------------------------------------------- - The matrix A is randomly generated for each test. - The following scaled residual checks will be computed: 1) Ax-b _oo / ( eps * A _1 * N ) 2) Ax-b _oo / ( eps * A _1 * x _1 ) 3) Ax-b _oo / ( eps * A _oo * x _oo ) - The relative machine precision (eps) is taken to be 1.110223e-16 - Computational tests pass if scaled residuals are less than 16.0 ===================================================================== T/V N NB P Q Time Gflops --------------------------------------------------------------------- W80L4L8 33776 64 4 5 2941.50 8.734e+00 --------------------------------------------------------------------- Ax-b _oo / ( eps * A _1 * N ) = 0.0160679... PASSED Ax-b _oo / ( eps * A _1 * x _1 ) = 0.0127013... PASSED Ax-b _oo / ( eps * A _oo * x _oo ) = 0.0024017... PASSED ===================================================================== Finished 1 tests with the following results: 1 tests completed and passed residual checks, 0 tests completed and failed residual checks, 0 tests skipped because of illegal input values. --------------------------------------------------------------------- End of Tests. ===================================================================== Pagina nº17

Perguntas: 1 Como é que se pode medir a performance de um cluster? Que processos se usam? O que se pode medir? Na prática, um cluster funciona como um único computador, mas, para isso, é necessário existir uma programação prévia em paralelismo. Desta forma, os programas corridos no Cluster são distribuídos pelos vários nodos. Quanto melhores forem os nodos, em termos de computação, quanto mais forem e quanto mais rápida for a rede que os interliga, mais potente é o cluster que estamos a investigar. Assim, as benchmarks que estudam a performance de um dado cluster devem incidir sobre estas questões: a velocidade de processamento de cada um dos nodos, o bandwidth da rede que interliga os nodos do cluster e a quantidade de memória principal em cada nodo e a velocidade de acesso a ela. Desta maneira podemos medir todas esses pontos singularmente para cada nodo do cluster e/ou podemos trabalhar cada característica paralelamente. Para isso, a maior parte das benchmarks utiliza interfaces (libraries) para poder transferir dados entre os vários nodos do mesmo cluster. A interface mais utilizada é o MPI (Message Passing Interface). 2 O que é mais importante num cluster de alta performance? CPU, memória, disco...? Quando testamos a performance de um sistema simples (uniprocessador), tentamos identificar se existe algo que possa atrasar tudo o resto, por exemplo, se tivermos um processador muito rápido, mas pouca memória principal, o sistema irá passar uma grande parte do tempo a fazer swapping, ficando assim muito mais lento. Num cluster, além de ser necessário que cada nodo tenha um bom desempenho por si só, é muito importante que os nodos trabalhem de uma forma síncrona, ou seja, deve-se tentar ao máximo evitar que todos os nodos que já terminaram uma dada tarefa fiquem bloqueados à espera de um nodo mais lento. Para isto os nodos devem ter todos as mesmas características, ou seja, processadores semelhantes, de preferência iguais, mesma quantidade de memória e disco, devendo os discos atingir todos as mesmas rotações. Pagina nº18

Além disso a comunicação entre os nodos é de extrema importância, pois quanto melhor e mais rápida for efectuada a comunicação, mais rápida será a execução dos processos. Num cluster de alta performance não faz qualquer sentido investir em grandes capacidades de processamento individual de cada máquina, quando a comunicação é deficiente ou muito lenta. Um cluster assenta na paralelização de processos, sendo assim o lema que rege estes sistemas: dividir para reinar. Bibliografia http://www.mfn.unipmn.it/~mino/cluster/benchmarks/ IOzone: http://www.iozone.org/ NAS: http://www.nas.nasa.gov/software/npb/ HINT: http://www.supercomp.org/sc96/proceedings/sc96proc/snell/index.htm Linpack: http://www.netlib.org/benchmark/hpl/ Pagina nº19