Skip to content
Snippets Groups Projects
Commit 73fde7ba authored by Armando Luiz Nicolini Delgado's avatar Armando Luiz Nicolini Delgado :nerd:
Browse files

/* Adicionado informações relacionadas à instalação e uso de LIKWID */

parent 46a25dab
Branches
No related tags found
No related merge requests found
......@@ -6,4 +6,5 @@ Funções e bibliotecas de uso genérico para a disciplina CI1164 (DINF/UFPR)
* **sislin:** funções básicas de manipulação de matrizes e Sistemas Lineares
* **utils:** funções utilitárias diversas: timestamp, geradores de
números pseudo-aleatórios, etc.
* **likwid:** documentação e modelos de teste de instalação do LIKWID.
===== GUIA DE CONFIGURAÇÃO DO LINUX PARA USO DO LIKWID NO DINF ===============
1. Em uma janela shell, editar o arquivo '${HOME}/.bashrc' e acrescentar
linhas abaixo:
export LIKWID_HOME="/home/soft/likwid"
if [ -d "${LIKWID_HOME}" ] ; then
PATH="$PATH:${LIKWID_HOME}/bin:${LIKWID_HOME}/sbin"
export LIKWID_LIB="${LIKWID_HOME}/lib"
export LIKWID_INCLUDE="${LIKWID_HOME}/include"
export LIKWID_MAN="${LIKWID_HOME}/man"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIKWID_LIB}"
export MANPATH="$MANPATH:${LIKWID_MAN}"
fi
2. Na mesma janela shell, após a edição acima, executar o comando abaixo:
source ${HOME}/.bashrc
3. Fazer download dos arquivos abaixo:
https://www.inf.ufpr.br/nicolui/grad/ci164/Docs/exemplos/teste.c
https://www.inf.ufpr.br/nicolui/grad/ci164/Docs/exemplos/teste.sh
4. Executar o comando abaixo:
bash ./teste.sh
Caso a configuração esteja correta, serão criados dois arquivos:
(FLOPS_DP_Otimiz.log e FLOPS_DP_SemOtimiz.log) contendo os resultados
gerados pelo LIKWID.
5. Opções para compilação de programas:
gcc -DLIKWID_PERFMON -I${LIKWID_INCLUDE} -c <prog.c>
gcc -o <prog> <prog.o> -L${LIKWID_LIB} -llikwid
* Nos códigos-fonte deve-se colocar
#include <likwid.h>
===== GUIA DE CONFIGURAÇÃO DE FREQUENCIA DE RELÓGIO EM LINUX ===============
1. Execute a seguinte linha de comando para aumentar a frequência de relógio:
echo "performance" > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor
2. Para retornar à frequencia original
echo "powersave" > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor
===== GUIA DE ACESSO REMOTO ÀS MÁQUINAS DOS LABORATÓRIOS DINF ===============
Nos acessos abaixo, sempre use seu login/senha nas máquinas do DINF
1. Copiar seus arquivos locais para a máquina 'macalan':
scp -rp <sua_pasta_com_exercicio> <user_dinf>@macalan.c3sl.ufpr.br:.
2. Acessar 'macalan' com
ssh <user_dinf>@macalan.c3sl.ufpr.br
3. Uma vez na 'macalan'
ssh <maq_LAB_DINF>
onde <maq_LAB_DINF> = máquinas indicadas pelo professor no enunciado
de um trabalho.
4. ATENÇÃO: Lembre-se de RECOMPILAR SEUS PROGRAMAS em <maq_LAB_DINF>
===== PRÉ-REQUISITOS PARA INSTALAÇÃO DE LIKWID EM LINUX ===============
1. Deve ser usado um Linux standalone:
* Instalado sozinho em um disco interno ou externo (e.g., pendrive)
* Instalado em modo de boot dual, se o disco interno tiver um Windows.
2. LIKWID não funciona em Linux instalado via WSL (Windows Subsystem for
Linux), pois neste não é possível instalar módulos de kernel,
necessários ao LIKWID
3. Os resultados gerados pelo LIKWID NÃO SÃO CONFIÁVEIS em Linux
instalado em Maquinas virtuais (como VM Oracle).
===== GUIA DE INSTALAÇÃO E CONFIGURAÇÃO DO LINUX PARA USO DO LIKWID ===============
0. Deve-se compilar e instalar o LIKWID. Use um dos links abaixo para
fazer o download do código-fonte:
http://ftp.fau.de/pub/likwid/likwid-stable.tar.gz
https://github.com/RRZE-HPC/likwid
--> Para isto, pode-se executar os comandos abaixo:
$VERSION=stable
wget http://ftp.fau.de/pub/likwid/likwid-$VERSION.tar.gz
tar -xaf likwid-$VERSION.tar.gz
cd likwid-$VERSION
# configura compilação. Default é instalar os executáveis e bibliotecas em '/usr/local'
vi config.mk
make
# 'sudo' necessário para instalar o daemon de acesso com permissões apropriadas
sudo make install
1. Garantir que módulo do kernel 'msr' esteja carregado:
* 'lsmod | grep msr': se não aparecer nada, 'msr' não está carregado
* Carregar manualmente 'msr' (após boot):
sudo modprobe msr
* Carregar 'msr' automaticamente após boot:
--> Editar '/etc/modules' ('sudo vi /etc/modules') e acrescentar uma
linha contendo apenas 'msr'
2. Alterar permissões de '/dev/cpu/*/msr':
* Manualmente (após boot):
sudo chmod o+rw /dev/cpu/*/msr
* Automaticamente após boot:
- Editar '/etc/rc.local' ('sudo vi /etc/rc.local') ou equivalente.
Acrescentar a linha abaixo em alguma linha ANTES da última linha que contém 'exit 0':
chmod o+rw /dev/cpu/*/msr
- Se sua instalação Linux não tiver o arquivo '/etc/rc.local' ou equivalente, crie o arquivo com o conteúdo abaixo:
#!/bin/sh -e
chmod o+rw /dev/cpu/*/msr
exit 0
- Executar
sudo chmod +x /etc/rc.local
3. Definir 'capability' em alguns comandos do Likwid (administrador)
sudo setcap cap_sys_rawio+ep /usr/local/bin/likwid-lua
sudo setcap cap_sys_rawio+ep /usr/local/sbin/likwid-accessD
4. Acrescentar linhas abaixo em '/etc/profile':
export LIKWID_HOME="/usr/local"
if [ -d "${LIKWID_HOME}" ] ; then
PATH="$PATH:${LIKWID_HOME}/bin:${LIKWID_HOME}/sbin"
export LIKWID_LIB="${LIKWID_HOME}/lib"
export LIKWID_INCLUDE="${LIKWID_HOME}/include"
export LIKWID_MAN="${LIKWID_HOME}/man"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIKWID_LIB}"
export MANPATH="$MANPATH:${LIKWID_MAN}"
fi
5. Efetuar reboot e conferir permissões de acesso de '/dev/cpu/*/msr'.
Para verificar se LIKWID está corretamente instalado e configurado,
executar:
likwid-topology -c -g
likwid-perfctr -a
===== GUIA DE CONFIGURAÇÃO DE FREQUENCIA DE RELÓGIO EM LINUX ===============
No item de (1) a (3), será necessário que se tenha permissão de administrador.
1. Execute a seguinte linha de comando:
sudo echo "performance" > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor
2. Para retornar à frequencia original
sudo echo "powersave" > /sys/devices/system/cpu/cpufreq/policy3/scaling_governor
OBS.: Para permitir que qualquer usuário possa executar os comandos dos
itens (1) e (2), mudar permissão do arquivo:
sudo chmod a+rw /sys/devices/system/cpu/cpufreq/policy3/scaling_governor
E acrescentar o comando acima (sem 'sudo') em '/etc/rc.local', em
alguma linha ANTES da última linha que contém 'exit 0'.
3. Alternativamente, instale o pacote 'cpufrequtils' (via 'apt-get install cpufreputils')
e execute os passos abaixo:
(a) Para aumentar a frequência:
sudo cpufreq-set -g performance
(b) Para retornar à frequência original:
sudo cpufreq-set -g powersave
(c) Para verificar a frequência:
cpufreq-info
Após configurar o LIKWID conforme os documentos **.txt**, faça download dos
arquivos **teste.c** e **teste.sh** e execute **bash ./teste.sh** .
#include <stdio.h>
#include <stdlib.h> /* exit, malloc, calloc, etc. */
#include "likwid.h"
#define N 10000
/**
* Programa principal para testar configuraçãp do LIKWID
*/
int main (int argc, char *argv[])
{
double A[N], B[N], C[N];
LIKWID_MARKER_INIT;
LIKWID_MARKER_START ("Teste_LIKWID");
for(int i=0; i < N; ++i) {
C[i] = A[i] + B[i];
}
LIKWID_MARKER_STOP ("Teste_LIKWID");
LIKWID_MARKER_CLOSE;
return 0;
}
#!/bin/bash
METRICA="FLOPS_DP"
CPU=3
LIKWID_HOME=/home/soft/likwid
CFLAGS="-I${LIKWID_HOME}/include -DLIKWID_PERFMON"
LFLAGS="-L${LIKWID_HOME}/lib -llikwid"
SCALING_FREQ="/sys/devices/system/cpu/cpufreq/policy${CPU}/scaling_governor"
if [ -w ${SCALING_FREQ} ]; then
echo "performance" > ${SCALING_FREQ}
fi
gcc ${CFLAGS} -O0 teste.c -o teste ${LFLAGS}
for k in $METRICA
do
likwid-perfctr -C ${CPU} -g ${k} -m ./teste >${k}_SemOtimiz.log
done
rm -f teste
gcc ${CFLAGS} -O3 teste.c -o teste ${LFLAGS}
for k in $METRICA
do
likwid-perfctr -C ${CPU} -g ${k} -m ./teste >${k}_Otimiz.log
done
if [ -w ${SCALING_FREQ} ]; then
echo "powersave" > ${SCALING_FREQ}
fi
echo ''
echo '-----------------------------------'
if [ -f FLOPS_DP_Otimiz.log ]; then
echo 'Configuração LIKWID: SUCESSO'
echo ''
ls FLOPS_*.log
echo ''
else
echo 'Configuração LIKWID: FALHA'
fi
echo '-----------------------------------'
echo ''
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment