GPU并行推理的一个疑问

GPU是并行方面的行家,可是我发现当我利用libtorch,一个GPU同时运行多个模型进行推理时,两个模型的耗时都有大幅度的增加,这是很令人疑惑的问题。

按照CPU线程同步的思路,如果我开启多个线程进行工作,相比于单个线程的工作,其耗时是轻微增加或不增加的。

所以我的内心产生了一个疑惑,难道GPU不支持多个模型并行推理,只支持串行推理?又或者libtorch这个库本身不支持并行推理?

 

随后,我上网查找了一番:

能不能单GPU并行推理多个模型 · Issue #28733 · PaddlePaddle/Paddle · GitHub

在同一GPU上使用多个并行进程在TysFraseC++中较慢的推理时间_三行代码 (sov5.cn)

果然有人也遇到了类似的问题,结果显示,GPU推理多个模型,其耗时确实大大增加,但仍然不能说明GPU不支持并行推理。

 

GPU必然可以支持并行,那么可能是cuda的问题。那么能否做一些实验来证明,cuda确实不支持并行推理呢?

 我是如此设置实验的,该实验的实验组是一个阻塞形式的(串行)运行两个相同模型的程序,对照组则是开两个线程并行运行两个相同模型的程序,运行十次,然后计算耗时。

如果cuda不支持并行推理,那么两个程序的运行时间应当是一致的,或者说是很相近的。

实验组结果:

对照组结果:

 

end1和end2记录的是两个模型运行结束的时间。

结果显示,对照组耗时确实明显低于实验组,这证明cuda支持并行推理!但是并行效率比较低下,只比串行推理略强

posted @ 2022-04-27 14:39  澳大利亚树袋熊  阅读(1457)  评论(0)    收藏  举报