2013-02-20 26 views
4

根據this document page 6 (released by AMD)(and this topics ?),有一些使用OpenCL模板的方法。 但是,第一個文檔報告這可以通過使用一些clBuildProgramWithSource似乎並不存在的選項來完成...無論如何,假設它是​​而不是前一個,我試圖使用所謂的「-x」選項有「CLC++」,但是,它仍然無法識別:如何在OpenCL中使用模板?

warning: ignoring build option: "-x" 

事實上,據來自Khronos的所產生的文件,此選項不可用! 這個文檔可能會被棄用,但是有沒有其他的方法可以在OpenCL代碼中使用模板?

回答

6

-x選項僅適用於支持OpenCL 1.2和靜態C++語言擴展的最新AMD OpenCL運行時。在官方的Khronos文檔中你不會發現任何關於它的文字,因爲這完全是AMD的一項舉措,最終是供應商擴展。

我假設你有正確的運行,所以你的內核需要使用這些選項可以了:

-x clc++ 

如果你能夠使用這個類來構建內核,你應該再能夠使用模板。

如果這不起作用,這意味着您的運行時安裝已經過時,你以某種方式使用錯誤的編譯器,或者它意味着你沒有正確的運行時。如果是這樣,請給你的平臺信息。

前段時間我和靜態的C++擴展混淆了,我可以證明-x clc++確實有效。


另外注意,使用這個擴展會使你的代碼無法移植,並鎖定在AMD兼容設備,因爲它是不可能的其他廠商將推出完全相同的擴展本身(如果有的話)。

此外,關於Khronos文檔的說明 - 由google返回的文檔通常是OpenCL 1.0版本,可能會令人惱火。如果您使用OpenCL,我建議您下載1.1或1.2標準以及獲取相關HTML文檔的本地副本以便快速訪問。它有助於。

0

新的SYCL Khronos標準爲OpenCL平臺(包括AMD OpenCL平臺)提供了對模板元編程的本地支持。