BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias LINQ na GPU com Brahma

LINQ na GPU com Brahma

Favoritos

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

Conteúdo educacional

BT