找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 252|回复: 4

网上说一块GPU同一时刻只能被一个线程使用,这个说法对吗?因为我现在确实是两个线...

[复制链接]
发表于 2018-5-15 10:39:27 | 显示全部楼层 |阅读模式
ESC4000G3
网上说一块GPU同一时刻只能被一个线程使用,这个说法对吗?因为我现在确实是两个线程使用同一块GPU耗时会加倍。
回复

使用道具 举报

发表于 2018-5-15 10:59:50 | 显示全部楼层
Jetson TX2
这个说法可以说对也可以说不对.

(1)如果线程是指的Host Thread的话, 除非是专业卡, 并且设定了host线程独占模式, 否则来自多个Host进程的多个Host线程们, 是可以同时使用它的. 因此可以说不对(家用卡不支持独占模式, 因此总是可以多个Host线程同时使用的, 但执行效率是另外一回事, 可以往下看).

(2)但GPU目前在实质上(Maxwell/Pascal), 同一时刻只能执行来自不同Host进程中的不同Host线程中的1个Context中的任务, 因此从这个角度看, 同一时间只能被1个host线程访问的, 可以说也对. 此时N个不同Host线程中的任务, 将需要N倍的时间来完成.

(3)但如果所有线程都是拥有同一个CUDA Context, 来自同一个host进程, 同时在一次启动的kernel中的线程规模无法让设备满载的时候, 同一个context中的其他流中的kernel见缝插针可能会全部或者部分同时在执行中, 此时显然这个说法是不对的. 此时N个host线程中的任务可能需要1倍(无时间增加)到N倍时间之间不定.

综合来说, 这个说法是否正确看情况.
而总的执行时间, 在上了N个Host线程后, 也可能从1 - N倍之间变化.

前几天论坛发的Sisiy姐的多流, 一种方式就是从同一个Host进程中(例如一次exe启动)的多个Host线程, 每个线程控制1个流, 同时的发布任务, 此时可能很多操作可以重叠同时执行, 有效的将时间从N倍变成1-N倍之间. 不妨考虑.

但对于那种一个线程就可以充分的压满设备(例如双向的PCI-E传输 + 卡的计算), 此时上多流不会有额外的性能提升,  但可以保留对未来设备的扩展性和兼容性(例如, 10年后, 你走人了, 代码留给了公司, 而到时候一张显卡的SM规模是现在的100倍还多, 那么现在的多流更好的设备利用, 在将来会享受到效率提升的, 哪怕现在不能).

Regards,
屠戮人神.
回复 支持 反对

使用道具 举报

发表于 2018-8-26 17:53:01 | 显示全部楼层
Tesla P100
屠戮人神 发表于 2018-5-15 10:59
这个说法可以说对也可以说不对.

(1)如果线程是指的Host Thread的话, 除非是专业卡, 并且设定了host线程 ...

你好,如果一个线程充分压满设备后,在运行的过程中,再打开一个第三方程序,比如solidworks,调用gpu,会不会出现系统崩溃的现象呢?
@屠戮人神
回复 支持 反对

使用道具 举报

发表于 2018-8-27 15:33:58 | 显示全部楼层
dongdajie 发表于 2018-8-26 17:53
你好,如果一个线程充分压满设备后,在运行的过程中,再打开一个第三方程序,比如solidworks,调用gpu,会 ...

Solidworks我不熟悉, 不清楚这是什么类型的程序。如果在Windows上, 某显卡同时负责桌面绘制和计算任务, 压满设备, 则可能会触发TDR, 引发显卡驱动崩溃并重置, 但一般不会导致立刻系统崩溃。

Pascal+的卡表现的比较好, 不太容易出现这种情况。但原理尚不明确。

屠戮人神。
回复 支持 反对

使用道具 举报

发表于 2018-9-3 20:55:22 | 显示全部楼层
屠戮人神 发表于 2018-8-27 15:33
Solidworks我不熟悉, 不清楚这是什么类型的程序。如果在Windows上, 某显卡同时负责桌面绘制和计算任务 ...

感谢 @屠戮人神
TDR没有出现过,因为设置的时间足够长了。
因为是游戏显卡,用作计算确实不缺性比较多,换个计算卡试一试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表