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:
authoralbanD <alban@robots.ox.ac.uk>2016-08-18 15:13:54 +0300
committeralbanD <alban@robots.ox.ac.uk>2016-08-18 15:13:54 +0300
commit9b4bc3b5162889c41a162b64181f795de919ad48 (patch)
treee979444b3e599d0d47a56c6a303f063ae86b174a
parente079d80ea624cbd996e66aa3d6716af31f3a9aa5 (diff)
add cudnn.externalizeString
-rw-r--r--RNN.lua6
-rw-r--r--ffi.lua2
-rw-r--r--init.lua8
3 files changed, 12 insertions, 4 deletions
diff --git a/RNN.lua b/RNN.lua
index f515caa..d1816fe 100644
--- a/RNN.lua
+++ b/RNN.lua
@@ -580,8 +580,8 @@ local function retrieveLinearParams(self, cuDNNMethod)
linLayerMatDesc[0],
ffi.cast("void**", matrixPointer))
- local dataType = 'CUDNN_DATA_FLOAT'
- local format = 'CUDNN_TENSOR_NCHW'
+ local dataType = cudnn.externalizeString('CUDNN_DATA_FLOAT')
+ local format = cudnn.externalizeString('CUDNN_TENSOR_NCHW')
local nbDims = torch.IntTensor(1)
local minDim = 3
@@ -590,7 +590,7 @@ local function retrieveLinearParams(self, cuDNNMethod)
linLayerMatDesc[0],
minDim,
ffi.cast("cudnnDataType_t*", dataType),
- ffi.cast("cudnnDataType_t*", format),
+ ffi.cast("cudnnTensorFormat_t*", format),
nbDims:data(),
filterDimA:data())
diff --git a/ffi.lua b/ffi.lua
index 3354dc7..cf56341 100644
--- a/ffi.lua
+++ b/ffi.lua
@@ -1608,7 +1608,7 @@ if cudnn.version < 5005 then
.. ' \nAre you using an older version of CuDNN?')
end
--- cechk GPU driver version
+-- check GPU driver version
local props = cutorch.getDeviceProperties(cutorch.getDevice())
if cutorch.driverVersion and -- for backward compatiblity
not(cutorch.driverVersion >= 7050 -- desktop GPUs
diff --git a/init.lua b/init.lua
index f8dd115..e69eade 100644
--- a/init.lua
+++ b/init.lua
@@ -161,6 +161,14 @@ function cudnn.getSharedWorkspace()
return sharedBuffer[device][stream]
end
+-- Creates a clone of luaStr that can be used to prevent side
+-- effects when passing char* to C functions.
+function cudnn.externalizeString(luaStr)
+ local cStr = ffi.new("char[?]", #luaStr+1)
+ ffi.copy(cStr, luaStr)
+ return cStr
+end
+
require('cudnn.SpatialConvolution')
require('cudnn.VolumetricConvolution')
require('cudnn.SpatialFullConvolution')