在JOCL中定时数据传输和执行

时间:2013-04-24 12:37:59

标签: java opencl gpgpu jocl

我正在使用JOCL库(由JOGAMP提供),我想知道是否可以测量从主机到设备传输数据所花费的时间,内核花费的时间以及获取结果所花费的时间分别?

目前我正在调用我的内核:

queue.putReadBuffer(...)。put1DKernel(...)。putWriteBuffer(...)

1 个答案:

答案 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的情况下初始化命令队列。