写点什么

使用 GPU.NET 针对 GPU 编程

  • 2010-12-16
  • 本文字数:1264 字

    阅读完需:约 4 分钟

GPU.NET 是为.NET 开发者提供的、整合在 Visual Studio 2010 中的托管解决方案,它的目标是为 GPU 创建带有增强计算功能的应用程序。

GPU.NET 是为了创建运行在 GPU 上的 HPC.NET 应用程序的托管解决方案。 GPU.NET 为在 Visual Studio 2010 中编写 C#或者 VB.NET 应用程序的开发者提供了智能支持。得到的汇编程序会使用汇编处理器进行预处理,它会向 GPU.NET 运行时中注入引用,从而把汇编程序编译为本地代码,并且管理它在现存 GPU 设备上的运行。 如果没有在系统中找到 GPU 设备,那么程序就会回到 CPU 上运行。 所有 GPU 设备都有设备驱动,因此针对它来编程更合理,这样会比生成 CUDA 或者 OpenGL 的代码更好,因为那还需要用户安装其它的 SDK。

GPU.NET 拥有一个插件的架构,从而支持其它设备,据开发 GPU.NET 的公司 TidePowerd 的 CEO 和共同创始人 Jack Pappas 所说:

我们的运行时对硬件支持使用了插件架构。 在发布的 beta 测试版中,我们只拥有针对具有 nVidia CUDA 能力的硬件的插件,但是我们会与 AMD 协作,创建同样支持他们的硬件的插件(我们会在 beta 测试阶段最后的某个时候提供,但是会在发布 V1.0 之前)。 有了这个基于插件的设计,我们就可以很容易地为现存的基于硬件的加速卡(比方说:IBM Cell,或者给予 FPGA 的卡)添加支持,或者为可用的新硬件(例如:Intel 的“Knight’s Corner”)添加支持。

这种设计对于运行时的另一种重要的意义在于,我们可以让你部署给最终用户的硬件加速代码运行得更快,而只需要对插件做出更新;这样的更新可能会包括缺陷修正、新的设备代码的 JIT 编译器优化,或者对硬件驱动的特定版本中可用的新 API 的支持。 注意到这个更新过程对于开发者和最终用户来说,完全是透明的。

GPU.NET 当前运行在 Windows 上,但是它也会通过 Mono 运行在 Mac 和 Linux 上。 对于 API,Pappas 提到:

使用 GPU.NET 的开发者,需要学习一些 API,然后才能使用这个系统。 其中保留了像 CUDA/OpenCL 的抽象,但是我们已经设计了 API,使其拥有“本地的”.NET 样式和感受,这样,没有 GPU 开发经验的.NET 开发者也可以快速上手,并开始编写拥有 GPU 加速的代码。

例如在 CUDA 中:

int tid = blockDim.x * blockIdx.x + threadIdx.x;

在 C#中,使用 GPU.NET:

int ThreadId = BlockDimension.X * BlockIndex.X + ThreadIndex.X;

我们还没有最终完成会暴露更高等级的功能——像并行要素(与 Thrust 类似)——的 API;在接受一些用户反馈之后,我们会在 beta 测试过程中的某个时候完成它们。

对于许可,Pappas 告诉 InfoQ,GPU.NET 是一个:

商业化的产品,并且按照针对每个开发者的许可来销售;我们还会提供高级的,基于邀请的支持订阅,那是针对有技术问题,或者需要尽快得到缺陷修复的客户。 然而,我们已经开发出一些有用的工具和库,并在构建 GPU.NET 的时候内部使用,我们会在发布 1.0 版本之后的某个时间把它们作为开源项目发布。

他们不打算发布 GPU.NET 的源代码。 当前该产品还处于 Beta 测试阶段,他们计划在本年末或者明年初发布 GPU.NET 1.0。

查看英文原文: Targeting the GPU with GPU.NET

2010-12-16 08:105347
用户头像

发布了 340 篇内容, 共 139.1 次阅读, 收获喜欢 13 次。

关注

评论

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

RabbitMQ-AMQP

云淡风轻

RabbitMQ

宏在C++中的替代解决方案

老王同学

c++ 模板 template

时间管理的本质

史方远

职场 心理 成长

Tomcat学习分享

李印

tomcat

青春期的打油诗

李印

随笔

ARTS打卡Week 01

teoking

android WebRTC

云直播平台的选型与使用

音视频专家-李超

leetcode练级-两数之和

幸福三寸日光

算法 LeetCode js

Spring Security密码登录流程源码分析

读钓

源码分析 spring security springboot

谈谈控制感(9):提升控制感排名第一的武器

史方远

职场 心理 成长

ARTS week1

紫枫

ARTS 打卡计划

Algorithm week 1: Merge Two Sorted Lists

猫吃小怪兽

算法 链表 ARTS 打卡计划

使用 webpack 搭建一个简单的 React 脚手架

张张张小烦

react.js

谈谈我的云笔记使用之路

读钓

学习 个人成长 写作

MySQL实战四十五讲基础篇总结(四)

一个有志气的DB

MySQL 索引结构

MySQL实战四十五讲基础篇总结(五)

一个有志气的DB

MySQL 索引

MySQL实战四十五讲基础篇总结(六)

一个有志气的DB

MySQL 读写锁

《陆蓉行为金融学讲义》 - 读后感

石云升

读书笔记 投资 行为金融学 理性 公平

【万字图文-原创】 | 学会Java中的线程池,这一篇也许就够了!

一枝花算不算浪漫

并发编程 jdk源码 线程池

从引用聊一聊 Java 垃圾回收

Rayjun

Java 引用 对象

关于工作的一点总结

李印

工作思路

编程入门整理

紫枫

读书笔记

Java 数据持久化系列之JDBC

程序员历小冰

Java JDBC 持久化

数据与广告系列二:计算广告和推荐系统

黄崇远@数据虫巢

数据挖掘 大数据 互联网 广告 推荐系统

音视频会议系统-Janus的安装与布署

音视频专家-李超

音视频 WebRTC

ArrayList 源码分析

读钓

Java 源码分析 jdk源码

其实,还是让我挺震惊的,程序员的换行率竟然高达 40%

非著名程序员

程序员 程序人生 自我思考

鄙视链 & 全栈

伯薇

学习 能力提升 全栈

MySQL实战四十五讲基础篇总结(七)

一个有志气的DB

MySQL 性能

k8s 上运行我们的 springboot 服务之——我们的springboot能够在k8s上运行

柠檬

k8s istio springboot

谈即时编译优化-以异常堆栈丢失为例

寻筝

使用GPU.NET针对GPU编程_.NET_Abel Avram_InfoQ精选文章