CUDA程序基本优化–以规约算法为例

前言

本文基于CUDA规约算法的实现,通过一步一步优化CUDA规约算法,深入理解CUDA程序的基本优化策略。

一、什么是规约?

我们有N个输入数据,使用一个符合结合律的二元操作符作用其上,最终生成1个结果。这个二元操作符可以是求和、取最大、取最小、平方、逻辑与或等等。
我们以求和为例,假设输入如下:

int array[8] =  [3, 1, 7, 0, 4, 1, 6, 3]

在串行的情况下,算法很容易实现,一般我们会使用下面这样的代码。

int sum = 0;
for (int i = 0; i < N; i++)sum += array[i]

利用以上CPU代码的时间复杂度为O(N),对于大量的数据计算时,这个CPU算法的效率很不理想。下面我们以计算规约求和为例,介绍如何利用CUDA框架编写GPU并行代码,并一步步的优化GPU代码获得更快的计算速度。

二、规约算法基本实现

  • 算法思路
    最直观的规约

CUDA程序基本优化--以规约算法为例相关推荐

  1. NVIDIA CUDA初级教程(P11)CUDA程序基本优化

    文章目录 1.Parallel Reduction并行规约 2.Warp分割 1.Parallel Reduction并行规约 最优性能=有效的数据并行算法+针对GPU架构特性的优化 eg:Paral ...

  2. CUDA程序性能优化 并行归约

    ​​​​​​归约算法 基本思想是,对于一个输入数组执行某种计算,然后产生一个更小的结果数组.当大量的数进行加和运算时,可以利用归约算法,多线程进行求和运算 例如 串行实现需要7步,性能比较差 成对方式 ...

  3. 推荐CUDA程序优化的15个策略

    推荐CUDA程序优化的15个策略 0条评论 2011-07-06 09:48   来源:潇湘学子岳麓生的博客 作者: 潇湘学子岳麓生 编辑: 王玉圆 [IT168 技术]在<CUDA程序优化策略 ...

  4. CUDA程序优化技巧

    CUDA程序优化技巧 2013-11-18 23:41 1469人阅读 评论(4) 收藏 举报 分类: CUDA(24) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 有如下 ...

  5. crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化

    CRC校验又称为循环冗余校验,是数据通讯中常用的一种校验算法.它可以有效的判别出数据在传输过程中是否发生了错误,从而保障了传输的数据可靠性. CRC校验有多种方式,如:CRC8.CRC16.CRC32 ...

  6. CUDA实例系列三:利用GPU优化向量规约问题

    CUDA实例系列三:利用GPU优化向量规约问题 先简单的描述一下题目中说的向量规约问题. 这里举个例子, 比如: 我要求出1+2+3-+100的和 我要求出123-*100的积 我要找到a[100]中 ...

  7. CUDA: 程序优化的15个策略

    在<CUDA程序优化策略>这篇文章中,我们介绍过CUDA优化的常见策略.今天我们会对CUDA优化策略进行详细讲解.具体策略如下: 1. memory coalescing,保证内存融合.因 ...

  8. asp.net程序性能优化的七个方面

    asp.net程序性能优化的七个方面 一.数据库操作 1.用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器 ...

  9. 原来 CPU 为程序性能优化做了这么多

    来自:武培轩 本文主要来学习内存屏障和 CPU 缓存知识,以便于我们去了解 CPU 对程序性能优化做了哪些努力. 首先来看下 CPU 缓存: CPU 缓存 CPU 缓存是为了提高程序运行的性能,CPU ...

最新文章

  1. tcp/ip 协议栈Linux源码分析一 IPv4分片报文重组分析一
  2. 负数在计算机怎样表示与存储
  3. jqueryui的Tooltip使用方法
  4. C# 泛型多种参数类型与多重约束 示例
  5. linux文件读保护,Linux Rootkit实现文件保护
  6. awk 中 {print $1} 什么意思
  7. 360网络自动化运维
  8. android 静态链接,android通过C代码实现动态和静态链接
  9. centos7 mysql 开机启动_mysqld service 随开机启动 (Centos6,Centos7)
  10. 物体运动到一个点停止_教科版五年级上册第四单元运动和力复习要点
  11. 如何提升鸿蒙战绩,蛰伏一年 鸿蒙系统2.0为我们带来了哪些升级?
  12. (三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介
  13. ubuntu下成功配置LAMP 并安装PHPMyadmin
  14. 水文方面数据产品总结1
  15. 20169302 2016-2017-2 《网络攻防实践》课程总结
  16. 状态方程简约为能控能观型
  17. 腾讯互娱面经-游戏客户端开发
  18. linux大业内存,linux 内存占用过大分析
  19. makefile predefined variable $^ $@
  20. python functools.reduce使用_Python的functools.reduce用法

热门文章

  1. java 配置文件中文u_JAVA:Eclipse添加Properties支持国际化(中文变成\uxxx或者\uxxx在eclipse中打开显示中文内容)...
  2. Spark SQL自定义函数_第五章
  3. Stata:三重差分模型简介
  4. java lock wait_java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
  5. mysql性能模块uptime_MySQL性能监控小知识 (转)
  6. 如何寻找jar包资源
  7. python调用扫描仪设备_在Python中使用串行端口从扫描仪读取输入
  8. Java Swing 小项目:模拟时钟/指针时钟 + 数字日期时钟 的实现
  9. 常见的管理学原理法则
  10. 业务流程图怎么画?简单快速的方法教给你