前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPU CUDA相关函数

GPU CUDA相关函数

原创
作者头像
用户1638080
发布2022-12-05 01:10:53
3530
发布2022-12-05 01:10:53
举报
文章被收录于专栏:网络 后台

gpu信息获取

cuda api:

cudaGetDeviceCount(int device_count): 获取gpu设备块数

cudaSetDevice(int device_id):设置gpu_id

cudaMalloc(), cudaStreamCreate

stream

在Stream的帮助下,CUDA程序可以有效地将内存读取和数值运算并行,从而提升数据的吞吐量。

cuda 并行性表现主要在两个层面上:

Kernel level

Grid level

cuda stream指一堆异步的cuda操作, 按照host代码调用顺序在device上执行。

所有的cuda操作(kernel执行和数据传输)都会显式或隐式运行于stream上

  • 隐式声明和显式声明

异步且基于stream的kernel执行和数据传输能够实现以下几种类型的并行:

· Host运算操作和device运算操作并行

· Host运算操作和host到device的数据传输并行

· Host到device的数据传输和device运算操作并行

· Device内的运算并行

所有stream的执行都是异步的, 必要的时候需要做同步操作

cudaStreamSynchronize

//基本函数

cudaStream_t stream//定义流

cudaStreamCreate(cudaStream_t * s)//创建流

cudaStreamDestroy(cudaStream_t s)//销毁流

//显性同步

cudaStreamSynchronize()//同步单个流:等待该流上的命令都完成

cudaDeviceSynchronize()//同步所有流同步:等待整个设备上流都完成

cudaStreamWaitEvent()//通过某个事件:等待某个事件结束后执行该流上的命令

cudaStreamQuery()//查询一个流任务是否完成

//回调

cudaStreamAddCallback()//在任何点插入回调函数

//优先级

cudaStreamCreateWithPriority()

cudaDeviceGetStreamPriorityRange()

以上代码定义了两个流,每个流有三个命令,见注释

同一个流内顺序执行,流与流间异步执行

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • gpu信息获取
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档