Novos recursos

Intel lança ISPC 1.25: compilador otimizado para alto desempenho em CPU e GPU

A nova versão do Intel ISPC 1.25 traz melhorias na paralelização e otimização de código para CPUs e GPUs, suportando novas arquiteturas e reduzindo o tempo de compilação.

Logotipo da Intel em azul sobre um fundo preto texturizado, representando a identidade visual da marca.

A Intel lançou a versão 1.25 do ISPC (Implicit SPMD Program Compiler), um compilador de código aberto desenvolvido para ajudar programadores a escreverem programas de alta performance que funcionam de forma paralela em CPU (unidade central de processamento) e GPU (unidade de processamento gráfico). Isso significa que o ISPC permite que o mesmo código seja executado simultaneamente em várias “linhas de produção” dentro do processador, acelerando o tempo de execução.

O ISPC utiliza o conceito de SIMD (Single Instruction, Multiple Data), que é uma técnica onde uma única instrução é aplicada em vários dados ao mesmo tempo. Em termos simples, ao invés de processar uma coisa de cada vez, ele processa várias de uma só vez. Isso é especialmente útil em áreas que exigem muito processamento, como gráficos, jogos, ciência de dados e cálculos matemáticos complexos.

O que é SPMD?

O SPMD, ou Single Program, Multiple Data, é uma abordagem de programação onde o mesmo programa é executado em diferentes conjuntos de dados simultaneamente. Imagine que você tem várias folhas de papel com números diferentes, e cada uma precisa de uma conta específica. Com o SPMD, você consegue calcular todas essas contas ao mesmo tempo, sem precisar processar cada folha individualmente.

Isso permite que o código seja escrito de maneira simples e sequencial, como em um programa normal, mas executado em paralelo, o que resulta em uma execução muito mais rápida.

Novidades do ISPC 1.25

A nova versão do ISPC traz diversas melhorias e novos recursos que tornam o trabalho dos programadores mais eficiente:

  1. Aprimoramentos no uso de atributos:
  • Agora, o ISPC permite que os programadores definam mais propriedades para variáveis e funções, como "noescape" e "address_space(N)", o que aumenta o controle sobre como o código será executado.
  1. Suporte a templates:
  • Agora, você pode usar templates (um recurso avançado de programação) para declarar vetores e arrays, facilitando a criação de código reutilizável e mais flexível.
  1. Melhorias na geração de código:
  • O ISPC agora gera códigos mais rápidos e eficientes, especialmente quando se usa loops (foreach), que são comandos que repetem uma operação várias vezes.
  1. Redução do tempo de compilação:
  • O tempo necessário para transformar o código fonte em um programa executável foi significativamente reduzido, graças à pré-compilação da biblioteca padrão do ISPC. Dependendo do tamanho do projeto, o tempo de compilação pode ser reduzido em até 60%.
  1. Novos alvos de compilação:
  • O ISPC agora oferece suporte a novas arquiteturas de GPU da Intel, como a Xe2 Battlemage, além de novos processadores como ArrowLake e GraniteRapids. Por outro lado, algumas arquiteturas antigas, como Gen9, foram descontinuadas.
  1. Aprimoramento nas operações atômicas:
  • Foram adicionadas novas operações matemáticas (como soma e subtração) para trabalhar com números do tipo float e double, usados em cálculos com casas decimais.

Principais características do ISPC

  1. Desempenho elevado:
  • O ISPC pode proporcionar um aumento de desempenho significativo. Por exemplo, em processadores com unidades SIMD de 4 elementos, ele pode tornar a execução até 3 vezes mais rápida. Em unidades maiores, com 8 elementos, o ganho de velocidade pode chegar a 6 vezes.
  1. Paralelização simplificada:
  • Mesmo que você não seja um especialista em programação paralela, o ISPC facilita o processo de dividir o trabalho entre múltiplos núcleos de um processador e várias unidades SIMD. Isso significa que seu programa pode ser processado muito mais rápido, aproveitando todo o potencial da CPU e da GPU.
  1. Integração com C/C++:
  • Para quem já está acostumado a programar em C ou C++, o ISPC oferece uma integração simples e eficiente. Ele permite que funções de um programa C/C++ sejam usadas diretamente no código ISPC e vice-versa, sem a necessidade de conversões complexas ou cópias de dados.
  1. Abstração mínima entre o desenvolvedor e o hardware:
  • O ISPC foi projetado para facilitar o entendimento de como o código se transforma em instruções que o hardware executa. Assim, o desenvolvedor tem maior controle sobre o desempenho do código, sem precisar lidar com todos os detalhes complexos de programação em baixo nível.

Suporte a múltiplas arquiteturas

O ISPC é um compilador compatível com várias plataformas, incluindo Windows, macOS e Linux. Ele também pode gerar código para dispositivos móveis, como Android e iOS, e até para consoles de jogos, como PS4 e PS5. Além disso, suporta diferentes arquiteturas de processadores, como as variações do x86 (SSE2, SSE4, AVX, AVX2 e AVX512), ARM (NEON) e GPUs Intel (Gen9 e Xe).

Esse compilador utiliza a infraestrutura do LLVM, que é um dos mais poderosos sistemas para geração e otimização de código. Graças a isso, o ISPC oferece alto desempenho, facilitando o desenvolvimento de programas que precisam rodar de maneira rápida e eficiente em diferentes tipos de dispositivos e plataformas.

Por que usar o ISPC?

O ISPC é ideal para quem quer desenvolver aplicações que exigem alto desempenho, como jogos, gráficos, simulações científicas e cálculos intensivos. Ele permite que desenvolvedores aproveitem todo o poder das CPUs e GPUs modernas, sem precisar lidar com a complexidade de escrever código diretamente para cada tipo de hardware.