O AdaptiveCpp 24.10 acaba de ser lançado, consolidando sua posição como uma das implementações mais avançadas de SYCL e paralelismo padrão do C++ para CPUs e GPUs. Projetado para funcionar em uma ampla variedade de hardware, este compilador traz recursos inovadores e otimizações de desempenho ainda mais poderosas.
Novidades do AdaptiveCpp 24.10
1. Desempenho elevado com otimizações em JIT
A versão 24.10 introduz otimizações adicionais em tempo de compilação JIT (Just-In-Time), prometendo melhorias substanciais de desempenho para diversos kernels. Para potencializar a performance, foi adicionado o novo recurso ACPP_ALLOCATION_TRACKING=1
, que permite rastrear o uso de memória e aprimorar ainda mais a geração de código.
2. Suporte total a algoritmos de grupo SYCL 2020
O AdaptiveCpp agora suporta completamente a biblioteca de algoritmos de grupo SYCL 2020 em todos os seus backends. Isso abre novos horizontes para desenvolvedores que utilizam programação paralela.
3. Biblioteca de algoritmos acpp::algorithms
Com a nova biblioteca acpp::algorithms
, é possível acessar algoritmos avançados diretamente em SYCL, oferecendo mais controle e flexibilidade aos usuários.
Principais recursos adicionados
- Novos Algoritmos da STL Paralela para Offloading em GPU:
std::inclusive_scan
std::exclusive_scan
std::transform_inclusive_scan
std::transform_exclusive_scan
std::merge
std::sort
Esse recurso facilita a especialização de código para diferentes alvos, como tipos de hardware, diretamente no momento da compilação.
AdaptiveCpp_restrict_ptr
: Introduz semânticas denoalias/__restrict__
para argumentos de ponteiro em kernels.AdaptiveCpp_jit::compile_if
: Uma API poderosa para especialização de código com base em propriedades conhecidas apenas em tempo de compilação JIT.
Benchmarks: AdaptiveCpp vs. CUDA e outras tecnologias
Os benchmarks mostram o AdaptiveCpp como uma solução competitiva e, em alguns casos, superior ao NVIDIA CUDA e outras alternativas, como oneAPI e HIP:
- Desempenho em GPUs NVIDIA: A configuração padrão do AdaptiveCpp (
ACPP_ADAPTIVITY_LEVEL=1
) já entrega resultados expressivos, enquanto o nível 2 (AL2
) pode melhorar ainda mais após 2-3 execuções do aplicativo. - GPUs AMD: Superou HIP e oneAPI em testes específicos.
- GPUs Intel: Apresentou resultados sólidos com seu backend OpenCL.
Para detalhes completos e gráficos, consulte os benchmarks na página oficial do GitHub.
Os desenvolvedores são incentivados a explorar o guia de desempenho oficial, que inclui dicas práticas para ajustar configurações e aproveitar ao máximo os novos recursos, como o JIT otimizado.
Teste o AdaptiveCpp 24.10 hoje mesmo e descubra como ele pode transformar seu fluxo de trabalho em programação heterogênea. Confira os detalhes e faça o download aqui. Compartilhe sua experiência e contribua para a comunidade!