使用Brahma在GPU上執行LINQ

來源: InfoQ  發布時間: 2010-05-18 14:40  閱讀: 1339 次  推薦: 0   原文鏈接   [收藏]  

Brahma是一個用于并行計算的開源庫,它由C#編寫并支持在多種處理器上運行。目前,Brahma僅包含一個圖形處理器(GPU)模塊,但是它的模塊化結構可以支持更多種類的處理器。使用Brahma,同一個C#方法中的語句可以同時運行在CPU和GPU上,而不需要額外的代碼。

Brahma通過將LINQ語句轉換成目標處理器代碼來執行并行計算,所生成的代碼會跟據目標處理器的不同而不同。例如針對DirectX會生成High Level Shading Language,而針對OpenGL則會生成OpenGL Shading Language。為了提高性能,LINQ查詢僅被編譯一次,然后根據需要多次運行

下面的代碼會并行地將一個數組的元素都乘以2:

 
 
// 創建計算對象
var computationProvider = new ComputationProvider();

// 創建并行數組,并填充數據
var data = new DataParallelArray(computationProvider,
new
[] { 0f, 1f, 2f, 3f, 4f, 5f, 6f });

// 編譯LINQ查詢
CompiledQuery query
= computationProvider.Compile>
(
d
=> from value in d
select value * 2f
);


// 在數據上執行查詢
IQueryable result
= computationProvider.Run(query, data);

// 打印結果
foreach (
float value in result)
Console.WriteLine(result
[i]);

// 釋放資源
computationProvider.Dispose();
data.Dispose();
result.Dispose();

Brahma的源代碼二進制文件遵循Eclipse Public License 1.0

查看英文原文:LINQ on GPU with Brahma

0
0
 
標簽:LINQ
 
 

文章列表

全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()