Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/soumith/cudnn.torch.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoumith <soumith@fb.com>2014-12-20 10:30:08 +0300
committersoumith <soumith@fb.com>2014-12-20 10:30:08 +0300
commit035863d94fb41b48ccd0babf7055c6bb719bbf8f (patch)
treebff149765b13aa311012e47d4b4e2613b273e3e8 /VolumetricConvolution.lua
parenta2def9658f9df262a252ff71e9dfd310ab722b13 (diff)
lint fixes (80 columns)
Diffstat (limited to 'VolumetricConvolution.lua')
-rw-r--r--VolumetricConvolution.lua58
1 files changed, 37 insertions, 21 deletions
diff --git a/VolumetricConvolution.lua b/VolumetricConvolution.lua
index 05a08d4..74857e2 100644
--- a/VolumetricConvolution.lua
+++ b/VolumetricConvolution.lua
@@ -1,8 +1,12 @@
-local VolumetricConvolution, parent = torch.class('cudnn.VolumetricConvolution', 'nn.VolumetricConvolution')
+local VolumetricConvolution, parent
+ = torch.class('cudnn.VolumetricConvolution', 'nn.VolumetricConvolution')
local ffi = require 'ffi'
local errcheck = cudnn.errcheck
-function VolumetricConvolution:__init(nInputPlane, nOutputPlane, kT, kW, kH, dT, dW, dH, padT, padW, padH)
+function VolumetricConvolution:__init(nInputPlane, nOutputPlane,
+ kT, kW, kH,
+ dT, dW, dH,
+ padT, padW, padH)
parent.__init(self, nInputPlane, nOutputPlane, kT, kW, kH, dT, dW, dH)
self.padT = padT or 0
self.padW = padW or 0
@@ -13,12 +17,15 @@ end
-- if you change the configuration of the module manually, call this
function VolumetricConvolution:resetWeightDescriptors()
- assert(torch.typename(self.weight) == 'torch.CudaTensor', 'Only Cuda supported duh!')
- assert(torch.typename(self.bias) == 'torch.CudaTensor', 'Only Cuda supported duh!')
+ assert(torch.typename(self.weight) == 'torch.CudaTensor',
+ 'Only Cuda supported duh!')
+ assert(torch.typename(self.bias) == 'torch.CudaTensor',
+ 'Only Cuda supported duh!')
-- create filterDescriptor for weight
self.weightDesc = ffi.new('struct cudnnFilterStruct*[1]')
errcheck('cudnnCreateFilterDescriptor', self.weightDesc)
- local desc = torch.IntTensor({self.nOutputPlane, self.nInputPlane, self.kT, self.kH, self.kW})
+ local desc = torch.IntTensor({self.nOutputPlane, self.nInputPlane,
+ self.kT, self.kH, self.kW})
errcheck('cudnnSetFilterNdDescriptor', self.weightDesc[0],
'CUDNN_DATA_FLOAT', 5,
desc:data());
@@ -28,13 +35,15 @@ function VolumetricConvolution:resetWeightDescriptors()
ffi.gc(self.weightDesc, destroyWDesc)
-- create descriptor for bias
- self.biasDesc = cudnn.toDescriptor(self.bias:view(1, self.nOutputPlane, 1, 1))
+ self.biasDesc = cudnn.toDescriptor(self.bias:view(1, self.nOutputPlane,
+ 1, 1))
end
function VolumetricConvolution:createIODescriptors(input)
local batch = true
if input:dim() == 4 then
- input = input:view(1, input:size(1), input:size(2), input:size(3), input:size(4))
+ input = input:view(1, input:size(1), input:size(2),
+ input:size(3), input:size(4))
batch = false
end
assert(input:dim() == 5 and input:isContiguous());
@@ -53,7 +62,8 @@ function VolumetricConvolution:createIODescriptors(input)
local pad = torch.IntTensor({self.padT, self.padH, self.padW})
local stride = torch.IntTensor({self.dT, self.dH, self.dW})
local upscale = torch.IntTensor({1,1,1})
- errcheck('cudnnSetConvolutionNdDescriptor', self.convDesc[0], 3, pad:data(),
+ errcheck('cudnnSetConvolutionNdDescriptor', self.convDesc[0],
+ 3, pad:data(),
stride:data(), upscale:data(), 'CUDNN_CROSS_CORRELATION');
local function destroyConvDesc(d)
errcheck('cudnnDestroyConvolutionDescriptor', d[0]);
@@ -63,28 +73,31 @@ function VolumetricConvolution:createIODescriptors(input)
-- create output descriptor and resize output
local oSize = torch.IntTensor(5)
local oSizeD = oSize:data()
- errcheck('cudnnGetConvolutionNdForwardOutputDim', self.convDesc[0], self.iDesc[0],
+ errcheck('cudnnGetConvolutionNdForwardOutputDim',
+ self.convDesc[0], self.iDesc[0],
self.weightDesc[0], 5, oSizeD)
self.output:resize(oSize:long():storage())
-- create descriptor for output
self.oDesc = cudnn.toDescriptor(self.output)
- self.oDescBias = cudnn.toDescriptor(self.output:view(self.output:size(1),
- self.output:size(2),
- self.output:size(3)
- *self.output:size(4),
- self.output:size(5)))
+ self.oDescBias = cudnn.toDescriptor(
+ self.output:view(self.output:size(1),
+ self.output:size(2),
+ self.output:size(3)*self.output:size(4),
+ self.output:size(5)))
-- create forwardAlgorithm descriptors for
local algType = ffi.new("cudnnConvolutionFwdAlgo_t[?]", 1)
errcheck('cudnnGetConvolutionForwardAlgorithm',
cudnn.handle[cutorch.getDevice()-1],
- self.iDesc[0], self.weightDesc[0], self.convDesc[0], self.oDesc[0],
- 'CUDNN_CONVOLUTION_FWD_PREFER_FASTEST', -1, algType)
+ self.iDesc[0], self.weightDesc[0], self.convDesc[0],
+ self.oDesc[0], 'CUDNN_CONVOLUTION_FWD_PREFER_FASTEST',
+ -1, algType)
self.algType = algType
local bufSize = torch.LongTensor(1)
errcheck('cudnnGetConvolutionForwardWorkspaceSize',
cudnn.handle[cutorch.getDevice()-1],
- self.iDesc[0], self.weightDesc[0], self.convDesc[0], self.oDesc[0],
+ self.iDesc[0], self.weightDesc[0],
+ self.convDesc[0], self.oDesc[0],
algType[0], bufSize:data())
self.extraBuffer = self.extraBuffer or input.new(1)
if bufSize[1] ~= 0 then self.extraBuffer:resize(bufSize[1]) end
@@ -116,8 +129,9 @@ function VolumetricConvolution:updateOutput(input)
self.extraBuffer:data(), self.extraBuffer:nElement(),
zero:data(),
self.oDesc[0], self.output:data());
- errcheck('cudnnAddTensor', cudnn.handle[cutorch.getDevice()-1], 'CUDNN_ADD_SAME_C',
- one:data(), self.biasDesc[0], self.bias:data(), one:data(),
+ errcheck('cudnnAddTensor', cudnn.handle[cutorch.getDevice()-1],
+ 'CUDNN_ADD_SAME_C', one:data(),
+ self.biasDesc[0], self.bias:data(), one:data(),
self.oDescBias[0], self.output:data());
return self.output
end
@@ -140,7 +154,8 @@ end
function VolumetricConvolution:accGradParameters(input, gradOutput, scale)
self.scaleT = self.scaleT or torch.FloatTensor(1):fill(1.0)
- self.scaleT = self.scaleT:float() -- this line forces this member to always be on CPU (needed for cudnn)
+ -- this line forces this member to always be on CPU (needed for cudnn)
+ self.scaleT = self.scaleT:float()
scale = scale or 1.0
self.scaleT[1] = scale
@@ -155,7 +170,8 @@ function VolumetricConvolution:accGradParameters(input, gradOutput, scale)
one:data(),
self.biasDesc[0], self.gradBias:data());
-- gradWeight
- errcheck('cudnnConvolutionBackwardFilter', cudnn.handle[cutorch.getDevice()-1],
+ errcheck('cudnnConvolutionBackwardFilter',
+ cudnn.handle[cutorch.getDevice()-1],
self.scaleT:data(),
self.iDesc[0], input:data(),
self.oDesc[0], gradOutput:data(),