cuda流

  1. 流分为两种类型:1)隐式声明流(空流),2)显式声明流(非空流)
  2. cudaError_t cudaMemcpyAsync(void* dst,const void* src, size_t count,cudaMemcpyKind kind,cudaStream_t stream = 0);异步拷贝版本
  3. cudaError_t cudaStreamCreate(cudaStream_t* pStream);创建可以显式管理的非空流,返回到pStream中的流就可以被当做流参数供cudaMemcpyAsync和其他异步的CUDA的api使用
  4. 当异步传输数据时,必须使用固定(非分页的)主机内存,使用cudaMallocHost函数或者cudaHOstAlloc函数
  5. 在非默认流中启动内核,必须在内核执行配置中提供一个流标志符作为第四个参数:kernel_name<<<grid,block,shareMemSize, stream>>>(argument list);
  6. 使用cudaError_t cudaStreamDesytroy(cudaStream_t stream);当流中仍然有未完成的工作,cudaStreamDestroy函数会立即返回,当流中的工作都已经完成时,与流相关的资源将被自动释放
  7. CUDA的api提供两个函数检查流中所有操作是否已经完成:
cudaError_t cudaStreamSynchronize(cudaStream_t stream);//强制阻塞主机,直到流中所有的操作都完成了
cudaError_t cudaStreamQuery(cudaStream_t stream);//不会阻塞,当所有操作完成时,返回`cudaSuccess`,否则返回`cudaErrorNotReady`

Hyper-Q

  1. 允许多个CPU线程或进程在单一的GPU上同时启动工作
  2. cudaError_t cudaStreamCreateWithPriority(cudaStream_t* pStream, unsigned int flags, int priority);设定流的优先级
  3. cudaError_t cudaDeviceGetStreamPriorityRange(int *leastPriority, int *greatestPriority);返回值存放在leastPrioritygreatestPriority中,如果设备不支持优先级,则返回0

cuda事件

  1. 事件声明:cudaEvent_t event;
  2. cudaError_t cudaEventCreate(cudaEvent_t* event);创建一个事件
  3. cudaError_t cudaEventDestroy(cudaEvent_t event);销毁事件
  4. cudaError_t cudaEventRecord(cudaEvent_t event,cudaStream_t stream = 0);事件在流执行中标记了一个点
  5. cudaError_t cudaEventSynchronize(cudaEvent_t event);等待或测试在指定流中闲钱操作的完成情况,等待一个事件会阻塞主机线程的调用,类似于cudaStreamSynchronize,但是其允许主机等待流执行的中间点.
  6. cudaError_t cudaEventQuery(cudaEvent_t event);测试一个事件是否可以不用阻塞主机应用程序来完成
  7. cudaError_t cudaEventElapsedTime(float* ms, cudaEvent_t start, cudaEvent_t stop);计算被两个事件标记的CUDA操作的运行时间

流回调

CUDA C编程权威指南 第六章 流和并发相关推荐

  1. CUDA C编程权威指南 第五章 共享内存和常量内存

    共享内存是较小的片上内存,具有较低的延迟(相比全局,低20~30倍),提供更高的带宽(相比全局,10倍) block通信 用于全局内存数据的缓存 __shared__来申请共享变量,如果共享内存大小在 ...

  2. CUDA C编程权威指南 第四章 全局内存

    基础 一般内存的设计:寄存器->缓存->主存->磁盘存储器 GPU内存设计 修饰符 变量名 存储器 作用域 生命周期 float var 寄存器 线程 线程 float var[10 ...

  3. CUDA C编程权威指南 第七章 调整指令级原语

    将程序分为两类:IO密集型和计算密集型 double value = in1 * in2 + in3 乘法后紧跟加法的模式被称为乘加法,或者MAD 简单的编译器会将一个MAD指令转换为:一个乘法指令和 ...

  4. CUDA C编程权威指南 第三章 CUDA执行模型

    基础 每个GPU有多个SM(streaming multiprocessor) 当启动一个grid时,它的block会被分配给多个SM上执行,一个block一旦被调度到一个SM上,则这个block只会 ...

  5. 《CUDA C编程权威指南》——1.5节总结

    本节书摘来自华章社区<CUDA C编程权威指南>一书中的第1章,第1.5节总结,作者[美] 马克斯·格罗斯曼(Max Grossman) ,更多章节内容可以访问云栖社区"华章社区 ...

  6. 《CUDA C编程权威指南》——3.4 避免分支分化

    本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第3章,第3.4节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...

  7. c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...

    本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第1章,第1.3节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...

  8. 《CUDA C编程权威指南》——2.2 给核函数计时

    本节书摘来自华章计算机<CUDA C编程权威指南>一书中的第2章,第2.2节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社 ...

  9. 《CUDA C编程权威指南》——2.4节设备管理

    本节书摘来自华章社区<CUDA C编程权威指南>一书中的第2章,第2.4节设备管理,作者[美] 马克斯·格罗斯曼(Max Grossman) ,更多章节内容可以访问云栖社区"华章 ...

最新文章

  1. 百分点大数据技术团队:乘风破浪 海外数据中台项目实践
  2. Linux设置SSH登录(SecureCrt)
  3. 接口应用小玩具-博客园积分排名变动监控工具
  4. 什么是转向灯?使用转向灯有何技巧?
  5. android支付宝支付开发过程
  6. python输入整数n计算并输出1+22+333_Python 经典练习题-016
  7. 音轨分离软件 Spleeter 使用教程及踩过的坑
  8. Python数据挖掘与分析——泰坦尼克号
  9. Arduino Nano技术指标
  10. 初学unity(简单场景制作)
  11. usr目录linux,linux之usr目录的概述
  12. 你若运行,便是晴天!
  13. 无法启动因为计算机丢失ac1st16,Win7启动CAD时提示丢失ac1st16.dll如何修复
  14. 计算机电缆价格范围,计算机电缆DJYPVPR价格,报价
  15. 游戏中的脚本语言原理与发展
  16. 活动二维码怎么制作?如何将活动内容做成二维码图片?
  17. 经济型EtherCAT运动控制器(一):功能简介与应用场景
  18. Python的rabbitMQ
  19. google 确定某点海拔高_如何查询某个地点的海拔高度,详情介绍
  20. 【C#】无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe)

热门文章

  1. python爬虫框架源码_python爬虫的基本框架
  2. 微课|Python程序设计开发宝典(5.2.2):默认值参数
  3. (PPT)Python程序设计课程教学内容组织与教学方法实践
  4. 使用Python+pillow绘制矩阵盖尔圆
  5. python制作手机壁纸_Python爬取手机壁纸图片
  6. devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释
  7. 力扣77.组合(JavaScript)
  8. html5中语义元素的是,在html5中语义元素应用分析
  9. 华为研制鸿蒙小米呢,直追华为鸿蒙!小米自研发操作系统发布
  10. 光子 量子 DNA计算机的发展情况,CPU的发展与量子计算机.pdf