BT

Especificação do C++ AMP da Microsoft: buscando diminuir barreiras ao paralelismo de dados

por Jeff Martin , traduzido por Reinaldo Braga em 14 Fev 2012 |

O lançamento da especificação (PDF em inglês) do C++ AMP, ou Paralelismo Maciço Acelerado na sigla em inglês, coincide com o evento GoingNative 2012 da empresa. O C++ AMP é descrito como "um modelo de programação que permite a aceleração de código C++, em hardware com paralelismo de dados". O exemplo mais comum deste tipo de hardware seria a GPU (unidade de processamento gráfico) de uma placa gráfica separada, além da capacidade de usar CPUs com vários núcleos e tecnologia SSE como alternativa.

A Microsoft afirma que o modelo de programação C++ AMP:

Traz controle explícito sobre: copiar dados entre a CPU e o acelerador, e os cálculos realizados na GPU. Pode-se gerenciar explicitamente toda a comunicação entre a CPU e o acelerador, e essa comunicação pode ser síncrona ou assíncrona. As operações executadas no acelerador são representadas por arrays multidimensionais, funções de alto-nível para manipulação de matrizes, operações de indexação multidimensional e outras abstrações de alto nível, tudo isso toma como base um grande subconjunto da linguagem de programação C++. O modelo de programação contém múltiplas camadas, de modo que se possa balancear o custo/benefício entre facilidade de uso e máximo desempenho.

A implementação da Microsoft pode ser usada em qualquer sistema rodando DirectX 11; se o DirectX não estiver instalado, uma implementação não-C++ seria executada. A Microsoft não pretende que o C++ AMP seja somente para Windows, uma vez que "apoia e incentiva qualquer pessoa a implementar a especificação do C++ AMP em qualquer plataforma" (veja o original). Até agora, o projeto recebeu contribuições da Nvidia e da AMD. Para incentivar outras implementações, a Microsoft lançou a toda especificação do C++ AMP sob os termos da Microsoft Community Promise.

A interoperabilidade entre o C++ AMP e o Direct 3D é suportada na implementação da Microsoft, mas não é exigida pela especificação. A interoperabilidade com OpenGL não é suportada, e uma recente postagem pelo desenvolvedor Daniel Moth indica que esta implementação não está próxima, pois, segundo ele, ninguém da equipe do projeto tem experiência com OpenGL.

Os desenvolvedores que desejam experimentar o novo modelo de programação C++ AMP podem fazer o download do Visual Studio Developer Preview 11 e analisar o código de exemplo apresentado por esta entrada do blog MSDN. (Este código também inclui exemplos de como os desenvolvedores .NET podem utilizar o C++ AMP a partir do C#.)

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT