Error handling openCL“指令'mov'的参数不匹配”错误

Error handling openCL“指令'mov'的参数不匹配”错误,error-handling,compilation,opencl,gpu,nvidia,Error Handling,Compilation,Opencl,Gpu,Nvidia,因此,我的一台设备Nvidia GeForce GT 650m GPU不断给我这个奇怪的ptxas应用程序错误,当我试图在该设备上构建cl_程序时,它说指令“mov”的参数不匹配。这是我3台设备中唯一一台给我这个错误的。我的CPU和其他GPU Intel HD 4000根本没有给我这个错误 下面是导致此错误发生的函数示例。这是我在一个内核中使用的辅助函数: //Calculate the dot product of two vectors float Dot(Vector v1, Vector

因此,我的一台设备Nvidia GeForce GT 650m GPU不断给我这个奇怪的ptxas应用程序错误,当我试图在该设备上构建cl_程序时,它说指令“mov”的参数不匹配。这是我3台设备中唯一一台给我这个错误的。我的CPU和其他GPU Intel HD 4000根本没有给我这个错误

下面是导致此错误发生的函数示例。这是我在一个内核中使用的辅助函数:

//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;
}
但这也给了我同样的错误。有趣的是,如果我简单地设置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时,它们都会消失

根据LLVM开发人员的说法,这是nvptx后端的一个bug


看起来编译器可能正在生成不正确的PTX代码。你能粘贴生成的PTX吗?@Cicada,我发布了ptxi如果你将它设置为5,编译器足够智能,可以将你的代码简化为float DotVector v1,Vector v2{return 5.0f;};因此,错误消失是合乎逻辑的。如果禁用编译器优化,错误可能会保留。但是,你的向量是什么?你能给出它的定义吗?