2014-10-09 87 views
1

所以我的一個設備(一個Nvidia GeForce GT 650m GPU)一直給我這個奇怪的ptxas應用程序錯誤,說「參數不匹配的指令'mov',當我試圖建立一個我的CPU和其他GPU(英特爾高清4000)根本不會給我這個錯誤openCL「參數不匹配指令'mov'」錯誤

這是一個函數的例子,它導致了這個錯誤,我的3個設備中只有一個給出了這個錯誤。發生這個錯誤這只是一個輔助功能,我在我的內核之一使用:

//Calculate the dot product of two vectors 
float Dot(Vector v1, Vector v2) 
{ 
    return (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); 
} 

首先我想工作的分裂成這樣的:

//Calculate the dot product of two vectors) 
float Dot(Vector v1, Vector v2) 
{ 
    float a = v1.x*v2.x; 
    float b = v1.y*v2.y; 
    float c = v1.z*v2.z; 
    float result = a + b + c; 
    return result; 
} 

但這也給了我同樣的錯誤。有趣的是,如果我只需設置結果= 5.0F,並返回它神奇地編譯和運行:

//THIS WILL COMPILE AND RUN 
float Dot(Vector v1, Vector v2) 
{ 
    float a = v1.x*v2.x; 
    float b = v1.y*v2.y; 
    float c = v1.z*v2.z; 
    float result = 5.0f; //IGNORE THE CALCULATION. JUST MAKE IT 5 
    return result; 
} 

所以我不知道發生了什麼事情。我的'點'功能並不是唯一受影響的功能,而是其中的一種功能。我的Nvidia卡有缺陷嗎?

編輯這裏是日誌我從clGetProgramBuildInfo拿到構建失敗後:

ptxas application ptx input, line 703; error : Arguments mismatch for instruction 'mov' 
ptxas application ptx input, line 703; error : Unknown symbol 'LIntersection_2E_n' 
ptxas application ptx input, line 703; error : Label expected for forward reference of  'LIntersection_2E_n' 
ptxas fatal : Ptx assembly aborted due to errors 

雖然有印刷不僅僅是「MOV」一個我描述了多個錯誤,他們都去走的時候我做上述結果變化= 5.0f;

+0

看起來像編譯器可能會產生不正確的PTX代碼。你能粘貼生成的PTX嗎? – 2014-10-09 22:42:06

+0

@Cicada,我發佈了PTX – user1782677 2014-10-09 22:47:09

+0

如果將它設置爲5,那麼編譯器足夠智能,可以將代碼簡化爲float float(Vector v1,Vector v2){return 5.0f;};消失了。如果您禁用編譯器優化,則錯誤可能會保留。但是,你的「矢量」是什麼?你可以發佈它的定義嗎? – DarkZeros 2014-10-10 09:06:35

回答