是否可以重新解釋已傳遞到OpenCL內核的參數?例如,如果我有一個正在傳入的整型數組,但我想將索引16處的整數解釋爲一個float(不要問爲什麼!),那麼我會認爲這會起作用。在OpenCL 1.0中重新解釋參數的問題
__kernel void Test(__global float* im, __constant int* constArray)
{
float x = *((__constant float*) &constArray[16]);
im[0] = x;
}
不過,我得到一個CL_INVALID_COMMAND_QUEUE錯誤,當我下一次嘗試使用命令隊列,這意味着上面的代碼執行了非法操作。
任何暗示上述有什麼問題和/或如何實現重新解釋?
我現在已經嘗試:
__kernel void Test(__global float* im, __constant int* constArray)
{
float x = as_float(0x3f800000);
im[0] = x;
}
,這確實給一個1.0F在IM [0]。但是,不管constArray [16]中的內容如何,在im [0]中總是導致零。
Regards,
Mark。
希望你實際上將x定義爲最後兩種情況下的浮點數? – talonmies 2011-06-07 14:46:38
oops。對不起,對!生病編輯這個問題來反映這一點。非常感謝您花時間幫助 – 2011-06-07 14:51:10