diff options
author | albanD <alban@robots.ox.ac.uk> | 2016-08-18 15:13:54 +0300 |
---|---|---|
committer | albanD <alban@robots.ox.ac.uk> | 2016-08-18 15:13:54 +0300 |
commit | 9b4bc3b5162889c41a162b64181f795de919ad48 (patch) | |
tree | e979444b3e599d0d47a56c6a303f063ae86b174a | |
parent | e079d80ea624cbd996e66aa3d6716af31f3a9aa5 (diff) |
add cudnn.externalizeString
-rw-r--r-- | RNN.lua | 6 | ||||
-rw-r--r-- | ffi.lua | 2 | ||||
-rw-r--r-- | init.lua | 8 |
3 files changed, 12 insertions, 4 deletions
@@ -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()) @@ -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 @@ -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') |