OpenCL/DirectX与CUDA,鱼和熊掌可以兼得?

OpenCL/DirectX CUDA ,鱼和熊掌可以兼得?

什么是 OpenCL

OpenCL Open Computing Language )是一个为异构平台( CPU GPU 或其他类型的处理器组成)编写程序的框架。 OpenCL 提供了基于任务 / 数据分割的并行计算机制,程序员通过使用它的 API 来定义和控制。

什么是 DirectX

DirectX 是微软定义的多媒体编程 API 。它遵循 COM 标准,包含 DirectGraphic Direct3D DirectDraw 等)、 DirectPlay DirectSound DirectInput DirectSetup DirectMusic 等部分。

什么是 CUDA

CUDA Compute Unified Device Architecture )是 NIVIDA 推出的并行计算架构。它主要包含一个 ISA (指令集架构)和一个并行计算的硬件引擎,适用于 NVIDIA GeForce8 及以后系列的显卡。

OpenCL/DirectX CUDA 之关系

1 展示了 OpenCL/DirectX CUDA 之间的关系。理解这种关系,对于程序员是非常有意义的。它能够根据程序员自身情况,合理选择开发语言及其相关的 API


1 OpenCL/DirectX CUDA 关系图

比较

-         软硬件架构不同。 CUDA NVIDIA GPU 的硬件架构。它主要包含 ISA 指令集架构和并行计算硬件引擎,而 OpenCL DirectX CUDA C 等都是软件架构,这是根本不同。

-         OpenCL 是并行计算 API 。它通过 GPU 驱动与其通信,使用 PTX 等实现复杂的高效并行计算。

-         DirectX Compute Shader API 的实现原理与 OpenCL 一致,其他部分可以类比 OpenGL OpenAL

-         CUDA C 是高级语言( C 语言的 CUDA 扩充),而 OpenCL/DirectX 是针对硬件的应用层序开发接口,两者完全不同。 CUDA C 不仅能够使用 OpenCL/DirectX 实现高效并行计算,而且也能够直接使用 GPU 驱动来完成相应功能。

-         OpenCL/DirectX CUDA C 的定位不同。 CUDA C 能够使对硬件不了解的非专业人士轻松上手,而 OpenCL/DirectX 则要求程序员有更多的 GPU 相关知识。此外,相比于 CUDA C OpenCL/DirectX 对硬件有更多的控制权。

小结

CUDA 仅仅使用于 NVIDIA Geforce8 及其以后的显卡。对于并行计算而言,如果需要跨越硬件和操作系统的限制, OpenCL 是无二选择;如果程序只运行在 Windows 操作系统之上,并考虑支持其他显卡(比如 ATI ),那么 DirectX 可能是首选(类似于 OpenGL DirectX 之间的关系);如果 Windows 操作系统上仅仅使用 NVIDIA 显卡,那么无疑 CUDA C 等语言是快速、高效开发的首选,使程序员能够集中精力处理业务相关事项而不必考虑繁琐的诸如显存释放等细节。总之, OpenCL/DirectX CUDA 之间没有根本冲突,鱼和熊掌可以兼得。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值