确保 Python 代码在 GPU 上是 运行 还是 CPU
Ensuring if Python code is running on GPU or CPU
我已经编写了一些具有 2 LSTM
层的基本 Deep Learning
代码。我使用 Keras
和 Theano
作为我的后端。与 AWS
上的另一台机器相比,这段代码在我 AWS
的机器上花费的时间太长了。在速度 运行ning 更快的机器上,每个 epoch 需要 640 秒,而在速度 运行ning 更慢的机器上,每个 epoch 需要超过 10,000 秒。
我开始认为较慢机器上的代码不在 GPU 上 运行ning。两台机器上的代码 运行ning 完全一样。机器配置也是一样的。
看起来 Theano
安装在较慢的机器上。我运行下面的代码得到了结果:
有没有办法检查我的代码是否在 GPU 或 CPU 上 运行ning?
在这方面的任何帮助将不胜感激。
TIA。
编辑
根据@Marcin 的建议,我添加了以下代码:
但是当我 运行 下面的代码时,我仍然得到 Used the cpu
结果:
有几种方法可以检查:
签入 Theano
标志:
import os
print(os.environ["THEANO_FLAGS"])
看看 device
设置了什么。
尝试 运行 此代码段提供 here:
代码:
from theano import function, config, shared, tensor
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
('Gpu' not in type(x.op).__name__)
for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
编辑:
尝试将此代码段添加为代码的 前两行(重要):
import os
os.environ["THEANO_FLAGS"] = "mode=FAST_RUN,device=gpu,floatX=float32"
我已经编写了一些具有 2 LSTM
层的基本 Deep Learning
代码。我使用 Keras
和 Theano
作为我的后端。与 AWS
上的另一台机器相比,这段代码在我 AWS
的机器上花费的时间太长了。在速度 运行ning 更快的机器上,每个 epoch 需要 640 秒,而在速度 运行ning 更慢的机器上,每个 epoch 需要超过 10,000 秒。
我开始认为较慢机器上的代码不在 GPU 上 运行ning。两台机器上的代码 运行ning 完全一样。机器配置也是一样的。
看起来 Theano
安装在较慢的机器上。我运行下面的代码得到了结果:
有没有办法检查我的代码是否在 GPU 或 CPU 上 运行ning?
在这方面的任何帮助将不胜感激。
TIA。
编辑
根据@Marcin 的建议,我添加了以下代码:
但是当我 运行 下面的代码时,我仍然得到 Used the cpu
结果:
有几种方法可以检查:
签入
Theano
标志:import os print(os.environ["THEANO_FLAGS"])
看看
device
设置了什么。尝试 运行 此代码段提供 here:
代码:
from theano import function, config, shared, tensor
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
('Gpu' not in type(x.op).__name__)
for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
编辑:
尝试将此代码段添加为代码的 前两行(重要):
import os
os.environ["THEANO_FLAGS"] = "mode=FAST_RUN,device=gpu,floatX=float32"