OpenCL,不能在程序内重复相同的内核序列三次

时间:2017-05-26 23:38:26

标签: opencl

我正在创建一个使用OpenCL或C ++模拟模型的程序,以便您可以比较之后的模拟时间。 OpenCL对工作进行分解,因此您一次模拟一个部件,同一个内核多次排队,因此它涵盖整个模拟(我这样做是为了检索数据并重叠计算时间和数据传输时间)

这个程序运行正常,但它有一个问题:一旦你选择的模拟完成,它就会返回主菜单,这样你就可以模拟更多次。您可以根据需要进行尽可能多的C ++模拟,但是第三次​​OpenCL模拟中的EVERYTIME程序冻结,它没有显示错误或任何东西,它只是在我等待每个队列完成后冻结(通过设置CL_TRUE)在最后一个ReadBuffer中)

我使用VisualStudio监控GPU利用率并得到以下结果,每个峰值都是模拟,但它们对我来说没有意义,因为每个模拟应该使用我认为相同的GPU%。我猜它冻结了,因为在第三次它超过100%

GPU utilization

我不明白为什么会这样。我发布了所有内容,队列,缓冲区,程序,内核和上下文,并释放了主机指针,我在模拟后分配数据。这个问题并不重要,但它非常麻烦,因为我想运行几个OpenCL模拟而不必重新启动程序。有什么想法吗?

0 个答案:

没有答案