小编R.y*_*y.z的帖子

将两个单独的GPU分配给python中的不同线程?

我想使用两个python源代码,第一个是使用开发的,tensorflow另一个是使用开发的pythorch。我想使用单独的GPU在线程中运行这些代码。两个代码的输入是相同的,并且当两个代码的结果准备好时,会有一些后处理。

我无法使用tf.device,因为它在初始化时会获取所有可用的GPU,并且我必须使用CUDA_VISIBLE_DEVICES环境变量。可通过在python中设置CUDA_VISIBLE_DEVICES来选择GPU访问。

os.environ["CUDA_VISIBLE_DEVICES"] = "Accessible_GPUs"
Run Code Online (Sandbox Code Playgroud)

但不幸的是,似乎CUDA_VISIBLE_DEVICES不能与线程一起使用:

os.environ["CUDA_VISIBLE_DEVICES"] = "2"
Thread(target = method_from_code1).start()
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
Thread(target = method_from_code2).start()
Run Code Online (Sandbox Code Playgroud)

现在的问题是为每个线程的环境变量设置不同的值。这个问题有解决方案吗?

python gpu multi-gpu

6
推荐指数
0
解决办法
236
查看次数

将视频帧提供给张量流模型的最快方法是什么?

有一个预先训练Tensorflow的图像识别模型.我想将它用作特征提取器.

为了提高性能,可以读取cv2.read() 和缓冲视频帧frameBuffer.在下一步中,我选择一批图像并在一组预处理之后将它们输入图形(为了准备图像以供给):

for x in range ( lowerIndex,upperIndex):
   frame = frameBuffer[x]
   img_data = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
   encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 100]
   result, img_str = cv2.imencode('.jpg', frame, encode_param)
   img_str = img_str.tostring(order='C')
   batchFrameBuffer.append(img_str)
Run Code Online (Sandbox Code Playgroud)

预处理步骤需要很长时间,在此期间GPU的利用率为0.有没有办法让GPU始终保持工作状态?(例如使用不同的线程(一个用于读取和预处理,另一个用于运行会话)

tensorflow

2
推荐指数
2
解决办法
1492
查看次数

标签 统计

gpu ×1

multi-gpu ×1

python ×1

tensorflow ×1