Caffe ニューラル ネットワークがあり、メイン スレッドをブロックせずにネットワークで (GPU を使用して) フォワード パスを実行したいと考えています。私はpythonを使用しています。スレッドとマルチプロセッシングを使用してみました。GPU を使用するように要求しているにもかかわらず、彼らは CPU を使用しています。これが私のコードです:
class ThreadingWorker(threading.Thread):
def __init__(self):
super(ThreadingWorker,self).__init__()
param = config()
self.model = param.model
self.net = caffe.Net(self.model.deployFile, self.model.caffemodel, caffe.TEST)
def run(self):
input_data = np.random.rand(1,4,self.model.width,self.model.height)
start = time()
self.net.forward(data=input_data)
print 'Success, took %f seconds' % (time()-start)
class MultProcessingWorker(mp.Process):
def run(self):
param = config()
self.model = param.model
self.net = caffe.Net(self.model.deployFile, self.model.caffemodel, caffe.TEST)
input_data = np.random.rand(1,4,self.model.width,self.model.height)
start = time()
self.net.forward(data=input_data)
print 'Success, took %f seconds' % (time()-start)
class NormalWorker(object):
'''Using the main thread, no parallelization is being used here'''
def __init__(self):
param = config()
self.model = param.model
self.net = caffe.Net(self.model.deployFile, self.model.caffemodel, caffe.TEST)
def run(self):
input_data = np.random.rand(1,4,self.model.width,self.model.height)
start = time()
self.net.forward(data=input_data)
print 'Success, took %f seconds' % (time()-start)
p = NormalWorker()
p.run()
>> Success, took 0.34 seconds
thread = ThreadingWorker()
thread.start()
>> Success, took 3.54 seconds
p = MultProcessingWorker()
p.start()
>> Success, took 3.45 seconds