提交 73780117 authored 作者: Frederic Bastien's avatar Frederic Bastien

Add theano.gpuarray.use similar to theano.sandbox.cuda.use() to manually enable it.

上级 c0b24762
...@@ -110,15 +110,36 @@ def init_dev(dev, name=None): ...@@ -110,15 +110,36 @@ def init_dev(dev, name=None):
# This maps things like 'cuda0' to the context object on that device. # This maps things like 'cuda0' to the context object on that device.
init_dev.devmap = {} init_dev.devmap = {}
def use(device,
force=False,
default_to_move_computation_to_gpu=True,
move_shared_float32_to_gpu=True):
if device:
init_dev(device)
elif forece:
raise Exception("No device provided")
if default_to_move_computation_to_gpu:
optdb.add_tags('gpuarray_opt', 'fast_run', 'fast_compile')
optdb.add_tags('gpua_scanOp_make_inplace', 'fast_run')
if move_shared_float32_to_gpu:
import theano.compile
theano.compile.shared_constructor(gpuarray_shared_constructor)
from .basic_ops import (GpuAlloc, GpuAllocEmpty, GpuContiguous, GpuEye,
GpuFromHost, GpuJoin, GpuReshape, GpuSplit,
HostFromGpu)
from .basic_ops import host_from_gpu, GpuFromHost
from .elemwise import GpuElemwise
from .subtensor import (GpuSubtensor, GpuIncSubtensor,
GpuAdvancedIncSubtensor1)
if pygpu: if pygpu:
try: try:
if (config.device.startswith('cuda') or if (config.device.startswith('cuda') or
config.device.startswith('opencl')): config.device.startswith('opencl')):
init_dev(config.device) use(config.device)
import theano.compile
theano.compile.shared_constructor(gpuarray_shared_constructor)
optdb.add_tags('gpuarray_opt', 'fast_run', 'fast_compile')
optdb.add_tags('gpua_scanOp_make_inplace', 'fast_run')
elif (config.init_gpu_device.startswith('cuda') or elif (config.init_gpu_device.startswith('cuda') or
config.init_gpu_device.startswith('opencl')): config.init_gpu_device.startswith('opencl')):
if config.device != 'cpu': if config.device != 'cpu':
...@@ -130,18 +151,8 @@ if pygpu: ...@@ -130,18 +151,8 @@ if pygpu:
if config.contexts != '': if config.contexts != '':
for n, d in (c.split('->') for c in config.contexts.split(';')): for n, d in (c.split('->') for c in config.contexts.split(';')):
init_dev(d.strip(), n.strip()) init_dev(d.strip(), n.strip())
import theano.compile # To have shared var default on the GPU and opt to move to the GPU.
theano.compile.shared_constructor(gpuarray_shared_constructor) use("")
optdb.add_tags('gpuarray_opt', 'fast_run', 'fast_compile')
optdb.add_tags('gpua_scanOp_make_inplace', 'fast_run')
from .basic_ops import (GpuAlloc, GpuAllocEmpty, GpuContiguous, GpuEye,
GpuFromHost, GpuJoin, GpuReshape, GpuSplit,
HostFromGpu)
from .basic_ops import host_from_gpu, GpuFromHost
from .elemwise import GpuElemwise
from .subtensor import (GpuSubtensor, GpuIncSubtensor,
GpuAdvancedIncSubtensor1)
except Exception: except Exception:
error("Could not initialize pygpu, support disabled", exc_info=True) error("Could not initialize pygpu, support disabled", exc_info=True)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论