【异构计算平台系列 - GPU + OpenCL - 03】常用的并行计算编程语言

CUDA

CUDA(Compute Unified Device Architecture)是由NVIDIA推出的通用并行计算架构,提供了直接访问GPU虚拟指令集和并行计算单元的软件层。

它可以配合使用C、C++和Fortran等高级编程语言进行GPU应用程序的开发,并且兼容多种操作系统。

CUDA仅可以应用于NVIDIA的GPU硬件平台。

CUDA SDK包含针对NVIDIA GPU的编译器,数学库和调试优化工具。

CUDA的处理流程如下:

  • 从主存储器中拷贝数据到GPU的存储空间。
  • CPU发送控制指令指挥GUP运作。
  • GPU的各个核开始并行运算。
  • 从GUP存储空间拷贝运算结果到主存储器。

OpenCL

OpenCL(Open Computing Language,开放计算语言)是面向由CPU、GPU和其它处理器(如DSPs、FPGAs、ASICs)组合构成的计算机进行编程的行业标准框架。

OpenCL是由用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成,提供了基于任务分区和数据分区的并行计算机制。

详细内容请参见“【20小时系列 - 学会OpenCL - 01】初识OpenCL    https://blog.csdn.net/jiangsgyx/article/details/83368900 ”

C++ AMP

C++ AMP(C++ Accelerated Massive Parallelism)可用于加速C++代码的执行,其原理是通过利用数据并行硬件(通常表示为离散图像卡上的图像处理单元 GPU)提升代码运行速度。

C++ AMP编程模型包括对多维数组、索引,内存传输和平铺的支持。

它还包括数学函数库,并且可以扩展控制数据在CPU和GPU之间相互移动。

C++ AMP是微软的开放技术规范,采用类似于STL库的模式,被包含在Visual Studio 2012中,用于增加GPU开发的便利性。

环境需求:

  • Windows 7 操作系统及以上
  • 使用SIMD指令集的多核CPU
  • 具有DirectX 11驱动的GPU

应用实例:

二维数组的相加运算 (“#include <amp.h>”),代码如下所示。

通过使用Visual Studio和标准C++语法,便可以开发能够在任何使能DirectX 11的硬件上运行的功能库。

注:

1)STL:Standard Template Library,标准模板库,是一个C++标准功能库,可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分,目的在于提供标准化组件。 

2)SIMD:Single instruction multiple data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。

3)DirectX:Microsoft DirectX是由微软创建的多媒体编程接口,由C++编程语言实现,遵循COM组件规范。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值