BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Brahma在GPU上执行LINQ

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2010年5月19日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不错 by Wei Fisher

优化的成熟么?有没有测试报告公布出来?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT