2014-02-06 49 views
0

我有一臺筆記本電腦(英特爾I5 CPU英特爾HD 4000 GPU集成)和NVIDIA GT653M作爲離散GPU。clGetMemObjectInfo返回false結果有時[OpenCL的]

我使用CPU作爲主機,使用HD 4000 GPU作爲設備。這兩個工作在OpenCL 1.2

Q1:現在當我正在使用clGetMemObjectInfo()函數獲取包裝數組的內存緩衝區的主機指針(CL_MEM_HOST_PTR)時,該函數有時會正確返回指針,有時會返回0.我的代碼很簡單,我想知道爲什麼會發生這種情況?

問題2:我可以配置CPU同時用作主機和設備嗎?

回答

0

1- Khronos的指定的OpenCL 1.2在於

CL_MEM_USE_HOST_PTRCL_MEM_ALLOC_HOST_PTRCL_MEM_COPY_HOST_PTR值不能在標誌指定,但是從相關聯的相應的存儲器訪問限定符繼承 clCreateSubBuffer()函數文檔帶緩衝區的 '。

而OpenCL 1.0並非如此。所以我修改它,它工作正常。

2-我確實以錯誤的方式理解了架構,所以謝謝。

+0

那麼,你沒有告訴你正在使用子緩衝區,它改變了事情。無論如何,這個問題很好解決了。 –

+0

我很抱歉 – OmarGW

0
  1. 檢查您已經創建了cl_mem與CL_MEM_USE_HOST_PTR分配標誌,否則你的查詢主機的指針已經沒有任何意義。此外,檢查特定錯誤代碼的clGetMemObjectInfo()的返回碼。

  2. GPU & GPU是OpenCL設備,可以用來構建程序,運行內核等。所以是的,你可以爲shure做到這一點。

+0

@ 1- ** ** Khronos的指定的OpenCL 1.2「clCreateSubBuffer()」功能說明文件_'The「CL_MEM_USE_HOST_PTR」,「CL_MEM_ALLOC_HOST_PTR」和CL_MEM_COPY_HOST_PTR值不能在標誌指定,但由相應的存儲器訪問限定符被繼承與緩衝區相關聯。',OpenCL 1.0並不是這種情況。所以我修改它,它工作正常。 @ 2-我確實以錯誤的方式瞭解架構,謝謝。 – OmarGW

相關問題