Mac OS X 10.6 Snow Leopard: reveja avanços gráficos e conheça a tecnologia OpenCL
Computadores 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.
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.
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.
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
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.

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
Podemos 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
- Visão geral sobre OpenCL no site da Apple;
- Resumo tecnológico sobre OpenCL (PDF, 345KB);
- Visão geral de desenvolvimento para o Mac OS X 10.6 Snow Leopard;
- OpenCL no Khronos Group;
- Leopard Technology Series for Developers: Gráficos e Mídia;
- Artigo sobre OpenCL na Wikipédia;
- Apple Developer Connection na iTunes Store (utilize a busca para encontrar recursos relacionados a gráficos e mídias no Mac OS X).





Não é por nada não, mas placa de vídeo existiu desde sempre. Você deve estar se referindo às placas aceleradoras gráficas, que antigamente eram separadas da placa de vídeo propriamente dita (como as antigas 3dfx Voodoo) e hoje são indispensáveis em qualquer SO moderno.
Fora isso, parabéns pelo artigo.
É verdade, Guilherme, não me lembrava dessa distinção. Agradeço o aviso! :-)
Parabéns pelo post…. muito bem explicado… parabens mesmo :D
acho a idéia do openCL fantástica…
uma pena que eu vá ficar sem experimentar um dos pilares do snow leopard, já que minha ati radeon 2600pro não tem suporte para tal ¬¬
Estou fúlo da via pq a minha maquina de 6 mil reias não vai rodar OpenCL,
É uma radeon 2600 pro tambem…. Odeio as placas da Nvidia, tenho um PC com 8500 GT, resumindo é um lixo comparado ao meu iMac….
pois é, mas ao mesmo tempo eu tbm lembro que fiz a coisa certa… já pensou pagar 5k em uma iMac com placa compartilhada? a nvidia 9400m suporta o openCL, mas nos testes 3DMark06 a nossa 2600pro apresentou mais que o dobro da pontuação da 9400m.
logo, no final das contas acho que o ganho de desempenho em processamento geral não iria compensar o ganho que temos usando a 2600pro no iMovie, jogos, e por ai vai…
*Off*
Achei um bug meio irritante no snow leopard, tenho GVT e de uns tempos pra cá algumas páginas começaram a não abrir ou então demorar demais, descobri se tratar da MTU (padrão 1500) porém a GVT precisa de um valor mais baixo (1450), detalhe isso depende de região para região, vc pode ter GVT e não ter problemas. O caso é que no Snow a alteração manual não fica, voltando sempre para o padrão (1500), tive que incluir no arquivo de inicialização (rc.common) o comando "ifconfig en1 mtu 1450" (para o airport), resolveu. Fica a dica.
acho a idéia do openCL fantástica…
uma pena que eu vá ficar sem experimentar um dos pilares do snow leopard, já que minha ati radeon 2600pro não tem suporte para tal ¬¬ [2]
Acho ridículo isto!!! Ponto MUITO negativo para a Apple…
Computadores “novos” sendo descartados desta maneira.
Eu também fiquei puto, mas não é porque a Apple não quer, é porque a placa não suporta mesmo.
Muito bom post, Silvio! Parabéns!
Entrando nesse assunto de gráficos e placas gráficas, qual é melhor:
ATI Radeon HD 2400 XT
OU
NVIDIA GeForce 9400M
??????????????????
A Radeon é muito boa, mas a GeForce 9400M ganhou atenção maior recentemente, estando integrada a quase todos os Macs novos. Ela possui ótimo desempenho para OpenCL (processando algumas dezenas de GigaFlops por segundo). e é integrada, garantindo alguma economia de energia aos novos computadores da Apple
Olá Silvio,
No meu caso, GPU é indiferente, mas gostei do post e quero parabenizá-lo pela fluidez do seu texto.
Sempre os artigos são completos e na maioria das vezes você cita fontes e referências, para quem tiver maior interesse em aprimorar seu conhecimento. Seus posts possuem muita qualidade.
Abraços!
Concordo.
Post EXELENTE, como sempre.
Tem uns tutoriais em vídeo e pdf aqui: http://macresearch.org/
muito bom o post!!! Parabéns:)
Sílvio
Parabéns pelo Post. Gostaria de acrescentar que aquele público que utiliza Cluster ou Supercomputadores para buscar um alto poder computacional em simulações matemáticas e aplicações gerais que exigem dias, senão, semanas de processamento, está de olho em soluções que utilizam o poder computacional da GPU para esse fim.
Chama o jurídico Rafael http://www.cstore.me/?p=1444
Sem querer ser chato de novo, mas….
Quem já era usuário Linux podia contar com o XGL há muito tempo, que pode ser considerado o avô da idéia do OpenCL, uma vez que deslocatodo o processamento gráfico do X para a GPU. Tá certo que o padrão para os Linux noob-friendly tipo Ubuntu ainda é o XOrg, mas isso mostra que de novo, tudo o que a Apple fez foi utilizar um modelo de computação advindo do mundo opensource e integrá-lo na sua lógica de negócio, expandido a idéia, e blah, blah, blah, mas ainda sim, não é nem de longe a primeira a usar a GPU para acelerar funcionalidades básicas do sistema.
Também quero colocar, para quem não sabe, que a lenda vigente de que qualquer aplicação vai ser portada easy para a GPU é, como já dito, lenda. Qualquer um que já programou com o CUDA da Nvidia sabe que GPU não foi feita para rodar, por exemplo, o Kernel de um SO, muito mesmo o microkernel hibrido do OSX, do Linux ou o que quer que seja. Assim, os TFlops de processamento infelizmente não servem para rodar o Kernel nem a base do sistema, não tem jeito, e isso não vai mudar tão cedo. É uma lei frequente para quem projeta hardware : "No free lunch to you".
A idéia básica do OpenCL é possibilitar mais uma interface para o desenvolvendor, facilitando a sincronia e offload de tudo o que for função gráfica dentro e fora do Kernel com a GPU, paralelizando isso de forma mais inteligente e com codificação menos pedreira. O mérito para os não gamers é o ganho geral de desempenho, com a demanda gráfica cada vez mais intensa nos dias de hoje para qualquer coisinha que se vá fazer.
[]s
Um, XGL? Não. Foi o picassoGL no BeOS em 1999. Depois veio o Quartz, antes tinha um da Sun que não me lembro o nome, aí sim veio o XGL.
Sim, só que o XGL foi o que mais destacou desses todos, pena que não a ponto de rivalizar em preferência com a porcaria do XOrg. =)
Pô, finalmente alguém falou do CUDA! :) [http://en.wikipedia.org/wiki/CUDA
http://pt.wikipedia.org/wiki/Lei_de_Moore :p
Acho que todos conhecem CUDA de posts anteriores. OpenCL, inclusive, é apoiada pela principal empresa por trás da CUDA, a NVIDIA.
Muito bom post!
quando vão organizar o fã-clube do silvio? XD
[...] Além de proporcionar muito mais desempenho do que é ofertado atualmente pela empresa, a nova arquitetura será muito importante para a sistemas operacionais como o Mac OS X 10.6 Snow Leopard. Bill Dally, chefe científico da NVIDIA, traçou hoje um cenário de forte ligação entre ambos, não apenas para tarefas gráficas comuns, mas também para uso da tecnológicas de computação paralela; no caso, OpenCL. [...]