研究文章
优化数据传输基于OpenCL事件管理机制
清单6
一个简单的clDataTransfer函数的伪代码。
| ()cl_int clDataTransferFunc(…, |
| ()cl_uint numevts,/ *事件的数量在列表* / |
| ()cl_event* wlist,/ * * /事件列表 |
| ()cl_evett* evtret)* / / *事件对象的事件对象 |
| (){ |
| ()/ *创建一个新的用户事件对象的状态是CL_SUBMITTED * / |
| ()* evtret = clCreateUserEvent(…); |
| () |
| ()如果(non_blocking = CL_TRUE) |
| ()pthread_create(…,cldtThreadFunc,…); |
| ()其他的 |
| ()cldtThreadFunc(…); |
| () |
| ()返回CL_SUCCESS; |
| ()} |
| () |
| ()/ * numevt、wlist evtret从调用者传递* / |
| ()无效* cldtThreadFunc(无效* p) |
| (){ |
| ()clWaitForEvent (numevt wlist); |
| () |
| ()/ *管线式数据传输* / |
| () |
| ()clSetUserEvent状态(* evtret,CL_COMPLETE); |
| ()返回NULL; |
| ()} |
|