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;
看起來像編譯器可能會產生不正確的PTX代碼。你能粘貼生成的PTX嗎? – 2014-10-09 22:42:06
@Cicada,我發佈了PTX – user1782677 2014-10-09 22:47:09
如果將它設置爲5,那麼編譯器足夠智能,可以將代碼簡化爲float float(Vector v1,Vector v2){return 5.0f;};消失了。如果您禁用編譯器優化,則錯誤可能會保留。但是,你的「矢量」是什麼?你可以發佈它的定義嗎? – DarkZeros 2014-10-10 09:06:35