我写了下面的代码,以评估的Python多的效果,而使用TensorFlow:TensorFlow和Python多处理
import tensorflow as tf
from multiprocessing import Process
mydevice = "/gpu:0"
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.01)
mrange = 1000
def myfun():
with tf.device(mydevice):
mm1 = tf.constant([[float(i) for i in range(mrange)]],dtype='float32')
mm2 = tf.constant([[float(i)] for i in range(mrange)],dtype='float32')
with tf.device(mydevice):
prod = tf.matmul(mm1,mm2)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True,gpu_options=gpu_options))
rest = sess.run(prod)
print rest
sess.close()
ll = []
for i in range(100):
p1 = Process(target=myfun)
p1.start()
ll.append(p1)
for item in ll:
item.join()
在我的笔记本电脑的GPU运行这段代码所需的时间:〜6秒
如果我改变了设备CPU:〜6秒
如果我删除多,并调用该函数串行:75秒
可能有人请expla如果我在设备设置为GPU时使用多处理功能会发生什么情况。很明显,将会推出多个CUDA内核,但它们将在GPU中同时运行吗?
这只是一个实验,看看我是否可以在GPU上启动多个RNN。