tensorRT---认识cuda RuntimeAPI(stream---流操作)

本文介绍了CUDA的串行同步和并行同步执行状态,通过流(stream)的概念来理解异步操作。在串行同步执行中,程序顺序执行任务,而在并行同步执行中,任务被放入流中,允许程序不等待任务完成即可进行其他操作。CUDA的流使得任务可以按顺序执行,同时允许主程序灵活地控制何时获取结果。
摘要由CSDN通过智能技术生成
1. 流是一种基于 context 之上的任务管道抽象,一个 context 可以创建 n 个流
2. 流是异步控制的主要方式
3. nullptr 表示默认流,每个线程都有自己的默认流

串行同步执行状态

 从上面可以发现主程序是女朋友,当女朋友发出“想吃苹果了”则会去调用子函数过程如:“想吃苹果”-->“买苹果”-->“出门”-->“买苹果”-->“回来了”-->“拿到东西”,这个过程女朋友只能等到买回苹果,中间什么也不做,这就是串行同步执行状态,那么并行同步执行状态是怎么做呢?

并行同步执行状态

 从上面可以发现,当主程序女朋友调用函数买苹果后,立马就进入了写作业的状态,不会等待苹果的到来,继续向下执行,如果想做其他是,继续调用即可,此时男朋友的微信消息就相当于一个队列,女朋友只需要把想做的事放到队列里即可,不用等待,而男朋友这样从队列获取任务后就开始执行,男朋友获取任务的顺序和女朋友向队列里扔任务的顺序是保持一致的。假如刚开始女朋友发任务吃苹果后,男朋友正在买还没回来,现在右发任务吃西瓜、喝奶茶,此时男朋友会按照顺序买, 然后回来,而女朋友这里可以选择等待,也可以寻找做其他事,同时也可以知道男朋友的状态到哪了,然后什么时候取结果等等,都是可以做到的这就是异步同步过程。而流的操作就是这样的。

stream - 流

1. 上面的例子中, 男朋友的微信消息 ,就是任务队列,流的一种抽象
2. 女朋友发出指令后,他可以做任何事情,无需等待指令执行完毕,(指令发出的耗时也是极短的)
3. 即,异步操作,执行的代码,加入流的队列后,立即返回,不耽误时间
4. 女朋友发的指令被送到流中排队,男朋友根据流的队列,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值