夥計們!我將一個結構完整的數據傳遞給我的內核,我遇到了以下使用它的困難(非常簡單): [編輯:在mac book pro上的mac osx/xcode 3.2;這個編譯顯然是CPU]傳入參數觸摸的全局變量變得不可用
typedef struct
{
float xoom;
int sizex;
} varholder;
float zX, xd;
__kernel void Harlan(__global varholder * vh)
{
int X = get_global_id(0), Y = get_global_id(1);
zX = ((X - vh->sizex/2)/vh->xoom + vh->sizex/2); // (a)
xd = zX; // (b) BOOM!!
}
執行線(a),線標記(b)中,一個簡單的賦值後,給出 「LLVM編譯器無法編譯的函數」。但是,如果我們不執行第(a)行,那麼第(b)行很好。
因此,通過用這個函數繞過LOT,看起來好像它是賦值語句(a),它使用傳入的參數來擾亂變量zX的未來訪問。但是,我當然需要能夠使用計算結果進一步下線。
我有zX和xd在文件級別聲明,因爲我的幫助函數需要它們。
有什麼想法? 謝謝!大衛
p.s.我現在已經註冊了,所以能夠upvote和接受答案,我很遺憾無法爲幫助我的最後一個人做些什麼(使用相同的用戶名進行註冊,但似乎無法對舊帖子投票;對不起! )。