写点什么

使用 Brahma 在 GPU 上执行 LINQ

  • 2010-05-18
  • 本文字数:690 字

    阅读完需:约 2 分钟

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<float>(computationProvider, <br></br> new[] { 0f, 1f, 2f, 3f, 4f, 5f, 6f });<p>// 编译 LINQ 查询 </p><br></br>CompiledQuery query = computationProvider.Compile<dataparallelarray><float>><br></br>(<br></br> d => from value in d<br></br> select value * 2f<br></br>);<p>// 在数据上执行查询 </p><br></br>IQueryable result = computationProvider.Run(query, data);<p>// 打印结果 </p><br></br>foreach (float value in result)<br></br> Console.WriteLine(result[i]);<p>// 释放资源 </p><br></br>computationProvider.Dispose();<br></br>data.Dispose();<br></br>result.Dispose();</float></dataparallelarray></float>

Brahma 的源代码二进制文件遵循 Eclipse Public License 1.0

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

2010-05-18 00:392825
用户头像

发布了 63 篇内容, 共 27.8 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

Who is Mavenir?

俞凡

Mavenir

灯塔之上:vivo X70背后的影像进化史

脑极体

什么?语音合成开源代码不会跑,Follow me!

华为云开发者联盟

tensorflow 语音合成 Tacotron2 DeepMind 深度神经网络模型

狄刚谈区块链:技术上去中心化并不等于管理去中心化

CECBC

NDK-AAudio

Changing Lin

9月日更

【墨天轮专访第四期】华为云GaussDB:发挥生态优势,培养应用型DBA

华为云数据库小助手

GaussDB 交流 华为云数据库 人物访谈

redis主从实践(一)

风翱

redis 9月日更

Python——函数正确调用

在即

9月日更

【网络安全】Spring框架漏洞总结(二)

网络安全学海

黑客 网络安全 信息安全 WEB安全 漏洞挖掘

翻转未来!钢铁之城重添色彩

白洞计划

Vite + Vue3 + OpenLayers

德育处主任

大前端 地图 vite Vue3 openlayers

人才缺口超70万,15所高校新设区块链专业

CECBC

14 种编程语言书写关机脚本,真香

梦想橡皮擦

9月日更

【Flutter 专题】50 图解动画小插曲之 Lottie 动画

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

这可能是最细的HashMap详解了!

程序员阿杜

Java JVM ArrayList

通过编程训练题来讲讲链表操作

Regan Yue

算法 链表 9月日更

将JSON中对于集合的数据,如何解析成对象集合

卢卡多多

集合 Stream<T> 9月日更

全方位解读服务网格(Service Mesh)的背景和概念

xcbeyond

Service Mesh 服务网格 引航计划

RocksDB原理及应用

hanaper

北鲲云SaaS平台让生物医学关键环节不再靠“猜”

北鲲云

5 个网站将您的前端技能从 1 倍提升到 100 倍

云原生

学习 大前端 全栈

详解css中清除浮动的四种方式,float浮动怎么用更为合理

你好bk

最佳实践 方法论 大前端 html/css 语言 & 开发

【优化技术专题】「线程间的高性能消息框架」深入浅出Disruptor的使用和原理

码界西柚

Disruptor LinkedBlockingQueue ArrayBlockingQueue 9月日更

阿里巴巴开源数据库--OceanBase从使用聊到架构剖析

hanaper

Python代码阅读(第27篇):将变量名转换成驼峰形式

Felix

Python 编程 Code Programing 阅读代码

redis--zset解析

en

redis Zset 引航计划

【VueRouter 源码学习】第九篇 - router-view 组件的实现

Brave

源码 vue-router 9月日更

模块七作业

seawolflin

架构实战营

号外!号外!极客时间出插件了😎

IT蜗壳-Tango

极客时间 9月日更 浏览器插件

深入理解rtmp(三)之手把手实现握手协议

轻口味

音视频 RTMP 9月日更

这可能是最细的ArrayList详解了!

程序员阿杜

Java ArrayList

使用Brahma在GPU上执行LINQ_.NET_Abel Avram_InfoQ精选文章