level 1
金鱼师傅
楼主
正在给love2d提供一个openCL库:https://zhuanlan.zhihu.com/p/24853684
输入数据给openCL上下文很顺利,要实现读回的时候瞎了了。
我心中理想的接口是这样:
local result = {}
kernel:arg{inputv,result}
kernel:submit()
//wait for ready
use result
正常方法靠给事件设置回调函数:
cl_int clSetEventCallback( cl_event event,
cl_int command_exec_callback_type ,
void (CL_CALLBACK *pfn_event_notify) (cl_event event, cl_int event_command_exec_status, void*user_data),
void *user_data)
在pfn_event_notify里把数据写回table
ffi.cast非常强大,可以把一个lua函数包装成一个C函数指针
然而openCL文档说了pfn_event_notify要自己保证线程安全。哪怕我能给upvalue上锁,我还能给lua的VM上锁么,是不是光靠lua和ffi就没招了?
2017年01月16日 07点01分
1
输入数据给openCL上下文很顺利,要实现读回的时候瞎了了。
我心中理想的接口是这样:
local result = {}
kernel:arg{inputv,result}
kernel:submit()
//wait for ready
use result
正常方法靠给事件设置回调函数:
cl_int clSetEventCallback( cl_event event,
cl_int command_exec_callback_type ,
void (CL_CALLBACK *pfn_event_notify) (cl_event event, cl_int event_command_exec_status, void*user_data),
void *user_data)
在pfn_event_notify里把数据写回table
ffi.cast非常强大,可以把一个lua函数包装成一个C函数指针
然而openCL文档说了pfn_event_notify要自己保证线程安全。哪怕我能给upvalue上锁,我还能给lua的VM上锁么,是不是光靠lua和ffi就没招了?