使用Brahma在GPU上执行LINQ

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);

// 打印结果

for
each (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

时间: 2024-09-22 06:05:21

使用Brahma在GPU上执行LINQ的相关文章

一起谈.NET技术,使用Brahma在GPU上执行LINQ

Brahma是一个用于并行计算的开源库,它由C#编写并支持在多种处理器上运行.目前,Brahma仅包含一个图形处理器(GPU)模块,但是它的模块化结构可以支持更多种类的处理器.使用Brahma,同一个C#方法中的语句可以同时运行在CPU和GPU上,而不需要额外的代码. Brahma通过将LINQ语句转换成目标处理器代码来执行并行计算,所生成的代码会跟据目标处理器的不同而不同.例如针对DirectX会生成High Level Shading Language,而针对OpenGL则会生成OpenGL

CNNdroid:在 Android 上利用 GPU 加速执行 CNN (卷积神经网络)

摘要 智能设备和可穿戴设备都将受益于深度学习算法(比如CNN)的准确性和可扩展性.然而,性能和能耗等现实的问题使得在移动端设备上这类密集计算的算法变得非常受限.我们开发了CNNdroid这个GPU加速库,可以在Android设备上实现CNN网络的训练.通过实验,CNNdroid在移动设备上实现了60倍速的提升,以及130倍速的节能.CNNdroid这个库已经开源在Github上,可以从Github项目页面下载. 关键词 Deep Learning, Deep Convolutional Neur

回车键调用-这个按Enter调用函数的代码为什么在猎豹上不执行?而且在ie上执行的也不正常

问题描述 这个按Enter调用函数的代码为什么在猎豹上不执行?而且在ie上执行的也不正常 <!DOCTYPE html> Document<br> function leyLogin(){<br> if(event.keyCode==13){<br> document.getElementById("input1").click();<br> }<br> }<br> 解决方案 放chrome上执行试试

在MYSQL结果集上执行计算、

    6.8 其他主题    本节包括几个主题,这些主题不完全适合于本章从client1到client5 的开发中的任一小节的内容:    ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果.    ■ 如何处理很难插入到查询中的数据.    ■ 如何处理图形数据.    ■ 如何获得表结构的信息.    ■ 常见的MySQL程序设计错误及如何避免.    6.8.1在结果集上执行计算    迄今为止,我们集中而主要地使用了结果集元数据来打印行数据,但很明显,除打印之

java ssh linux-java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题

问题描述 java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题 请教高手: 现在要使用java实现ssh登录远程Linux服务器并在该服务器上执行命令,获得执行命令的结果!由于采用的ssh登录方式是使用公钥密钥对的形式,不需要输入密码.所以如果正常的话可以直接执行,能很快得到结果. 但要是不小心出现问题,比如公钥密钥丢失等情况,就会需要输入密码,这时候程序就会一直停留在等待输入密码的那一步,无法继续执行下去. 现在假设发生了后面那种事情(需要输入密码,程序一直停留在等待密码),

求助?无法在System.int32和System.string上执行“like”操作

问题描述 错误提示:无法在System.int32和System.string上执行"like"操作.跟踪也不知道是哪的错误! 解决方案 解决方案二:我也不知道哪错了解决方案三:什么叫like?我没明白.是SQL里的吗?1:SQL里int类型是无法like的,要char系列的才行:2:SQL里string类型的方法是:select*fromtablewheretextFieldLike'%T%';解决方案四:错是在int类型无法用Like来匹配,int的解决办法还不知道但是要是改成va

mysql select delete-求大神解!同样条件SELECT和DELETE在MYSQL上执行发生怪事

问题描述 求大神解!同样条件SELECT和DELETE在MYSQL上执行发生怪事 DELETE FROM TB_VALIDATE_PARAM WHERE UPPER(CONCAT(c_object_id, c_column_code)) NOT IN ( SELECT UPPER(CONCAT(COL.TABLE_NAME, COL.COLUMN_NAME)) FROM information_schema.COLUMNS AS COL WHERE COL.TABLE_SCHEMA = 'jli

如何解决:文件复制-C#实现的IO操作时出现异常 “请求的操作无法在使用用户映射区域打开的文件上执行”

问题描述 C#实现的IO操作时出现异常 "请求的操作无法在使用用户映射区域打开的文件上执行" C#实现的IO操作时出现异常 "请求的操作无法在使用用户映射区域打开的文件上执行",请大神指教! 解决方案 http://blog.itpub.net/29867/viewspace-321913/http://blog.csdn.net/yulongblue/article/details/6306203 #*# jetty->请求的操作无法在使用用户映射区域打开的

strcpy函数在linux上执行异常,在windos执行OK

问题描述 代码如下: char a[5]; char b[5]; printf("point a=%dn",&a); printf("point b=%dn",&b); memset(a,0x00,sizeof(a)); memset(b,0x00,sizeof(b)); char * tmp1="123456789"; char * tmp2="abcde"; strcpy(a,tmp1); strcpy(b