• streaming workload是每个元素可被独立地计算的任务,是可移植到CUDA中的最简单的负载。
  • 这类低计算密度的负载属于bandwidth-bound
  • 他无须用太多的GPU硬件资源,
    • 例如用于优化数据重用的高速缓存和共享存储器等。

G对高计算密度负载有大效,将讨论几种情形,助于流式负载移植到G

  • 若输入和输出均在设备内存上,让数据传回CPU却仅执行一次计算是不好的。
  • 若G比C更好的指令级支持(频繁用特殊功能单位指令的B-S期权任务),尽管有额外的内存传输开销,G仍可超C
  • G操作与C并发执行可增一倍性能(即使假设它们速度同)
  • 对给定负载,CUDA代码相对于高度优化的CPU代码会可读可维护。
  • 对包含集成显卡的系统(CPU与支持CUDA的GPU共存同芯片,并作用同一内存),无传输开销。
    • CUDA技术可用“零复制”方法,避免复制操作。

本章涵盖流式负载的方方面面。

  • 对同一负载,用不同实现策略,暴露可能出现的多个问题。
  • 这里关注的负载是来自BLAS库的 SAXPY操作。
    • 在一个操作中同时执行一个标量乘法和矢量加法。

清单11-1 SAXPY的C程序。

  • 由于GPU包含原生乘加指令, SAXPY的最内层循环在每次内存访问时,仅包含较少的指令数。

11 流失负载

清单11-2 SAXPY的CUDA

  • 此版本可运行于任何网格或各种大小的线程块,且其执行性能能满足大多数应用的需要。
  • 这个内核严重受制于带宽,对多数程序而言,与其在它的基础上进行优化,不如重构该程序以增加计算密度。
    11 流失负载

本章旨在于讨论如何将数据高效地传入和传出主机内存。

  • 先要研究如何从操作设备内存的角度改善这个内核的性能。

11.1设备内存

  • 若输人和输出数据都在设备内存上,优化如 SAXPY这样低计算密度的任务就变成了优化全局内存访问的问题。
  • 除了对齐和合并读取约束外,CUDA内核的性能也对线程块数目
    和每块的线程数目比较敏感。
    globalread、 global Write、 globalcopy和g! lobalcopy2应用程序

here!!!

相关文章:

  • 2021-12-13
  • 2021-05-17
  • 2021-04-20
  • 2021-06-21
  • 2022-01-27
  • 2022-12-23
  • 2021-12-04
  • 2021-10-16
猜你喜欢
  • 2022-02-09
  • 2021-09-03
  • 2022-12-23
  • 2021-06-26
  • 2021-05-26
  • 2022-12-23
  • 2021-10-31
相关资源
相似解决方案