|
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();
NET技術:使用Brahma在GPU上執行LINQ,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。