Enabled python API for Singa-OpenCL.
Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/5d3da920 Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/5d3da920 Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/5d3da920 Branch: refs/heads/master Commit: 5d3da920b4e03cccdb98129525afda5080e318d2 Parents: 6b70dfc Author: Tan Li Boon <[email protected]> Authored: Mon Jan 23 00:25:07 2017 +0800 Committer: root <wangwei> Committed: Mon Jan 23 09:43:24 2017 +0000 ---------------------------------------------------------------------- python/singa/device.py | 36 ++++++++++++++++++++++++++++-------- python/singa/layer.py | 6 +++--- 2 files changed, 31 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/5d3da920/python/singa/device.py ---------------------------------------------------------------------- diff --git a/python/singa/device.py b/python/singa/device.py index f250f9e..1df4c84 100644 --- a/python/singa/device.py +++ b/python/singa/device.py @@ -52,22 +52,32 @@ class Device(object): def get_num_gpus(): - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.GetNumGPUs() def get_gpu_ids(): - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.GetGPUIDs() def get_gpu_mem_size(id): - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.GetGPUMemSize(id) +def get_num_opencl_platforms(): + assert singa.USE_OPENCL, 'SINGA has not been compiled with OpenCL enabled.' + return singa.Platform.GetNumOpenclPlatforms() + + +def get_num_opencl_devices(): + assert singa.USE_OPENCL, 'SINGA has not been compiled with OpenCL enabled.' + return singa.Platform.GetNumOpenclDevices() + + def device_query(id, verbose=False): - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.DeviceQuery(id, verbose) @@ -79,7 +89,7 @@ def create_cuda_gpus(num): Returns: a list of swig converted CudaGPU devices. ''' - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.CreateCudaGPUs(num) @@ -89,7 +99,7 @@ def create_cuda_gpu(): Returns: a swig converted CudaGPU device. ''' - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.CreateCudaGPUs(1)[0] @@ -102,7 +112,7 @@ def create_cuda_gpus_on(device_ids): Returns: a list of swig converted CudaGPU devices. ''' - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' return singa.Platform.CreateCudaGPUsOn(device_ids) @@ -115,11 +125,21 @@ def create_cuda_gpu_on(device_id): Returns: a swig converted CudaGPU device. ''' - assert singa.USE_CUDA, 'SINGA is not compiled with CDUA/GPU' + assert singa.USE_CUDA, 'SINGA has not been compiled with CUDA enabled.' devices = create_cuda_gpus_on([device_id]) return devices[0] +def create_opencl_device(): + '''Create the default OpenCL device. + + Returns: + a swig converted OpenCL device. + ''' + assert singa.USE_OPENCL, 'SINGA has not been compiled with OpenCL enabled.' + return singa.Platform.GetDefaultDevice() + + default_device = singa.Platform.GetDefaultDevice() http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/5d3da920/python/singa/layer.py ---------------------------------------------------------------------- diff --git a/python/singa/layer.py b/python/singa/layer.py index 583126a..0bea2d2 100644 --- a/python/singa/layer.py +++ b/python/singa/layer.py @@ -138,7 +138,7 @@ class Layer(object): ''' Create a singa layer based on caffe layer configuration. ''' - _check_engine(engine, ['cudnn', 'singacpp', 'singacuda']) + _check_engine(engine, ['cudnn', 'singacpp', 'singacuda', 'singacl']) if self.conf.type == 'InnerProduct' or self.conf.type == 14: self.layer = _create_layer(engine, 'Dense') else: @@ -350,7 +350,7 @@ class Conv2D(Layer): self.conf.param.extend([bspecs]) self.param_specs.append(bspecs) - _check_engine(engine, ['cudnn', 'singacpp']) + _check_engine(engine, ['cudnn', 'singacpp', 'singacl']) self.layer = _create_layer(engine, 'Convolution') if input_sample_shape is not None: self.setup(input_sample_shape) @@ -407,7 +407,7 @@ class Pooling2D(Layer): conf = self.conf.pooling_conf conf = _set_kernel_stride_pad(conf, kernel, stride, border_mode, pad) conf.pool = mode - _check_engine(engine, ['cudnn', 'singacpp']) + _check_engine(engine, ['cudnn', 'singacpp', 'singacl']) self.layer = _create_layer(engine, 'Pooling') if input_sample_shape is not None: self.setup(input_sample_shape)
