1
我在啓用了printf擴展的ATI卡上使用OpenCL。我寫了一個函數來打印變量:傳遞給函數的char *自變量帶有ATI OpenCL printf擴展問題
void printVar(constant char* name, float var)
{
printf("%s: %f\r\n", name, var);
}
此代碼的工作時,作爲普通的C編譯如預期,但如果我的OpenCL與
printVar("foo", 0.123);
調用它的結果總是有些隨意char後跟0.123而不是「foo:0.123」。我猜編譯器在識別char *字符串時遇到了問題,是否有解決方法或修復方法,以便我可以使用該函數?
我也得到了這種行爲。值得注意的是,如果內核運行在我的CPU上(使用AMD APP SDK 2.3),而不是在我的HD 5870上運行,那麼它的工作方式和預期一樣。我想這可能是GPU上的缺陷或printf的未記錄限制。 – Quantumboredom 2011-04-06 18:52:37
爲了完整:我剛剛閱讀了AMD APP SDK 2.4開發人員發行說明,他們聲明printf目前不支持打印字符串。 – Quantumboredom 2011-04-07 09:18:07