2014-10-09 86 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

回答