Petrobras Acelera Solucionadores Lineares para Simulação de Reservatórios Usando CPU NVIDIA Grace

por João Paulo Navarro

A simulação de reservatórios ajuda os engenheiros de reservatórios a otimizar a exploração de recursos naturais, simulando cenários complexos e comparando com dados de campo. Isso se estende à simulação de reservatórios exauridos que poderiam ser reaproveitados para armazenamento de carbono. A simulação de reservatórios é crucial para empresas de energia que buscam aumentar a eficiência operacional na exploração e produção.

Este post demonstra como a CPU NVIDIA Grace se destaca na resolução de sistemas lineares dentro do workflow da Petrobras, alcançando um tempo de solução até 4,5 vezes mais rápido, eficiência energética 4,3 vezes maior e escalabilidade 1,5 vezes maior em comparação com CPUs baseadas em x86.

A Petrobras é uma empresa brasileira líder em energia, em transição para novas fontes de energia mantendo seu negócio principal de exploração e produção de petróleo e gás (O&G). De acordo com as listas Top500 e Green500, a Petrobras possui a maior infraestrutura de HPC da América Latina, impulsionada pela plataforma de computação acelerada full-stack da NVIDIA. Suas principais cargas de trabalho são o processamento sísmico e simulação de reservatórios.

A empresa foi pioneira na exploração em águas ultraprofundas, com operações que atingem profundidades de até 7 km. Com uma única perfuração de poço custando até US$ 100 milhões, a computação de alto desempenho (HPC) ajuda a reduzir a incerteza da exploração de recursos e melhorar as taxas de sucesso da produção.

Simulação de Reservatórios e o Projeto SolverBR

A resolução de sistemas lineares é a tarefa mais demorada em simulações de reservatórios (Figura 1). Esse processo pode representar até 70% do tempo computacional total dentro do pipeline de simulação da Petrobras. Portanto, otimizar solucionadores lineares esparsos mantendo alta precisão é crucial para estudos confiáveis de reservatórios.

A Petrobras colaborou com a UFRJ e outros institutos de pesquisa e inovação no Brasil para desenvolver o SolverBR, um solucionador de equações lineares baseado em CPU que usa novas técnicas de paralelização computacional com uma implementação multicore eficiente. O SolverBR é integrado a simuladores de fluxo geomecânicos e de terceiros, incluindo o Computer Modelling Group (CMG) IMEX e GEM, amplamente utilizados para simulação composicional de reservas do pré-sal.

Workflow diagram from Petrobras with icons representing reservoir model assets, reservoir simulators, sparse matrices, linear solver configurations, and performance evaluation.
Figura 1. Simulação de vazão de reservatório de ponta a ponta

Portabilidade do SolverBR de x86 para o Arm

Processadores baseados em Arm, como a CPU NVIDIA Grace, estão ganhando força em soluções de HPC, inclusive no setor de energia. A Petrobras, a NVIDIA e o Centro de Inovação CESAR estão fazendo uma parceria para portar e comparar o SolverBR com a CPU NVIDIA Grace em uma iniciativa para medir os principais benefícios das CPUs baseadas em Arm.

A CPU NVIDIA Grace possui Arm Neoverse V2 de 72 núcleos, conectada por uma malha de coerência escalável NVIDIA de alta largura de banda, com alta largura de banda e baixa potência de memória LPDDR5X.

Os resultados iniciais demonstraram que a NVIDIA Grace oferece as melhores taxas de desempenho da categoria em tempo de solução (TTS) e energia estimada para solução (ETS), em comparação com os principais processadores baseados em x86 disponíveis em infraestruturas on-premises e na nuvem.

O projeto se concentra na manutenção de um sistema de compilação multiplataforma, permitindo que uma única base de código e scripts de compilação funcionem perfeitamente em várias plataformas. Isso garante testes consistentes e comparações de desempenho confiáveis ao portar a base de códigos x86 para o Arm com o mínimo de esforço necessário. O robusto ecossistema Arm, com compiladores e depuradores de código aberto facilitaram significativamente essa transição.

O GCC 12.3 foi escolhido como compilador de teste devido ao seu excelente desempenho. O GCC 12.3 ou superior é recomendado devido ao seu suporte a otimizações automáticas para os cores Arm Neoverse V2. O processo de portabilidade para o Arm envolveu as seguintes etapas:

  1. Remoção de todas as flags específicas da arquitetura x86, como -maxv, -march e -mtune, que têm significados diferentes no Arm.
  2. Use o nível de otimização -O3 para acionar otimizações automáticas, como function inlining, vetorização, desenrolamento de loop, intercharge e fusão. Para obter ainda mais desempenho, considere utilizar a flag -Ofast.
  3. Acrescente o -mcpu=native ao CFLAGS para garantir que o compilador detecte automaticamente a CPU do sistema de compilação.
  4. Por fim, use -flto como um sinalizador opcional para otimização de tempo de linkagem. Dependendo da aplicação, -fsigned-char ou -funsigned-char também podem ser necessários.

Um esforço mínimo foi necessário para resolver erros de compilação, substituindo as funções Intel Intrinsics por funções específicas do Arm usando a biblioteca somente de cabeçalho sse2neon. Erros de tempo de execução foram corrigidos, incluindo problemas de sincronização de memória causados por otimizações específicas do compilador anterior, o que resultou em reordenação de instruções e subsequentes divergências de precisão de ponto flutuante.

Para este experimento inicial, a Petrobras usou um conjunto fixo de flags de compilação para cada arquitetura (x86_64 e aarch64) sem ajustes específicos do processador. Isto foi feito com o objetivo de compreender o comportamento de desempenho out-of-the-box. A Tabela 1 ilustra as flags de compilação utilizadas.

Arquitetura
Sinalizadores do Compilador
x86_64
-std=c++17 -O3 -lrt -fPIC -m64 -march=nativo -mtune=nativo -fopenmp-simd -fopenmp
aarch64
-std=c++17 -O3 -lrt –fPIC -mcpu=nativo -fopenmp-simd -fopen
Tabela 1. Sinalizadores de compilação para arquiteturas baseadas em x86 e Arm

Medindo o Desempenho e a Eficiência Energética

Contêineres Singularity foram empregados para replicar o stack de computação do SolverBR em várias plataformas para garantir a reprodutibilidade. Um único arquivo de definição foi utilizado para gerar vários contêineres de tempo de execução, resultando em arquivos .sif únicos, um para cada arquitetura de CPU. A Tabela 2 especifica todas as CPUs testadas, baseadas em x86 e em Arm, locais e na nuvem. A NVIDIA conduziu os experimentos na arquitetura Grace, enquanto a Petrobras e o CESAR executaram os benchmarks nas demais arquiteturas.

Ambiente
Processador
Arquitetura
Núcleos Físicos
No local
Intel Xeon Gold 6248*
x86_64
20
No local
CPU NVIDIA Grace**
Armv9
72
AWS EC2 R7g
AWS Graviton3
Armv8
64
AWS EC2 R7i
Intel Xeon Platinum 8488C (Sapphire Rapids)
x86_64
48
AWS EC2 R7a
AMD EPYC 9R14 (Gênova)
x86_64
96
Tabela 2. Especificações em processadores baseados em x86 e ARM no local e na nuvem

*Intel Xeon Gold 6248 é o principal cluster de CPU on-premises do Centro de Pesquisas da Petrobras (CENPES)
**Dados de CPU NVIDIA Grace calculados em um único NVIDIA Grace SoC usando a plataforma GH200 Superchip

O teste da porção linear do pipeline de simulação do reservatório mostrado na Figura 1 envolveu a extração das matrizes esparsas geradas pelo CMG dos conjuntos de dados de campos de petróleo e gás do pré-sal (Búzios, Proxy 100, Proxy 200, Sapinhoá) e do modelo de referência SPE10. O exemplo estabelece como os simuladores CMG podem ser modularizados e estendidos com componentes ou software de terceiros. Os engenheiros do CMG estão atualmente explorando oportunidades adicionais para portar componentes e recursos de seus simuladores, com o objetivo de otimizar o desempenho em várias plataformas e arquiteturas de hardware.

A Figura 2 exibe as configurações dos métodos lineares: Método Implícito Adaptativo (AIM), Residual Mínimo Generalizado de Projeção de Subespaço de Krylov (KSPGMRES), Resíduo de Pressão Restrita (CPR), Decomposição de Domínio (DD), Fatoração de LU Incompleta (ILU). Cada sistema de equações foi resolvido 50 vezes para todos os modelos ao longo de 3 anos, resultando em milhares de execuções.

A side-by-side representation of linear system solver configurations for SPE10 matrices and Búzios, Proxy100, Proxy200, and Sapinhoá matrices.
Figura 2. Configurações de solucionadores de sistemas lineares

A Figura 3 apresenta os resultados de aceleração para cada modelo, utilizando o máximo de núcleos disponíveis em processadores de soquete único. Atualmente, a Petrobras utiliza a plataforma Intel Xeon Gold 6248 em seu cluster de CPU de produção on-premises, que serve como ponto de referência para a normalização dos resultados.

A arquitetura NVIDIA Grace demonstra desempenho superior, alcançando as mais altas taxas de desempenho em todos os modelos, incluindo:

  • Aceleração de até 4,5 vezes em relação ao Intel Xeon Gold 6248 (CPU de linha de base da Petrobras)
  • Aceleração de até 2,9 vezes em relação ao Intel Xeon Platinum 8488C
  • Aceleração de até 1,9 vezes em relação ao AMD EPYC 9R14
Bar chart showing single-socket speedups with max core count, showing NVIDIA Grace-72 in green, AMD EPYC 9R14-96 in red, AWS Graviton3-64 in orange, Intel Xeon Platinum 8488C-48 in blue, and Intel Xeon Gold 6248-20 in gray.
Figura 3. Acelerações de soquete único em processadores AMD, AWS, Intel e NVIDIA, com o NVIDIA Grace alcançando a mais alta taxa de desempenho em todos os modelos

A Figura 4 mostra que a CPU NVIDIA Grace tem a melhor escalabilidade ao variar o número total de núcleos até o máximo disponível em cada processador, com resultados até 53% melhores em relação à opção menos escalável. A CPU NVIDIA Grace demonstra desempenho excepcional para essa carga de trabalho específica devido às suas características exclusivas, que incluem alta largura de banda de memória efetiva, uma malha coerente escalável de CPU avançada (NVIDIA SCF) e a adoção de núcleos Arm Neoverse V2 de classe de servidor.

Line chart showing single-socket solver scalability with NVIDIA Grace in green, AMD EPYC 9R14 in red, AWS Graviton3 in orange, Intel Xeon Platinum 8488C in blue, and Intel Xeon Gold 6248 in gray.
Figura 4. Resultados de escalabilidade variando o número de núcleos entre processadores AMD, AWS, Intel e NVIDIA para o modelo Búzios, com o NVIDIA Grace exibindo a maior escalabilidade

Para estimar a eficiência energética da CPU NVIDIA Grace em comparação com as CPUs locais, a potência máxima de design térmico (TDP) de cada CPU foi avaliada em carga total com um consumo de memória estimado com base na capacidade do processador e na geração tecnológica. Para a CPU NVIDIA Grace SoC, o consumo de memória da CPU foi de aproximadamente 250W, e as acelerações foram relatadas usando o AMD EPYC 9R14 como referência.

A NVIDIA Grace demonstrou a maior eficiência energética estimada em todos os testes de solucionador linear com carga máxima, com eficiência energética até 4,3 vezes maior (Figura 5).

Bar chart showing estimated energy efficiency at max load with NVIDIA Grace-72 in green, AMD EPYC 9R14-96 in red, Intel Xeon Platinum 8488C-48 in blue, and Intel Xeon Gold 6248-20 in gray.
Figura 5. Comparação estimada de eficiência energética na carga máxima para processadores AMD, Intel e NVIDIA

Conclusão

A CPU NVIDIA Grace superou todas as CPUs testadas baseadas em x86 e Arm em TTS, escalabilidade e eficiência energética. Esse sucesso se deve principalmente à arquitetura NVIDIA Grace, que se concentra em combinar eficiência energética com alta performance e demanda por aplicações de HPC. Recursos como memória LPDDR5X, design do cache coerente unificado (SCF) e um stack de software otimizado com base no GCC contribuíram para esses resultados.

Como próximos passos, a Petrobras planeja portar e comparar seus simuladores geomecânicos e de reservatórios para Arm e explorar todo o potencial de vários superchips NVIDIA Grace para melhorar ainda mais o tempo de solução.

Para saber mais sobre a CPU NVIDIA Grace, assista à sessão on demand do NVIDIA GTC, Acelerando Solucionadores Lineares na NVIDIA Grace.

Informações Adicionais

Este trabalho foi executado pelos seguintes engenheiros e analistas: Felipe Portella (Petrobras), José Roberto Pereira Rodrigues (Petrobras), Leonardo Gasparini (Petrobras), Vitor Aquino (CESAR), Luigi Marques da Luz (CESAR).