2012-03-26 73 views
1

我嘗試實現一個多GPU的OpenCL代碼。在我的模型中,GPU必須進行通信並交換數據。OpenCL子緩衝區,爲什麼很重要?

我發現(我不記得在哪裏,這是一段時間),一種解決方案是處理 子緩衝區。任何人都可以儘可能簡單地解釋爲什麼子緩衝區在OpenCL中很重要 ?據我所知,只能使用緩衝區完全相同。

非常感謝, Giorgos

補充問題: 什麼是GPU之間交換數據的最佳方式?

回答

0

我不確定(或者我不知道)在處理多GPU時,子緩衝區如何爲您的問題提供解決方案。 AFAIK子緩衝區提供了一個視圖到一個緩衝區,即一個緩衝區可以分成更小的緩衝區(子緩衝區)提供一層軟件抽象,子緩衝區是有利的在相同的情況下,你需要保持偏移的第一個元素爲零。

爲了解決multiGPU或者多設備問題的OpenCL 1.2,從那裏你可以複製內存直接從一個GPU對象到另一個使用clEnqueueMigrateMemObjects的OpenCL API調用http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueMigrateMemObjects.html

+0

感謝您的答覆提供API。 那麼,只有當有人需要保留偏移量時才使用子緩衝區?在溝通中沒有用處?我知道clEnqueueMigrateMemObjects,但據我所知1.2版本尚未由nVidia實現。 – Giorgos 2012-03-29 01:34:41