转载自:http://blog.sina.com.cn/s/blog_a43b3cf2010157ph.html

编写利用GPU加速的并行程序有多种方法,归纳起来有三种:

1.      利用现有的GPU函数库。

Nvidia 的CUDA工具箱中提高了免费的GPU加速的快速傅里叶变换(FFT)、基本线性代数子程序(BLAST)、图像与视频处理库(NPP)。用户只要把源代码中CPU版本的快速傅里叶变换、快速傅里叶变换和图像与视频处理库替换成相应的GPU版,即可得到性能加速。除了Nvidia提供的函数库以外,第三方的GPU函数库有:

2.      CUDA 编程。

这是最普遍、最适用的方法,使用CUDA可以最大限度地发挥GPU的加速性能。

3.      指令(Directive)编程。

基于的OpenACC标准,GPU Directive编程是加快科学或工业的代码容易的、行之有效的方法。使用GPU指令,简单地在你的源码中插入编译指令,编译器会自动把计算密集型代码部分映射到到GPU的中去计算,从而加速你的代码。下面是一个简单的用一条指令如何可以加快计算圆周率的例子。使用GPU指令,你可以很快上手,并在当天看到的结果。

OpenACC编程的优点:

l 简单:只要在你的代码中插入编译提示

l 开放:单个代码库既可以在CPU又可以在GPU上运行

l 功能强大:只需几小时就可以发挥GPU的强大

并行计算工具的领导者PGI、CAPS和Cray将率先支持OpenACC。

【并行计算-CUDA开发】GPU并行编程方法的更多相关文章

  1. 【并行计算-CUDA开发】浅谈GPU并行计算新趋势

    随着GPU的可编程性不断增强,GPU的应用能力已经远远超出了图形渲染任务,利用GPU完成通用计算的研究逐渐活跃起来,将GPU用于图形渲染以外领域的计算成为GPGPU(General Purpose c ...

  2. 三 GPU 并行编程的运算架构

    前言 GPU 是如何实现并行的?它实现的方式较之 CPU 的多线程又有什么分别?本文将做一个较为细致的分析. GPU 并行计算架构 GPU 并行编程的核心在于线程,一个线程就是程序中的一个单一指令流, ...

  3. 第三篇:GPU 并行编程的运算架构

    前言 GPU 是如何实现并行的?它实现的方式较之 CPU 的多线程又有什么分别? 本文将做一个较为细致的分析. GPU 并行计算架构 GPU 并行编程的核心在于线程,一个线程就是程序中的一个单一指令流 ...

  4. 五 浅谈CPU 并行编程和 GPU 并行编程的区别

    前言 CPU 的并行编程技术,也是高性能计算中的热点,也是今后要努力学习的方向.那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为将来深入学习 CPU 并行编程技术打下铺 ...

  5. 第五篇:浅谈CPU 并行编程和 GPU 并行编程的区别

    前言 CPU 的并行编程技术,也是高性能计算中的热点,也是今后要努力学习的方向.那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为将来深入学习 CPU 并行编程技术打下铺 ...

  6. 【并行计算-CUDA开发】GPU 的硬体架构

    GPU 的硬体架构   这里我们会简单介绍,NVIDIA 目前支援CUDA 的GPU,其在执行CUDA 程式的部份(基本上就是其shader 单元)的架构.这里的资料是综合NVIDIA 所公布的资讯, ...

  7. 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构

    多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零开始做OpenCL开发>系列文章的 ...

  8. 四 GPU 并行编程的存储系统架构

    前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ...

  9. 第四篇:GPU 并行编程的存储系统架构

    前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ...

随机推荐

  1. cmds挖掘redolog

      select member from v$logfile;   exec dbms_logmnr.add_logfile(logfilename=>'+CMDSDG/cmds/onlinel ...

  2. AppDomain.Unload_MarshalByRefObject

    internal string GetClassInfo(string assemblyName, string className, string strField) { string ret = ...

  3. springboot集成mail实现邮件服务

    1,新建mailconfig类,对邮件服务固定配置进行实体封装: import java.util.Properties; import org.springframework.beans.facto ...

  4. [nodemon] app crashed - waiting for file changes before starting...

    慕课网前端工程师晋升课程 Vue全家桶+SSR+Koa2全栈开发美团网 视频里用 npx create-nuxt-app mt-app创建项目后,不能使用import ...from....跟着老师修 ...

  5. ssh配置连接远程主机 彻底解放你的双手

    查看ssh支持配置 man ssh_config 打开ssh并配置 vi ~/.ssh/config 基本配置示例说明 密钥文件连接 Host <别名> Port <机器端口号> ...

  6. on bind live delegate的区别

    bind()----直接绑定在元素上 live()----通过冒泡的方式绑定到元素上,更适合于列表类型的绑定,和bind()相比,支持动态数据 delegate()----精确的小范围的适用事件代理, ...

  7. 【DP】【期望】$P1850$换教室

    链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在 ...

  8. ubuntu下Java通过JNI调用C

    下面看一个实例,如下: public class TestJNI { static { System.loadLibrary("diaoyong"); // 程序在加载时,自动加载 ...

  9. 【Gamma】Scrum Meeting 1 & 与助教谈话

    前言 Gamma阶段第1次会议在5月26日22:00由PM在大运村一公寓三层召开, 时长30min. 任务分配 姓名 今日任务 明日任务 困难 周博闻 用户控制器解耦和注释 用户控制器解耦和注释 周国 ...

  10. DICOM worklist工作原理

    一.关于Worklist 在RIS与PACS的系统集成中.Wordlist的连接为其主要工作之一.Wordlist成像设备工作列表,它是DICOM协议中众多服务类别中的一个.它的功能是实现设备操作台与 ...