我寫了下面的代碼,以評估的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。