写点什么

使用 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:0018194

评论

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

【设计模式】第十三篇 - 享元模式 - 连连看的图片共享

Brave

设计模式 享元模式 11月日更

漫谈MVVM(1)ViewModel_DataBinding核心原理(2)

android 程序员 移动开发

深入理解HTTPS协议

android 程序员 移动开发

深入解析Flutter架构

android 程序员 移动开发

深度思考:已经开发8年的你,为何跳槽被多家大厂拒绝?为什么会迷茫Android开发还有什么能学习的

android 程序员 移动开发

灵魂拷问:Android开发初期之后怎么提升?怎么才能叫精通?方向在哪

android 程序员 移动开发

毕业不到一年的Android 开发陷于迷茫,请求前辈指点一二

android 程序员 移动开发

流媒体协议之WebRTC实现p2p视频通话(二)

android 程序员 移动开发

漫谈MVVM(1)ViewModel_DataBinding核心原理(1)

android 程序员 移动开发

深入Android系统Binder-1-导读与简介(1)

android 程序员 移动开发

原来一个 Map 就能搞定注册表了

悟空聊架构

Eureka 源码剖析 注册中心 悟空聊架构 11月日更

渣渣二本的辛酸面试之路:从深圳外包到杭州蚂蚁金服,4年小Android的爬坑历程

android 程序员 移动开发

温故而知新:重新认识Activity的生命周期

android 程序员 移动开发

牛掰!阿里P7大佬爆肝半个月,把安卓源码解析编成了508页的PDF

android 程序员 移动开发

深入Android系统Binder-1-导读与简介

android 程序员 移动开发

深入理解JobScheduler与JobService的使用

android 程序员 移动开发

深度探索 Gradle 自动化构建技术(四、自定义 Gradle 插件)

android 程序员 移动开发

EMQ 获评“最具潜力边缘计算企业”,推动边缘计算生态发展

EMQ映云科技

物联网 IoT mqtt

深度探索 Gradle 自动化构建技术(二、Groovy 筑基篇)

android 程序员 移动开发

混合开发框架最全对比,为什么我更推荐Flutter?

android 程序员 移动开发

源码解析,Glide加载GIF图的原理竟然这么简单

android 程序员 移动开发

深入学习-Gradle-自动化构建技术(二)Groovy-筑基

android 程序员 移动开发

漫谈MVVM(1)ViewModel_DataBinding核心原理

android 程序员 移动开发

玩转AppBarLayout,更酷炫的顶部栏

android 程序员 移动开发

求面试别再问我HashMap原理了——史上最全源码解读,别再说你不知道HashMap 原理

android 程序员 移动开发

滴滴国际化项目 Android 端演进

android 程序员 移动开发

玩转AppBarLayout,更酷炫的顶部栏(1)

android 程序员 移动开发

炸裂!一次Android实习经历告诉你:老爸不是张一鸣,该用什么技巧进字节

android 程序员 移动开发

搞懂钩子方法和模板方法,看完这篇就够了

Tom弹架构

Java 架构 设计模式

深入浅出协程、线程和并发问题

android 程序员 移动开发

炒冷饭之Https 建立链接

android 程序员 移动开发

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