Utilizando o Benchmark High-Performance Linpack (HPL)
De Wiki do Veiga
Tabela de conteúdo |
Introdução
HPL (High-Performance Linpack) é uma aplicação que resolve sistemas lineares densos em dupla precisão e é comumente utilizado para avaliação de desempenho de computadores paralelos como cluster. HPL também é usado para definir o ranking do site que avalia as 500 máquinas mais poderosas do mundo: http://www.top500.org.
Este texto contém informações de como instalar e executar o HPL em um cluster.
Instalação
A última versão de HPL pode ser obtida em http://www.netlib.org/benchmark/hpl (neste caso, utilizou-se a versão HPL 1.0a). O procedimento de instalação é descrito a seguir.
Descompactar o pacote:
$ tar -xzf hpl.tgz $ cd hpl
Copiar um dos Makefiles do diretório ./setup e modificar de acordo com ambiente:
$ cp setup/Make.Linux_PII_CBLAS .
HPL utiliza as bibliotecas MPI e BLASS. No exemplo disponível em ./setup a biblioteca utilizada é mpich. Desta forma, foi necessário modificar o caminho para a biblioteca lam-mpi e incluir todas as suas dependências.
MPdir = /usr/local/ MPinc = -I$(MPdir)/include MPlib = $(MPdir)/lib/libmpi.a \ $(MPdir)/lib/liblam.a \ $(MPdir)/lib/libcr.so \ /usr/lib/libpthread.so
O próximo passo é a instalação da BLASS, que pode ser feita instalando o pacote ATLAS. A ultima versão de ATLAS está disponível em http://math-atlas.sourceforge.net/ (neste exemplo, utilizou-se a versão 3.4.2).
Descompactar o pacote:
$ tar xzf atlas3_4_2.tgz $ cd ATLAS
Gerar o Makefile:
$ make config
Após executar esse comando, será gerado um arquivo Makefile específico para a arquitetura utilizada (neste caso, o arquivo Make.Linux_P4SSE2 foi gerado e a única variável que precisou ser modificada foi TOPdir). O comando a seguir compila e instala as bibliotecas.
$ make install arch=Linux_P4SSE2
Voltando ao diretório da HPL, foi necessário modificar o arquivo ./Make.Linux_PII_CBLAS para especificar o caminho da BLAS compilada:
LAdir = $(HOME)/ATLAS/lib/Linux_P4SSE2 LAinc = LAlib = $(LAdir)/libcblas.a $(LAdir)/libatlas.a
Finalmente, a compilação de HPL foi realizada com o comando que segue:
$ make arch=Linux_PII_CBLAS $ ls bin/Linux_PII_CBLAS/xhpl
Utilização
O processo de instalação cria um arquivo HPL.dat que contém as parâmetros de entrado de HPL. No entanto, esses parâmetros podem ser modificados para aumentar o desempenho (uma descrição desses parâmetros pode ser obtida no arquivo ./TUNING).
Exemplo de Execução
$ cd bin/Linux_PII_CBLAS $ lamboot $ mpirun -np 4 xhpl
Exemplo de Checkpoint/Restart na HPL
A seguir estão os procedimentos para realizar C/R na HPL utilizando LAM/MPI.
Executar xpl utilizando o HPL.dat padrão:
mpirun -np 4 -ssi rpi crtcp -ssi cr blcr xhpl
Realizar o checkpoint com o PID do mpirun:
$ ps -A | grep mpirun 815 pts/2 00:00:00 mpirun 821 pts/2 00:00:00 mpirun 826 pts/2 00:00:00 mpirun $ lamcheckpoint -ssi cr blcr -ssi cr_blcr_base_dir ./ -pid 758
Para reiniciar a aplicação a partir do arquivo de contexto:
lamrestart -ssi cr blcr -ssi cr_blcr_context_file context.mpirun.758
Cálculo do Tamanho do Problema N
Uma explicação de como calcular o tamanho do problema do HPL é disponibilizada em sua FAQ. Esse cálculo leva em consideração o número de nós do cluster, o tamanho da memória e a porcentagem de memória que é utilizada/reservada ao sistema operacional.
O script a seguir ajuda a calcular esse valor:
#!/bin/sh # Script para calcular o N para a matriz de entrada do HPL # Marcelo Veiga Neves <marcelo.veiga@gmail.com> # Dom 8 Mar 2009 16:35:33 BRT # HPL FAQ # http://www.netlib.org/benchmark/hpl/faqs.html echo -n "number of nodes: " read np echo -n "memory per node (in MB): " read m echo -n "percente reserved to OS (default: 20 %): " read os [ -z "$os" ] && os=20 total=`echo "sqrt($np * $m*1024*1024 / 8)" | bc -l` N=`echo "$total * (1-$os/100)" | bc -l` echo N=$N
Referências
- HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers: http://www.netlib.org/benchmark/hpl/
- HPL Tuning: http://www.netlib.org/benchmark/hpl/tuning.html
- HPL FAQ: http://www.netlib.org/benchmark/hpl/faqs.html
Marcelo Veiga Neves < marcelo.veiga at gmail.com >
