2010-11-04 37 views
1

大家好,我在Nvidia的指南中沒有看到OpenCL中__constant變量分配的語法方式。關於使用常量緩存的語法問題

當我調用clCreateBuffer時,我必須給它一個標誌CL_MEM_READ_ONLY。目前我似乎並不介意將其設置爲CL_MEM_READ_WRITE,但我敢打賭,試圖寫入內核中的常量緩存會導致一些問題。

我需要記住在主機端做什麼問題或特殊事情?如果我在設備內核代碼中將參數聲明爲__constant,那麼只要不寫入它就可以使用常量緩存變量嗎?

回答

2

是的,基本上就是這樣。您必須記住,恆定緩存的大小限制爲64 KB。由於__constant地址空間本質上是隻讀的,因此編譯器應該在嘗試寫入時抱怨。

不幸的是,__constant內存總是與NVidia的實現有點兒錯誤。偶爾,編譯器會發出錯誤的代碼,從常量內存中讀取只是返回零。至於260.x驅動程序系列,他們尚未解決問題。