Luajit и Torch7: доступ к объектам типа cdata из API-интерфейса Torch7

Есть ли способ конвертировать CDATA в данные пользователя? Как я могу использовать C api для загрузки / извлечения CDATA в / из стека?

Редактировать: В оригинальном названии упоминается luajit, но не Torch. В этом контексте другие ответы помимо того, который я наконец-то представил себе (например Вольфганг) имел смысл.

2

Решение

В Lua C API нет расширения для доступа к объектам cdata, созданным библиотекой FFI LuaJIT.

Итак, простой и рекомендуемый способ — сделать маршаллинг со стороны Lua, если вы имеете дело с cdata. Итак, вызовите функцию C из Lua и передайте cdata в качестве параметра.

3

Другие решения

К данным, к которым я пытался получить доступ, относились данные тензорного объекта из torch7, я наконец нашел способ, используя torch7 C API, я опубликую его здесь на всякий случай, если кто-то сочтет это полезным:

#include <TH/TH.HW>
#include <TH/THStorage.h>
#include <TH/THTensor.h>

И затем, чтобы получить тензор с именем «an_image» в коде факела:

lua_getglobal(L,"an_image");//assuming it goes on top of the stack
THDoubleTensor*data=(THDoubleTensor*)luaT_toudata(L,-1,"torch.DoubleTensor");

И, наконец, с учетом буфера dest двойников,

memcpy(dest,data->storage->data,n*sizeof(double));
1

Может быть, вы найдете полезную информацию здесь: http://luajit.org/ext_ffi_semantics.html и более конкретно здесь: http://luajit.org/ext_ffi_semantics.html#convert_fromlua

1
По вопросам рекламы [email protected]