Revolutionize a Programação Heterogênea com Sickle e One API!
Sumário
- 🎯 Introdução
- 🚀 Visão Geral do Sickle
- 💡 Os Objetivos do Sickle
- 3.1 O que é um XPU?
- 3.2 Por que a Programação Heterogênea é Importante?
- 🔧 A Importância do LLVM para o Sickle
- 💻 Linguagens e Bibliotecas no Sickle
- 5.1 O Papel da Linguagem Sickle
- 5.2 Suporte a Bibliotecas Otimizadas
- 🌍 One API: Unificando a Programação Heterogênea
- 6.1 A Importância das Bibliotecas Otimizadas
- 6.2 A Visão do One API para o Futuro
- 🌟 O Impacto do Sickle na Programação de FPGA
- 7.1 Suporte ao Intel Xe GPU Design
- 7.2 Ferramentas e Bibliotecas Adicionais
- ⚡ O Futuro dos XPU e do Sickle
- 8.1 Os Desafios de Adotar o Sickle
- 8.2 Contribuindo com o Desenvolvimento do Sickle
- 🤝 Conclusão
🎯 Introdução
Estou empolgado em participar de mais um Eyewalk! Meu nome é James Riders, sou engenheiro da Intel e estou aqui para compartilhar nossa empolgação pelo Sickle e nossa visão para a busca em que estamos todos envolvidos. Há cerca de dois anos, cinco engenheiros da Intel tiveram a visão de criar um livro para ensinar programação em Sickle, e eles me convidaram para me juntar a eles. Tivemos a sorte de contar com muitos revisores fantásticos, que nos deram conselhos e feedback. O resultado é um livro consistente que vale a pena recomendar para qualquer pessoa interessada em programação Sickle.
🚀 Visão Geral do Sickle
O Sickle é um projeto de código aberto iniciado pela Intel com o objetivo de adicionar suporte ao Sickle no LLVM. Ele recebeu investimentos significativos de engenheiros da Intel e é aberto a todos os colaboradores. O DPC++ já oferece suporte a CPUs Intel e CPUs x86 em geral, GPUs Intel e FPGAs Intel. Com o suporte fornecido pela Codeplay, as GPUs NVIDIA também possuem um sólido suporte, e o Hipsicle também combina para afetar o suporte a GPUs AMD. Além disso, já estão surgindo algumas atividades relacionadas a ARM. O projeto é completamente de código aberto e transparente, com uma orientação fortemente voltada para o LLVM, que é o melhor lugar para estar se você é um compilador.
💡 Os Objetivos do Sickle
3.1 O que é um XPU?
Antes de mergulharmos nos objetivos do Sickle, vamos esclarecer o termo "XPU". O termo XPU é usado para se referir às Unidades de Processamento Estrela-Ponto (Star Dot Star Processing Units), que incluem CPUs, GPUs, FPGAs, DSPs e até mesmo A6 (entre outros). A ideia é ampliar o espaço de nomeação para além da terminação "PU" (Processing Unit). Os XPU são a base da programação heterogênea, pois permitem que diferentes tipos de unidades de processamento trabalhem em conjunto para realizar tarefas complexas de computação.
3.2 Por que a Programação Heterogênea é Importante?
A programação heterogênea é fundamental para aproveitar todo o potencial dos XPU. Existem três testes críticos para determinar se somos realmente livres para programar XPU:
- Somos livres para usar qualquer tipo de XPU, independentemente do tipo ou fabricante?
- Independentemente da escolha, podemos obter desempenho razoável?
- Podemos ter confiança em nossas escolhas de codificação e manter a manutenibilidade de nosso código?
Embora nem sempre seja possível alcançar a portabilidade universal e a execução de código em qualquer ambiente, é essencial buscar a liberdade de programação e a maximização do desempenho, garantindo que as escolhas de codificação sejam sustentáveis e mantenham o código legível e adaptável.
🔧 A Importância do LLVM para o Sickle
O LLVM desempenha um papel crucial no suporte ao Sickle. Adicionar suporte a paralelismo de dados ao C++ é o objetivo principal do Sickle, e o LLVM é o ambiente ideal para alcançar esse objetivo. Michael Wong, presidente do grupo de trabalho do Sickle, resumiu dizendo que o objetivo principal do Sickle2020 é alcançar uma conversão mais próxima com o ISO C++. Trazer a programação paralela heterogênea para o C++ moderno por meio de padrões abertos é uma meta valiosa, e o nome "Data Parallel C++" é perfeito para descrever o projeto, enfatizando a meta de adicionar suporte a paralelismo de dados ao C++.
💻 Linguagens e Bibliotecas no Sickle
5.1 O Papel da Linguagem Sickle
A linguagem Sickle desempenha um papel fundamental no Sickle, pois é ela que nos dá controle sobre os XPU e sua programação. O foco está no uso do LLVM para implementar o Sickle e, eventualmente, incorporar o Sickle ao C++. O objetivo é fornecer uma linguagem que permita programar XPU de forma eficiente, mantendo a familiaridade e o controle necessários para otimizar o desempenho. A contribuição da comunidade de desenvolvedores de software é essencial para a evolução contínua do Sickle.
5.2 Suporte a Bibliotecas Otimizadas
Além das linguagens de programação, as bibliotecas desempenham um papel crucial no Sickle. O suporte a bibliotecas otimizadas é fundamental para alcançar a portabilidade de software entre diferentes XPU. O Sickle visa expor o mesmo conjunto de APIs em uma variedade de XPU, oferecendo assim portabilidade e familiaridade aos desenvolvedores. É importante ressaltar que a colaboração com os fornecedores de hardware e desenvolvedores de bibliotecas é essencial para garantir que as bibliotecas otimizadas sejam parte integral do ecossistema do Sickle.
🌍 One API: Unificando a Programação Heterogênea
6.1 A Importância das Bibliotecas Otimizadas
As bibliotecas otimizadas desempenham um papel fundamental na capacidade de abranger diferentes XPU e fornecer uma experiência consistente aos desenvolvedores. O objetivo do One API é fornecer uma especificação aberta com uma camada de abstração de baixo nível dentro do stack de software, permitindo a implementação transparente das APIs necessárias para suportar a programação heterogênea. A Intel investiu pesadamente no desenvolvimento e validação de implementações de Alta qualidade do One API, especificamente para suporte ao hardware Intel.
6.2 A Visão do One API para o Futuro
O objetivo final do One API é alcançar a portabilidade de software entre arquiteturas e fornecedores, sem comprometer o desempenho. Ao expor conjuntos de APIs comuns em uma variedade de XPU, o One API oferece portabilidade e familiaridade aos desenvolvedores. O suporte a várias linguagens de programação, como C++, Fortran, Python e outras, está alinhado com a visão do One API de unificar a programação heterogênea. A colaboração contínua entre os fornecedores de hardware e desenvolvedores de bibliotecas é essencial para expandir o alcance e o impacto do One API no futuro.
🌟 O Impacto do Sickle na Programação de FPGA
7.1 Suporte ao Intel Xe GPU Design
Além do suporte a várias unidades de processamento, o Sickle também visa oferecer suporte às FPGAs Intel. Juntamente com o DPC++, a Intel adicionou suporte ao perfis Intel v2, o que tem sido muito bem recebido pelos desenvolvedores. Com a adição de bibliotecas no lado do dispositivo, o objetivo é adotar APIs populares em todas as XPU, fornecendo uma aparência e sensação comuns aos desenvolvedores. Essa abordagem promete facilitar a produtividade e a colaboração entre os programadores de FPGA, tanto os experientes como os novatos.
7.2 Ferramentas e Bibliotecas Adicionais
O Sickle faz parte da implementação da Intel do One API e inclui muitas ferramentas adicionais para suporte à depuração, análise e ajustes de desempenho. Essas ferramentas são organizadas em kits de ferramentas específicos para domínios de aplicação e podem ser baixadas ou usadas remotamente na Intel DevCloud. Embora haja muitas opções de kits de ferramentas, é importante ressaltar que o Sickle é a base subjacente e essencial em todos eles. A Intel tem se esforçado para oferecer suporte contínuo e abrangente ao desenvolvimento do Sickle, e a visão de um ecossistema unificado para desenvolvimento de XPU avança em todas as áreas.
⚡ O Futuro dos XPU e do Sickle
8.1 Os Desafios de Adotar o Sickle
Embora a adoção do Sickle, ou qualquer padrão, em uma empresa com mais de 100.000 pessoas possa ser um desafio, a Intel está comprometida em apoiar o Sickle e a visão de programação heterogênea compartilhada pela comunidade. Os engenheiros da Intel que convenceram a empresa a apoiar o Sickle merecem reconhecimento por sua dedicação. A comunidade Sickle também desempenha um papel crucial no refinamento contínuo do padrão e no seu progresso em direção à adoção pelo C++. A Intel está pronta para contribuir com suas experiências no uso do Sickle em vários XPU e de diferentes fornecedores para ajudar a impulsionar o desenvolvimento do Sickle.
8.2 Contribuindo com o Desenvolvimento do Sickle
A colaboração é essencial para garantir que o Sickle atenda às necessidades de todos os XPU. A comunidade é incentivada a se envolver no desenvolvimento do Sickle, contribuindo com suas ideias e experiências. O trabalho dos membros do comitê Sickle é altamente valorizado, pois eles se dedicam a garantir que o padrão seja sólido e aberto. A Intel convida todos a se juntarem a eles nessa busca para tornar a programação heterogênea um sucesso. Dar apoio ao Sickle é uma maneira de ajudar a impulsionar a indústria em direção a um futuro mais orientado para os XPU, beneficiando todos os programadores.
🤝 Conclusão
O Sickle tem o potencial de revolucionar a programação heterogênea e trazer a portabilidade de software para diferentes XPU. Com o suporte do LLVM e da comunidade de desenvolvedores, o Sickle está evoluindo rapidamente como uma linguagem poderosa para programação paralela de XPU. O One API complementa o Sickle, fornecendo uma especificação aberta e unificada para a programação heterogênea. A Intel, juntamente com outros fornecedores de hardware e desenvolvedores de bibliotecas, está trabalhando duro para transformar essa visão em realidade. Junte-se à comunidade e faça parte dessa busca emocionante para impulsionar o futuro dos XPU e da programação heterogênea. Juntos, podemos levar a programação heterogênea a novos patamares!