写点什么

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

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

关注

评论

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

Promise 异步流程控制

编程江湖

【等保小知识】等保二级是否需要做密评?什么是密评?

行云管家

网络安全 等级保护 等保2.0 等保二级

飞瓜数据发布2021年抖音短视频直播营销报告(年度版)

极客天地

第三节:SpringBoot中web项目推荐目录结构

入门小站

springboot java 编程

从零开发区块链应用(五)--golang网络请求

杰哥的技术杂货铺

golang 区块链 HTTP post GET

Spock框架Mock静态资源经验汇总

FunTester

Mockito powermock Mock spock FunTester

java开发之SpringBoot+flowable实现工作流

@零度

Java springboot

尚硅谷JavaWeb新版视频教程发布

@零度

javaWeb

中间件头部厂商加入,龙蜥社区携手东方通共创开源新生态

OpenAnolis小助手

Linux 开源

等保2.0基本要求是什么?跟等保1.0一样吗?

行云管家

网络安全 等保 等级保护 等保2.0

前端开发之React调度算法的迭代过程

@零度

前端开发 React

火山引擎边缘计算节点通过 EC Ready 边缘云首批评测

火山引擎边缘云

云原生 边缘计算 测评

Flume简介和架构安装配置详解

编程江湖

干掉大小流切换 I 帧!阿里云 RTC QoS 及视频编码联合优化之切流编码

阿里云CloudImagine

阿里云 WebRTC 直播 RTC 视频编码

面对 Log4j2 漏洞,安全人都做了什么?

华为云开发者联盟

Java 漏洞 Apache Log4j2 Log4j2 漏洞 漏洞防护

BigDecimal 被拼多多的"砍一刀"应用到了极致

恒生LIGHT云社区

Java 拼多多 Java中精确小数计算

一个BPMN流程示例带你认识项目中流程的生命周期

华为云开发者联盟

工作流 项目 BPM BPMN Activiti框架

使用 electron-builder 打包 Electron 程序

编程三昧

Electron electron实战 1月月更

深入剖析 HDFS 3.x 新特性-纠删码

五分钟学大数据

hdfs 1月月更

开源实践 | OceanBase 在红象云腾大数据场景下的实践与思考

OceanBase 数据库

OceanBase 开源 客户案例 开源实践

SSH 端口转发与 SOCKS 代理

CRMEB

提效赋能:当企业在谈论数字化时,我们在谈论什么?

优秀

管理工具

Hive底层 explain 执行计划详解

五分钟学大数据

hive 1月月更

大数据开发之Flink sql 的基础用法

@零度

flink sql 大数据开发

AI 收藏夹 Vol.004:Waifu Lab 火了,AI 是如何创作的?

Zilliz

Java Spring Beans.xml里的Bean定义是如何被解析出来的

汪子熙

Java Spring Boot Spring Java 1月月更

科技为驱,创新为翼——鲸鲮科技喜获“2021北京软件核心竞争力企业”评价

鲸鲮JingOS

操作系统 创新 信创 信息化 科技企业

Redis持久化RDB和AOF区别

编程江湖

redis'

引领中国分布式数据库企业技术创新力,平凯星辰获得赛迪顾问报告推荐

PingCAP

译文|借助 Pulsar Functions 迁移到无服务应用程序

Apache Pulsar

Java 开源 架构 云原生 Apache Pulsar

不会使用Spring的配置文件,赶紧把这个甩给他

华为云开发者联盟

Java spring API bean 配置文件

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