Jump to content
Sign in to follow this  
ragecom

FLOPS é tipo os novos bits - entenda

Recommended Posts

Então, com o anúncio do Stadia do Google, muitas pessoas ficaram impressionadas com o imagem abaixo:

  

20190319054554_1200_675.jpg

  

Beleza... O problema é que parece que a maioria das pessoas não entende 1) o que é esse número; 2) como ele foi obtido e; 3) qual a veracidade desse número. Então eu resolvi escrever um pequeno texto da maneira mais superficial que eu pude pra tentar ajudar os demais a entender. Quem manja de computação, por favor, fique à vontade pra contribuir.

 

P: o que é FLOPS?

R: floating-point operations per second, ou operações de ponto flutuante por segundo.

P: o que é um ponto flutuante?

R: um número real.

P: quanto mais FLOPS melhor, certo?

R: sim, mas primeiro a gente precisa entender como esse número foi obtido pra verificar se ele foi medido de verdade ou meramente estimado.

P: porque só se usa FLOPS pra medir desempenho de supercomputadores?

R: na verdade não se usa só o FLOPS. Usa-se também o MIPS (millions of instructions per second), que é o equivalente ao FLOPS pra números de ponto fixo (inteiros) - isso é particularmente interessante porque uma operação lógica recai numa comparação inteira, o que é feito o tempo todo.

 

Então vamos do início. Existem duas formas de analisar o FLOPS: a teórica e a prática.

 

A teórica se chama rpeak. O rpeak é calculado muito facilmente:

 

rpeak = clock * cores * inst * quant, onde:

 

clock é o clock do processador em gigahertz;

cores é a quantidade de cores do processador;

inst é a quantidade de instruções do processador por ciclo de hardware e;

quant é o número de processadores do computador. Claro que se o sistema for heterogêneo (sistemas distribuídos, por exemplo), o cálculo do rpeak é a soma de todos os rpeaks de cada tipo de processador.

  

 Beleza, mas como dá pra ver, essa abordagem é totalmente teórica: ela não leva em conta absolutamente mais nada além das variáveis relativas aos processadores, quando na verdade até o meio como os processadores se comunicam possuem latência (um core falando com outro core no mesmo processador é mais rápido que um falando com outro por um barramento, que por sua vez é mais rápido do que se um estiver falando com o outro pela rede). Então na prática esse número é um teto, um limitador máximo, o melhor dos casos. Mas na prática não é o que interessa, porque dependendo da topologia do cluster, do gerenciamento da memória e de tantas outras coisas, a diferença entre o rpeak e o real pode ser imensa.

 

Agora vamos ver como medir FLOPS da forma prática. O resultado dessa operação dará um número de FLOPS conhecido como rmax.

 

Para medir o rmax, precisamos submeter o supercomputador a um teste. Geralmente se faz isso aplicando uma série de equações lineares e medindo o desempenho. Mas serve qualquer sistema de equações lineares? Sim e não... Eu explico:

 

Sim porque, bem, se você mandar um conjunto de equações lineares pra dois computadores resolverem e tirar a diferença, você está medindo alguma coisa pelo menos.

 

E não porque isso já é estudado desde os anos 60, então hoje já temos bem estabelecidos benchmarks que calculam o rmax de uma forma matematicamente eficiente com o mínimo de bias.

 

E quais são esses benchmarks? Bem, existem vários. Mas pelo que eu saiba o mais utilizado é o LINPACK. Existem várias implementações do LINPACK, mas em geral elas partem do seguinte pressuposto: resolver um sistema de equações lineares por meio de eliminação de Gauss, ou seja, uma abordagem matricial para o sistema de equações. A quantidade de operações é fixada em 2/3n^3 + 2n^2, então a ordem da matriz que representa o sistema de equações lineares é quem dita o tamanho do problema.

 

Essa matriz deve ser bem populada (não deve ser esparsa). A primeira versão especificação do LINPACK permite matrizes de ordem 100. Depois foi lançado o benchmark LINPACK 1000, que é basicamente a mesma coisa, mas permitindo o uso de matrizes de ordem 1000. Depois disso, foi criado o HPL, que é a versão do LINPACK pra computação paralela: essa é a que interessa nesse caso. A quantidade de operações é exatamente a mesma de todas as versões anteriores do LINPACK, mas o HPL funciona resolvendo o sistema de equações lineares através de fatoração lower-up da matriz que a representa. A formulação é simples:

 

A = LU onde,

A é a matriz original, que representa o sistema de equações lineares;

L é a matriz triangular inferior de A e;

U é a matriz triangular superior de A.

 

Em resumo, alguém provou matematicamente que a solução por fatoração LU é mais adequada pra medir FLOPS do que a eliminação de Gauss. Eu não entendo muito dessas coisas, então eu acredito nos caras.

 

Vale lembrar que o HPL não usa floats comuns, e sim doubles (pontos flutuantes de 64 bits, o dobro do float normal).

  

 Então... Rodando o HPL, o que a gente tem? Depende... Pode ter várias coisas:

 

. O rmax, que é o que a gente queria;

. O nmax, que é o tamanho do maior problema submetido ao supercomputador;

. O consumo de memória pra resolução do problema no rmax;

. O nmeio, que é o tamanho do problema quando a execução do rmax chegou na metade.

. O rpeak - rmax, que pode ser usado como resíduo (estatisticamente falando), como se fosse o módulo da diferença do real pro predito, ou seja, uma medida de qualidade nesse caso;

. A temperatura dos processadores no rmax;

. Todo tipo de estatística do supercomputador.

 

P: e a diferença entre o rpeak e o rmax costuma ser grande?

R: Sim. Vejam a tabelinha abaixo, com o rpeak e rmax dos 10 maiores supercomputadores do mundo:

Rank Site System Cores Rmax (TFlop/s) Rpeak (TFlop/s) Power (kW)
1 DOE/SC/Oak Ridge National Laboratory
United States
Summit - IBM Power System AC922, IBM POWER9 22C 3.07GHz, NVIDIA Volta GV100, Dual-rail Mellanox EDR Infiniband 
IBM
2,397,824 143,500.0 200,794.9 9,783
2 DOE/NNSA/LLNL
United States
Sierra - IBM Power System S922LC, IBM POWER9 22C 3.1GHz, NVIDIA Volta GV100, Dual-rail Mellanox EDR Infiniband 
 IBM / NVIDIA / Mellanox
1,572,480 94,640.0 125,712.0 7,438
3 National Supercomputing Center in Wuxi
China
Sunway TaihuLight - Sunway MPP, Sunway SW26010 260C 1.45GHz, Sunway 
NRCPC
10,649,600 93,014.6 125,435.9 15,371
4 National Super Computer Center in Guangzhou
China
Tianhe-2A - TH-IVB-FEP Cluster, Intel Xeon E5-2692v2 12C 2.2GHz, TH Express-2, Matrix-2000 
NUDT
4,981,760 61,444.5 100,678.7 18,482
5 Swiss National Supercomputing Centre (CSCS)
Switzerland
Piz Daint - Cray XC50, Xeon E5-2690v3 12C 2.6GHz, Aries interconnect , NVIDIA Tesla P100 
Cray Inc.
387,872 21,230.0 27,154.3 2,384
6 DOE/NNSA/LANL/SNL
United States
Trinity - Cray XC40, Xeon E5-2698v3 16C 2.3GHz, Intel Xeon Phi 7250 68C 1.4GHz, Aries interconnect 
Cray Inc.
979,072 20,158.7 41,461.2 7,578
7 National Institute of Advanced Industrial Science and Technology (AIST)
Japan
AI Bridging Cloud Infrastructure (ABCI) - PRIMERGY CX2570 M4, Xeon Gold 6148 20C 2.4GHz, NVIDIA Tesla V100 SXM2, Infiniband EDR 
Fujitsu
391,680 19,880.0 32,576.6 1,649
8 Leibniz Rechenzentrum
Germany
SuperMUC-NG - ThinkSystem SD530, Xeon Platinum 8174 24C 3.1GHz, Intel Omni-Path 
Lenovo
305,856 19,476.6 26,873.9  
9 DOE/SC/Oak Ridge National Laboratory
United States
Titan - Cray XK7, Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x 
 Cray Inc.
560,640 17,590.0 27,112.5 8,209
10 DOE/NNSA/LLNL
United States
Sequoia - BlueGene/Q, Power BQC 16C 1.60 GHz, Custom 
IBM
1,572,864 17,173.2 20,132.7 7,890

 

 Ou seja... Diante disso tudo ai que eu escrevi, algumas dúvidas vem em mente quando a gente vê esse número do Stadia:

 

Os 10.7 TeraFLOPS são o rpeak ou o rmax? Porque se for o rpeak não vale nada. Supondo que seja o rmax... Como foi medido isso pra começo de conversa? Com HPL? Qual implementação e configuração do sistema de equações? Qual é o desempenho dessa mesma configuração em outro supercomputador similar pra gente poder comparar?

 

 

Vejam como essa questão do FLOPS é o novo "bit". Quanto mais FLOPS melhor, mas peraí... Esse FLOPS foi obtido como? Como comparar o que um vendedor diz com outro, se os dois podem estar medindo diferente ou simplesmente jogando um rpeak no slide? FLOPS é legal, mas não é um número fechado: ele pode ser obtido de muitas formas diferentes.

  

Espero ter ajudado. Quem quiser contribuir, mete bala ai. Quem quiser me corrigir, idem: às vezes eu falo merda.

  • Like 2

Share this post


Link to post
Share on other sites

Parabéns pelo tópico Rage, bem esclarecedor, me lembrou também o PMPO dos micro systems do início dos anos 2000 que era mais marketing do que outra coisa, essa questão de FLOPS começou para valer nessa geração que eu me lembre, e deve perdurar por um bom tempo ai.

 

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

Geração 360 ja se falava bastante em FLOPs tb, claro q não q nem agora, como eu ja acompanhava os sites lululisticos de análise acabava ficando por dentro

Share this post


Link to post
Share on other sites
8 horas atrás, vgBR Cody disse:

Geração 360 ja se falava bastante em FLOPs tb, claro q não q nem agora, como eu ja acompanhava os sites lululisticos de análise acabava ficando por dentro

 

Eu postei sobre isso na players. Resumindo muito os miúdos, foi uma especie de mudança na arquitetura das vgas na época que fazem com que todas trabalhem +- da mesma maneira e permitam um certo parâmetro comparação (pois elimina algumas variáveis), mesmo que não exato

Mas ao menos da uma certa ordem de grandeza.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×