武汉的开发者们注意啦!AI技术战略、框架以及最佳实战尽在Azure OpenAI Day 了解详情
写点什么

使用 C#来面向 GPU 编程

  • 2018-01-01
  • 本文字数:846 字

    阅读完需:约 3 分钟

一直以来,我们都在使用 NVIDIA 的 CUDA 平台编写通用程序来发挥 NVIDIA GPU 的计算性能优势。尽管 CUDA 支持不同的编程语言,但是编写高性能的代码通常需要使用 C 或者 C++。许多开发者为了编写面向 GPU 的代码,不得不放弃使用他们更喜欢的编程语言。直到最近,C#开发者终于可以摆脱这种困境了。

Altimesh 推出的新编译工具—— Hybridizer ,通过为 C#开发者提供一种新的编译方法来解决这个问题。它将开发者的源代码编译成面向 GPU 的可以运行在 CUDA 平台上的二进制代码。Hybridizer 分为两个版本,旨在满足不同的需求和预算。Hybridizer Essentials 作为 Visual Studio 的一个扩展,对所有用户免费。它能够生成运行在 CUDA 平台上的二进制代码。Hybridizer Software Suite(HSE)是授权软件,提供面向 CUDA 以及其它平台(包括 AVX、AVX2 和 AX512)的编译功能。该软件套件可以生成二进制代码,但是也可以选择生成 CUDA 源代码,使用户能够审核正在编译的内容。

配合 NVIDIA 的 Nsight Visual Studio Edition ,任何一个 Hybridizer 版本都为开发者提供了在 Visual Studio 中编写和调试 C#代码的方法,同时生成的代码会在 NVIDIA GPU 上执行。由于 HSE 以 MSIL(Microsoft Intermediate Language)来运行,因此它能够与现有的项目集成,即使没有这些项目的源代码。这也为同平台的.NET 平台语言 F#和 VB.NET 提供了间接支持。

由于编写面向 CUDA 平台的 C/C++ 代码的目标之一是使性能达到最大化,因此值得比较下 Hybridizer 编译的 C#代码的性能。据 Altimesh 公布,由 C#编译生成的二进制代码达到了手写的面向 CUDA 的 C++ 代码 83% 的性能。根据实际代码情况,可以进一步优化 C#代码,达到与 C++ 等同的性能。

Hybridizer 软件向那些对 CUDA 和 GPU 编程好奇的 C#开发者提供了一种探索这些技术的方法,而且不需要放弃使用他们自己喜欢的技术。示例代码可以在 GitHub 上获取,Hybridizer Essentials Extension 可以在Visual Studio Marketplace 上获取

查看英文原文: Using C# to Target GPUs

感谢罗远航对本文的审校。

2018-01-01 18:0017171

评论

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

喝了杯咖啡,我突然对MySQL锁、事务、MVCC-有了新的认识!

Java 程序员 后端

四、StringRedisTemplate 和RedisTemlate有什么不同

Java 程序员 后端

企业数字化转型的起手式是什么?

百度大脑

人工智能 百度

网络安全漏洞复现与分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

数据服务基础能力之元数据管理

数据分析 数据 元数据 数据管理 业务数据

Apache Pulsar 在 BIGO 的性能调优实战(下)

Apache Pulsar

分布式 中间件 BIGO Apache Pulsar 消息系统 Apache BookKeeper

如何避免企业在碳排放数据上造假?

石云升

学习笔记 碳中和 碳交易

发量能决定一个程序员的水平吗

Java 程序员 后端

吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?

Java 程序员 后端

活动预告|ArchSummit全球架构师峰会

第四范式开发者社区

可以回答一下:Redis和mysql数据是怎么保持数据一致的嘛?

Java 程序员 后端

史上最全Java面试266题:算法+缓存+TCP+JVM

Java 程序员 后端

原来书中说的JVM默认垃圾回收器是错的!

Java 程序员 后端

双非本科进不了大厂?阿里技术四面+交叉面+HR面,成功拿到offer

Java spring 程序员 mybatis

吐血总结——90%程序员面试都用得上的索引优化手册

Java 程序员 后端

又一巅峰神作!14年工作经验大佬出品“JVM&G1 GC深入学习手册”

Java 程序员 后端

同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载

Java 程序员 后端

哪有什么中年危机,不过是把定目标当成了有计划

Java 程序员 后端

工作五年之后,对技术和业务的思考

程序员 技术 职场 互联网人 业务

双非本科毕业的我,为何能在金九银十期间斩获京东、字节、快手的offer

Java 程序员 后端

【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)

冰河

Java 并发编程 多线程 高并发 异步编程

【Redis源码分析专题】(1)从本质分析你写入Redis中的数据为什么不见了?

洛神灬殇

redis Redis 核心技术与实战 11月日更 缓存驱逐

可以回答一下:Redis和mysql数据是怎么保持数据一致的嘛?(1)

Java 程序员 后端

万文讲解知乎实时数仓架构演进

大数据老哥

因为一次 Kafka 宕机,我明白了 Kafka 高可用原理!

Java 程序员 后端

同事问我如何Java实现,搞定分析栈和队列数据结构的实现过程不就好了

Java 程序员 后端

听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺

Java 程序员 后端

哭了,我居然回答不出来女同事的问题:索引为什么能提供查询性能---

Java 程序员 后端

双非本科七面成功入职阿里面经分享!(附面试原题+复盘笔记)

Java 程序员 后端

同一个Spring-AOP的坑,我一天踩了两次,深坑啊

Java 程序员 后端

同一份数据,Redis为什么要存两次

Java 程序员 后端

使用C#来面向GPU编程_.NET_Jeff Martin_InfoQ精选文章