0

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

目前我正在像这样调用我的内核:

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

4

1 回答 1

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

于 2013-04-27T13:21:45.997 回答