Postado por
Abel Avram
, traduzido por
Andrew Kurauchi
em
06 Mai 2010
- Arquitetura e Design,
- Desenvolvimento
- Tópicos
-
.NET
,
-
Programação
,
-
LINQ
,
-
Programação Paralela
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.
Nenhum comentário
Acompanhar Discussão Responder