O melhor pedaço da Maçã.
MM News

Receba os nossos principais artigos diariamente, por email.

Mac OS X 10.6 Snow Leopard: reveja avanços gráficos e conheça a tecnologia OpenCL

Ícone do OpenCL

Ícone do OpenCLComputadores modernos possuem placas aceleradoras de vídeo (ou GPUs) há um bom tempo; elas começaram em desktops de alto nível e foram em direção aos mais populares e também aos notebooks. Hoje, mesmo o mais barato dos MacBooks ou dos Macs mini possui um hardware gráfico poderoso, o que mostra o quanto esse tipo de componente se tornou popular nas nossas vidas.

Publicidade

Entretanto, uma das coisas que não mudou muito desde que as GPUs se tornaram populares foram as suas aplicações. Para que eu preciso de uma placa de vídeo SuperMasterHiperUltra poderosa na minha máquina se eu não jogo, não produzo vídeos em alta definição e não quero trabalhar com desenvolvimento de aplicativos que tirem forte proveito disso ou que estejam ligados a áreas mais focadas da indústria de ciência e tecnologia?

Bom, esses são alguns dos pontos que teremos que entender antes de adentrar na tecnologia OpenCL, mais uma grande novidade do Mac OS X 10.6 Snow Leopard.

A arte de se produzir experiências “cinematográficas”

Sob a perspectiva de um desenvolvedor de aplicativos, GPUs são usadas como um método para produção de experiências “cinematográficas” aos usuários finais. O nome é estranho, mas reflete o ambiente que o software produz aos olhos de quem vai usá-lo e que permitirá a essa pessoa empregar os seus recursos, normalmente construídos em uma forma que pouquíssimos indivíduos entendem.

Por debaixo do seu desktop, há milhões de linhas de código em execução. Mas a GPU faz você ver apenas o melhor gerado por todas elas.
Por debaixo do seu desktop, há milhões de linhas de código em execução. Mas a GPU faz você ver apenas o melhor gerado por todas elas.

Então, mesmo sem usar a placa de vídeo do seu Mac para tarefas específicas dela, você indiretamente depende dela no seu dia-a-dia:

  • Talvez você não tenha jogos no seu Mac, mas ainda assim o sistema da Apple produz um local agradável para o seu trabalho diário confiando diretamente na eficiência de uma boa GPU, com todos os efeitos que estamos acostumados a ver. Da mesma forma, talvez a maioria dos softwares que você usa produzam interfaces de alta qualidade por meio de uma leve dependência no seu hardware gráfico.
  • Você pode não trabalhar com vídeos, mas não é legal assistir aos melhores momentos da sua vida em alta definição na tela do seu Mac? Eles podem não ter sido produzidos nele, mas a qualidade de reprodução que atingimos hoje apenas se tornou possível de forma eficiente graças a uma integração entre hardware e software que as fabricantes de chipsets gráficos trouxeram aos seus produtos.
  • Além disso, há outras tarefas diárias do seu trabalho que também necessitam de melhores formas visuais para produção de resultados mais rapidamente. Você pode não estar incumbido de criá-las e nem precisa ir a setores muito avançados para vê-las, mas a dependência de recursos gráficos no seu trabalho diário está vindo até você: se não chegou até hoje, pode ter certeza de que um dia virá.

Por essas e outras razões, a necessidade de GPUs na computação pessoal cresceu e hoje atende a praticamente todas as necessidades da indústria. Devido ao fato de continuar em constante evolução, é preciso buscar novas áreas de atuação, além do simples aprimoramento daquelas que já existem. Vamos rever um pouco do que conseguimos até hoje em placas de vídeo no lado tecnológico, antes de partirmos para os próximos desafios.

Maior poder computacional

Cada geração nova de GPUs eleva os poderes gráficos de um computador, ao oferecer aumento em realismo, fidelidade e resolução gráfica para propósitos visuais. Hoje, a maioria delas é capaz de processar centenas de milhões ou até bilhões de pixels por segundo, julgando que cada um deles é o resultado final de uma sequência complexa de operações matemáticas, inimagináveis para o lado de quem está fazendo ajustes numa foto, por exemplo.

Poder das GPUs em evolução

As modernas Quadro FX 5800 (NVIDIA) e ATI Radeon 4870 (AMD) entregam até 1TeraFLOP de poder gráfico: isso representa um trilhão de operações de pontos flutuantes por segundo! Mas desprezando apenas essa conquista, é importante lembrar que elas (e muitas outras) também conseguiram estilos de programação que as assemelham às CPUs, se equiparando com a sua precisão, permitindo altas larguras de banda e até proporcionando um cenário de competição entre ambas, que torna esses componentes mais poderosos e acessíveis. Logo, o usuário final ganha com isso.

Melhores maneiras de se programar, tirando proveito do melhor hardware

Para tirar vantagem de um bom hardware, desenvolvedores precisam do software mais adequado. Essa foi uma das razões para a Apple adicionar valor interno ao Snow Leopard, em vez de continuar jogando mais e mais coisas no Mac OS X. Mas no lado das GPUs, tecnologias para se programar tirando maior proveito do hardware costumam ser lançadas constantemente entre versões do sistema da Apple, e aprimoramentos ainda costumam ser feitos nos updates.

Por exemplo: no Tiger, a Apple trouxe a Core Image, uma tecnologia para facilitar o processamento de imagens ao remover a necessidade de o usuário realizar alterações permanentes diretamente nos arquivos. Novas técnicas concebidas para facilitar a interação da CPU com a GPU em tarefas desse tipo nos permitiram obter resultados automaticamente, sem armazenar arquivos de saída constantemente em disco, algo que se tornou essência de aplicativos como Aperture e Photoshop Lightroom, indispensáveis para o mercado profissional.

Produtos como Aperture só viraram realidade graças ao jeito certo de se tirar o melhor possível da GPU
Produtos como Aperture só viraram realidade graças ao jeito certo de se tirar o melhor possível da GPU

No Leopard, o Mac OS X adquiriu fôlego para competir com o Windows no mercado de games, ao introduzir uma versão mais eficiente da especificação OpenGL com suporte a múltiplos threads. Na época em que o recurso foi anunciado, jogos como Doom 3 e World of Warcraft ganharam o dobro de desempenho, representando outra vantagem em se produzir tecnologias que vão bem a fundo no aproveitamento de um bom hardware.

Facilitando o desenvolvimento de interfaces de usuário

Facilidade de uso é uma das coisas que a Apple mais coloca aos olhos do seus usuários nos seus aplicativos, mas, no lado dos desenvolvedores, as coisas também devem ser mais fáceis quando podem ser. Até um tempo atrás, não era muito fácil para um desenvolvedor proporcionar um ambiente fácil para o uso de um aplicativo, especialmente porque as tecnologias gráficas implantadas até o Tiger exigiam um trabalho enorme para a produção de algo realmente agradável aos olhos de um cliente.

Boa apresentação e aproveitamento de espaço são importantes desde aparelhos como o iPhone até os Cinema Displays de 30 polegadas, mas cuidar disso apenas se tornou fácil no desenvolvimento de aplicativos quando a Apple nos apresentou a tecnologia Core Animation, em 2006.

Time Machine
Core Animation aumenta o valor produtivo até das coisas que menos temos costume de fazer, tornando o mais complicado invisível para nós.

Ao automatizar o processo de animações (que requerem apenas um estado final para um objeto, mas podem ter vários estágios intermediários) e a obtenção de aceleração gráfica, essa tecnologia facilitou muito a composição de elementos de interface em cenas e camadas, que possibilitam alta interatividade com diversos elementos (imagens, vídeos, texto, etc.). A principal preocupação do desenvolvedor, dessa forma, passou a ser o código do seu aplicativo, e como suas funções interagem com o que o usuário vê.

. . .

Muitos aplicativos da Apple, com esses e outros avanços, passaram a ser inspiração para os desenvolvedores trabalharem em soluções que realmente despertam a nossa atenção hoje em dia. Quem não conhece bem o Mac OS X às vezes se impressiona com as menores funções, que usam o poder da GPU para produzir um efeito gráfico especial. No Snow Leopard, porém, a oportunidade de usar placas gráficas para mais tarefas do que essa é o único propósito que está sendo destacado, por meio da nova tecnologia OpenCL.

Usando a GPU para fins computacionais gerais

OpenCLPodemos dizer que OpenCL é uma forma de um aplicativo no Snow Leopard usar a placa de vídeo do seu Mac para acelerar tarefas que não tenham nada a ver com gráficos 2D, 3D ou algo do tipo. Ela possui duas partes fundamentais: a primeira é uma linguagem familiar para desenvolvedores no sistema da Apple implementarem suporte em suas soluções, enquanto a segunda é uma interface de programação para acelerar o desempenho delas com o uso da CPU, da GPU ou de ambas.

Programadores podem usar OpenCL nos seus aplicativos até para rescrever procedimentos de execução intensa de dados, bem como aqueles que requerem muitos recursos da máquina. Ao fazer isso, é gerado um código com operações relacionadas aos procedimentos rescritos, que podem ser executadas em paralelo por CPUs e GPUs compatíveis com a tecnologia.

Esse código vai para o aplicativo sem nenhuma compilação, pois esse processo é feito automaticamente pelo Mac OS X em cada momento que o usuário abri-lo, usando técnicas sofisticadas que garantem o maior desempenho possível. Graças a essa metodologia, qualquer solução pode ganhar suporte a OpenCL sem ser rescrita do zero.

O sistema também reconhece quais CPUs e GPUs compatíveis com OpenCL estão presentes na máquina, controlando o processamento dos dados ao software e permitindo o uso de funções para lidar com essa tarefa manualmente. O bom dessa arquitetura é que ela garante a compatibilidade do produto final em Macs que não suportam a tecnologia, assim como o Grand Central Dispatch faz.

Outra vantagem é que ela pode se enquadrar até nos aplicativos que requerem enorme precisão numérica, atendendo ao exigente mercado científico. A OpenCL garante o maior número possível de cálculos possíveis no hardware suportado e é flexível para uso de algoritmos complexos em novas funções ou tarefas que podem se tornar mais eficientes com maior poder de processamento.

Próximos passos

O suporte a OpenCL não deverá ficar restrito ao Mac OS X 10.6 Snow Leopard: essa tecnologia foi proposta como um padrão aberto de computação paralela ao Khronos Group buscando a sua aceitação, o que de fato aconteceu. Até o exato momento, em 2009, diversas fabricantes de semicondutores abraçaram a novidade, aliadas à Apple ou não.

Várias arquiteturas de CPUs e GPUs surgirão com suporte ao novo padrão e deverão atender não só a computadores, mas também aos diversos smartphones que estão surgindo no mercado, talvez até futuras gerações do iPhone. No cenário móvel, há chances de ela se destacar e ganhar valor essencial nas diversas plataformas que estão visando à liderança do setor, mas, enquanto não houver hardware compatível disponível, afirmar qualquer coisa é pura especulação.

Ao apoiar essa tecnologia, a Apple conseguiu posicionar o Mac OS X com o primeiro sistema operacional a suportar computação paralela entre processador e placas de vídeo poderosas. Contudo, os resultados do seu trabalho ainda levarão um tempo para surgir e serão a única forma de comprovarmos se OpenCL terá potencial de destaque na indústria ou não.

. . .

Fontes e Referências

Ver comentários do post

Carregando os comentários…
Artigo Anterior

Mobits Button Soccer está em promoção para o Brasil vs. Argentina; nova versão chegará em breve

Próximo Artigo

Movimentação de ações da Apple feita por Bill Campbell pode indicar sua renúncia da diretoria

Posts Relacionados