我正在使用JOCL库(由JOGAMP提供),我想知道是否可以测量从主机到设备传输数据所花费的时间,内核花费的时间以及获取结果所花费的时间分别?
目前我正在调用我的内核:
queue.putReadBuffer(...)。put1DKernel(...)。putWriteBuffer(...)
答案 0 :(得分:0)
回答我自己的问题;-)程序是这样的......首先创建一个具有所需容量的CLEventList,因为我只想测量内核执行,我将其设置为1。
CLEventList list = new CLEventList(1);
现在,当您将内核设置为命令队列时,您可以将列表添加为参数:
queue.putReadBuffer(...).put1DKernel(..., list).putWriteBuffer(...).finish();
之后您可以通过致电获取时间:
long start = list.getEvent(0).getProfilingInfo(ProfilingCommand.START);
long end = list.getEvent(0).getProfilingInfo(ProfilingCommand.END);
long duration = end - start // time in nanoseconds
不要忘记在启用Mode.PROFILING_MODE的情况下初始化命令队列。