Skip to content

Commit

Permalink
profiling uses sys.clock
Browse files Browse the repository at this point in the history
  • Loading branch information
nicholas-leonard committed Jul 6, 2015
1 parent af6de6e commit 8a037df
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 26 deletions.
16 changes: 8 additions & 8 deletions ParallelTable.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,41 @@ local ParallelTable, parent = nn.ParallelTable, nn.Container
function ParallelTable:profile()
function ParallelTable:updateOutput(input)
for i=1,#self.modules do
local start = os.clock()
local start = sys.clock()
self.output[i] = self.modules[i]:updateOutput(input[i])
if cutorch then cutorch.synchronize() end
print(torch.type(self.modules[i])..' updateOutput: '..os.clock() - start.." s")
print(torch.type(self.modules[i])..' updateOutput: '..sys.clock() - start.." s")
end
return self.output
end

function ParallelTable:updateGradInput(input, gradOutput)
for i,module in ipairs(self.modules) do
local start = os.clock()
local start = sys.clock()
self.gradInput[i]= module:updateGradInput(input[i], gradOutput[i])
if cutorch then cutorch.synchronize() end
print(torch.type(module)..' updateGradInput: '..os.clock() - start.." s")
print(torch.type(module)..' updateGradInput: '..sys.clock() - start.." s")
end
return self.gradInput
end

function ParallelTable:accGradParameters(input, gradOutput, scale)
scale = scale or 1
for i,module in ipairs(self.modules) do
local start = os.clock()
local start = sys.clock()
module:accGradParameters(input[i], gradOutput[i], scale)
if cutorch then cutorch.synchronize() end
print(torch.type(module)..' accGradParameters: '..os.clock() - start.." s")
print(torch.type(module)..' accGradParameters: '..sys.clock() - start.." s")
end
end

function ParallelTable:accUpdateGradParameters(input, gradOutput, lr)
lr = lr or 1
for i,module in ipairs(self.modules) do
local start = os.clock()
local start = sys.clock()
module:accUpdateGradParameters(input[i], gradOutput[i], lr)
if cutorch then cutorch.synchronize() end
print(torch.type(module)..' accUpdateGradParameters: '..os.clock() - start.." s")
print(torch.type(module)..' accUpdateGradParameters: '..sys.clock() - start.." s")
end
end
parent.profile(self)
Expand Down
36 changes: 18 additions & 18 deletions Sequential.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ function Sequential:profile()
function Sequential:updateOutput(input)
local currentOutput = input
for i=1,#self.modules do
local start = os.clock()
local start = sys.clock()
currentOutput = self.modules[i]:updateOutput(currentOutput)
if cutorch then cutorch.synchronize() end
print(torch.type(self.modules[i])..' updateOutput: '..os.clock() - start.." s")
print(torch.type(self.modules[i])..' updateOutput: '..sys.clock() - start.." s")
end
self.output = currentOutput
return currentOutput
Expand All @@ -19,16 +19,16 @@ function Sequential:profile()
local currentModule = self.modules[#self.modules]
for i=#self.modules-1,1,-1 do
local previousModule = self.modules[i]
local start = os.clock()
local start = sys.clock()
currentGradOutput = currentModule:updateGradInput(previousModule.output, currentGradOutput)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' updateGradInput: '..os.clock() - start.." s")
print(torch.type(currentModule)..' updateGradInput: '..sys.clock() - start.." s")
currentModule = previousModule
end
local start = os.clock()
local start = sys.clock()
currentGradOutput = currentModule:updateGradInput(input, currentGradOutput)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' updateGradInput: '..os.clock() - start.." s")
print(torch.type(currentModule)..' updateGradInput: '..sys.clock() - start.." s")
self.gradInput = currentGradOutput
return currentGradOutput
end
Expand All @@ -40,18 +40,18 @@ function Sequential:profile()
local currentModule = self.modules[#self.modules]
for i=#self.modules-1,1,-1 do
local previousModule = self.modules[i]
local start = os.clock()
local start = sys.clock()
currentModule:accGradParameters(previousModule.output, currentGradOutput, scale)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' accGradParameters: '..os.clock() - start.." s")
print(torch.type(currentModule)..' accGradParameters: '..sys.clock() - start.." s")
currentGradOutput = currentModule.gradInput
currentModule = previousModule
end

local start = os.clock()
local start = sys.clock()
currentModule:accGradParameters(input, currentGradOutput, scale)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' accGradParameters: '..os.clock() - start.." s")
print(torch.type(currentModule)..' accGradParameters: '..sys.clock() - start.." s")
end

function Sequential:backward(input, gradOutput, scale)
Expand All @@ -60,17 +60,17 @@ function Sequential:profile()
local currentModule = self.modules[#self.modules]
for i=#self.modules-1,1,-1 do
local previousModule = self.modules[i]
local start = os.clock()
local start = sys.clock()
currentGradOutput = currentModule:backward(previousModule.output, currentGradOutput, scale)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' backward: '..os.clock() - start.." s")
print(torch.type(currentModule)..' backward: '..sys.clock() - start.." s")
currentModule.gradInput = currentGradOutput
currentModule = previousModule
end
local start = os.clock()
local start = sys.clock()
currentGradOutput = currentModule:backward(input, currentGradOutput, scale)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' backward: '..os.clock() - start.." s")
print(torch.type(currentModule)..' backward: '..sys.clock() - start.." s")
self.gradInput = currentGradOutput
return currentGradOutput
end
Expand All @@ -80,18 +80,18 @@ function Sequential:profile()
local currentModule = self.modules[#self.modules]
for i=#self.modules-1,1,-1 do
local previousModule = self.modules[i]
local start = os.clock()
local start = sys.clock()
currentModule:accUpdateGradParameters(previousModule.output, currentGradOutput, lr)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' accUpdateGradParameters: '..os.clock() - start.." s")
print(torch.type(currentModule)..' accUpdateGradParameters: '..sys.clock() - start.." s")
currentGradOutput = currentModule.gradInput
currentModule = previousModule
end

local start = os.clock()
local start = sys.clock()
currentModule:accUpdateGradParameters(input, currentGradOutput, lr)
if cutorch then cutorch.synchronize() end
print(torch.type(currentModule)..' accUpdateGradParameters: '..os.clock() - start.." s")
print(torch.type(currentModule)..' accUpdateGradParameters: '..sys.clock() - start.." s")
end

parent.profile(self)
Expand Down

0 comments on commit 8a037df

Please sign in to comment.