- Convert LuaJIT cdata to Torch Tensor.
- Convert Torch Tensor to LuaJIT cdata.
This commit is contained in:
huxuan 2016-05-22 23:52:07 +09:00
Родитель 949c5be617
Коммит 88578fcca7
2 изменённых файлов: 28 добавлений и 9 удалений

Просмотреть файл

@ -3,6 +3,8 @@
mv = {}
ffi = require('ffi')
util = require('util')
ffi.cdef[[
typedef void* TableHandler;
void MV_Init(int* argc, char* argv[]);
@ -72,18 +74,11 @@ end
function mv.ArrayTableHandler:get()
cdata = ffi.new("float[?]", self._size)
libmv.MV_GetArrayTable(self._handler[0], cdata, self._size)
data = {}
for i=1, tonumber(self._size) do
data[i] = cdata[i - 1]
end
return torch.Tensor(data)
return util.cdata2tensor(cdata, tonumber(self._size))
end
function mv.ArrayTableHandler:add(data)
cdata = ffi.new("float[?]", self._size)
for i=1, tonumber(self._size) do
cdata[i - 1] = data[i]
end
cdata = util.tensor2cdata(data, tonumber(self._size))
libmv.MV_AddArrayTable(self._handler[0], cdata, self._size)
end

24
binding/lua/util.lua Normal file
Просмотреть файл

@ -0,0 +1,24 @@
#!/usr/bin/env lua
util = {}
ffi = require('ffi')
function util.cdata2tensor(cdata, size)
data = {}
for i=1, size do
data[i] = cdata[i - 1]
end
return torch.Tensor(data)
end
function util.tensor2cdata(data, size, cdata_type)
cdata_type = cdata_type or "float[?]"
cdata = ffi.new(cdata_type, size)
for i=1, size do
cdata[i - 1] = data[i]
end
return cdata
end
return util