2013-08-22 36 views
0

如果命令釋放GPU資源,我需要將排隊的OpenCL內核出列。它甚至有可能嗎?將排隊的OpenCL內核出隊

我在做什麼是排隊內核和I/O副本。然後檢查主機端,如果這個結果是正確的。但是由於70%的時間不正確,我在檢查主機中的結果(CPU + GPU是並行的!)的同時排隊。這樣GPU就可以100%使用。

但是,只要我發現結果是正確的,我不能取消正在進行的內核。正在浪費GPU資源。

我並行使用了許多OpenCL隊列和內核,所以這有效地降低了我的速度,並將瓶頸放在了GPU中。甚至有可能將該內核出隊?

謝謝。

Problem description

+0

我有一個像這樣的用例,我把內核分成幾個運行不同的偏移量來處理數據的每個部分。這樣,當我不需要處理所有數據時,我可以更好地控制停止的能力。這顯然不適用於所有情況,但由於大多數優化的GPGPU代碼已經被分解爲小的並行處理組,所以這應該不是太大問題。因此,對於您的情況,您將擁有RUN_A_PART_1,RUN_A_PART_2,然後RUN_B_PART_1,RUN_B_PART_2,然後當您釋放命令隊列時,它只會完成當前正在執行的小子集。 –

回答

1

這是可能。即使clReleaseCommandQueue也會等待內核完成其執行。

+0

雖然它,但我想要一些確認。謝謝! – DarkZeros

+0

關於如何優化這種情況的任何其他想法? – DarkZeros

+1

你可以檢查設備端的結果嗎? – Michael