写点什么

使用 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:392367
用户头像

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

关注

评论

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

缓存系统设计与实现

hasWhere

架构训练营-模块八作业

hello

架构训练营

写给互联网工程师的5G书 | 7. 云化接入网

俞凡

架构 5G 网络 通信

PDF超过6000页,2021最新Java面试题及答案

Java 程序员 后端

过滤器、拦截器、监听器

hasWhere

TCP/IP参考模型与标准协议

Regan Yue

TCP/IP 9月日更

架构训练营模块八作业

喻高咏        

架构训练营

【LeetCode】最后一个单词的长度Java题解

Albert

算法 LeetCode 9月日更

Nginx如何支持HTTPS,大厂Java高级多套面试专题整理集合

Java 程序员 后端

《转》搭建websocket消息推送服务

hasWhere

Vue进阶(幺贰肆):前端用户体验提升(一)

No Silver Bullet

用户体验 9月日更

模块四作业

Geek_fc100d

「架构实战营」

模块八作业

SAKIN

Java面试必刷的200道真题,深挖底层原理、啃源码,最终上岸

Java 程序员 后端

nginx路径匹配踩坑

hasWhere

SpringMVC源码分析-HandlerAdapter(2)-RequestMappingHandlerAdapter的初始化

Brave

源码 springmvc 9月日更

JVM启动参数学习笔记三

风翱

JVM 9月日更

架构实战营模块八作业

技术是伙伴

架构实战营

中秋晴朗夜,我们与星月相见

白洞计划

Elasticsearch 源码学习(1)源码编译调试

Se7en

高可用延迟队列设计与实现

万俊峰Kevin

微服务 延迟队列 microservice Go 语言 定时队列

技术圈的【多肉小达人】,一篇文章你就能做到

梦想橡皮擦

9月日更

RabbitMQ的高级特性和消息补偿机制,字节跳动面试真题

Java 程序员 后端

架构设计的一些思考

hasWhere

P8级别的顶级“并发编程”宝典,面试完腾讯我才发现这些知识点竟然没掌握全

Java 程序员 后端

古董系统的并发安全改造

hasWhere

端口连接出现大量FIN_WAIT1/CLOSE_WAIT

hasWhere

P8级别的顶级“并发编程”宝典,linux基础入门知识

Java 程序员 后端

产品分析:如何给出解决方案?

石云升

产品经理 产品思维 9月日更

写给互联网工程师的5G书 | 6. 参考实现

俞凡

架构 5G 网络 通信

Vue进阶(幺贰叁):v-for 实现一行展示 n 个元素

No Silver Bullet

Vue 9月日更

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