BT
x Por favor preencha a pesquisa do InfoQ !

LINQ na GPU com Brahma

por Abel Avram , traduzido por Andrew Kurauchi em 06 Mai 2010 |

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

Percebemos que você está utilizando um bloqueador de propagandas

Nós entendemos porquê utilizar um bloqueador de propagandas. No entanto, nós precisamos da sua ajuda para manter o InfoQ gratuito. O InfoQ não compartilhará seus dados com nenhum terceiro sem que você autorize. Procuramos trabalhar com anúncios de empresas e produtos que sejam relevantes para nossos leitores. Por favor, considere adicionar o InfoQ como uma exceção no seu bloqueador de propagandas.