BT

LINQ na GPU com Brahma

| por Abel Avram , traduzido por Andrew Kurauchi em 06 mai 2010. Tempo estimado de leitura: 1 minuto |

Brahma é uma biblioteca C# open source que oferece suporte a computações paralelas rodando em uma variedade de processadores. Atualmente o Brahma possui um GPU provider, mas a sua estrutura modular permite a utilização de deferentes providers para outros tipos de processadores. Um método C# pode conter comandos rodando tanto na CPU quanto na GPU sem código adicional.

O Brahma realiza computações paralelas transformando comandos LINQ em programas que rodam no processador escolhido. O programa gerado contém comandos HLSL (High Level Shading Language) ou GLSL (OpenGL Shading Language) se a plataforma escolhida foi o DirectX ou o OpenGL, respectivamente. Para aumento de performance, as queries LINQ são compiladas apenas uma vez e usadas muitas vezes conforme a necessidade.

O seguinte código multiplica os valores em um array por 2 em paralelo:

// Cria o computation provider
var computationProvider = new ComputationProvider();

// Cria um data-parallel array e preenche com dados
var data = new DataParallelArray(computationProvider, 
new[] { 0f, 1f, 2f, 3f, 4f, 5f, 6f });

// Compila a query
CompiledQuery query = computationProvider.Compile>
(
d => from value in d
select value * 2f
);

//
Roda a query com os dados
IQueryable result = computationProvider.Run(query, data);

//
Imprime os resultados
foreach (float value in result)
Console.WriteLine(result[i]);

//
Destrói os objetos que criamos
computationProvider.Dispose();
data.Dispose();
result.Dispose();

O código fonte e os binários estão disponíveis sob Eclipse Public License 1.0.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Mantenha-se atualizado com conteúdo cuidadosamente selecionado pelos editores do InfoQ

"Você não sabe o que você não sabe": amplie seus conhecimentos e pontecialize seu desenvolvimento profissional.

BT