QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

Github Action 自动构建 Flutter Android Apk

Leetao

flutter Github Actions

一文带你认识MindSpore新一代分子模拟库SPONGE

华为云开发者联盟

神经网络 mindspore 新一代分子模拟库 SPONGE 分子结构

Flink 实时计算在微博的应用

Apache Flink

flink

多元线性回归模型 - DAY14

Qien Z.

5月日更 多元线性回归

超详细的JQuery的 DOM操作,一篇就足够!

华为云开发者联盟

html 大前端 DOM 函数 JQuery框架

中国与世界共享数字经济机遇

CECBC

数字经济

阿里巴巴P8自爆:Java八大核心思维导图知识梳理

Java架构师迁哥

架构实战营模块4作业

阿体

【数据标注的类型有哪些】看懂这篇文章就够了!

澳鹏Appen

人工智能 机器学习 大数据 数据标注

云智慧发布《智能业务运维》2021年刊 邀您共览数字化运维全景象

云智慧AIOps社区

AIOPS 智能运维

☕【JVM 技术之旅】带你重塑对类加载机制的认识

码界西柚

JVM Java虚拟机 类加载器 原理分析 5月日更

谈一谈Java的前生今世

孙叫兽

Java jdk 发展史

教你用 3 行代码发邮件

小匚

Python 学习 自动化

前端开发:node.js的node包管理器npm安装以及使用

三掌柜

5月日更

为什么很多程序员,成为不了技术大牛?

实力程序员

微服务架构设计之解耦合

Damon

微服务 5月日更

k8s 上运行我们的 springboot 服务之——技术方案实现图

柠檬

k8s SpringBoot 2

Docker挂了,数据如何找回

运维研习社

Docker 运维 数据恢复 5月日更

深度分享|中小银行如何实现数字化转型,建设智能营销新体系?

索信达控股

大数据 数字化转型 金融 银行 营销数字化

Java 基础(一)——Java 入门

空城机

Java 5月日更

☕【JVM 技术之旅】深入挖掘Java对象的内存结构

码界西柚

JVM java对象分析 java对象 5月日更 内存对象结构

【Flutter 专题】121 图解简易 Slider 滑动条

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

解密华为云FusionInsight MRS新特性:一架构三湖

华为云开发者联盟

数据湖 云原生 华为云 FusionInsight MRS TechWave

防火墙

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

一种基于实时分位数计算的系统及方法

百度Geek说

云计算 大前端 云服务

小走神

Nydia

学习

树莓派上的 K8S 集群挂了,怎么办?

百度开发者中心

百度 技术 经验分享

做开发,这几种锁机制你不得不了解一下

华为云开发者联盟

读写锁 自旋锁 互斥锁 优先锁

着力区块链技术等方向,上海这所高校成立研究院

CECBC

《觉醒年代》观后感

xiezhr

觉醒年代 五四运动 南陈北李

Rust从0到1-泛型-定义

rust 泛型 generic

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