【问题标题】:Error in function clbuildprogram... (it returns -11)函数 clbuildprogram 中的错误...(它返回 -11)
【发布时间】:2013-02-09 07:37:42
【问题描述】:

我创建了一个冒泡排序代码。用户函数 createProgram 中的 clbuildprogram 出现错误 我的内核看起来像:

__kernel void sort_kernel(__global const float *a, __global const float *b)
{
    const int n=100;
    int j;
    float temp;
    int gid = get_global_id(0);
    b[gid]=a[gid];

    for(j=0; j < n-gid; j++)
    {
        if(b[j+1]<b[j])
        {
            temp=b[j];
            b[j]=b[j+1];
            b[j+1]=temp;
        }
    }
}

clbuildprogram 根据运行时错误给出错误。

***内核中的错误::1:1:错误:未知类型名称'_kernel'

_kernel void sort_kernel(__global const float *a, __global const float *b) //, ^

:1:9: 错误:预期标识符或 '(' _kernel void sort_kernel(__global const float *a, __global const float *b) //, ^

:21:3: 错误:预期的外部声明 } ^

:23:1: 错误:预期的外部声明 } ^

:23:1: 错误:预期的外部声明***

请告诉我错误是什么以及如何纠正它...?

【问题讨论】:

  • 您确定您的内核代码以__kernel 开头而不是_kernel 开头吗?这是 JIT 编译器返回的错误...
  • 至于理解和解决编译器错误...总是更正第一个错误,忽略其他错误,然后重试直到它工作。尤其是在 C 和 C++ 方言中,一个小错字往往会级联成大量(在大型项目中为数百个)难以理解和令人生畏的错误消息。只有第一个有意义。

标签: opencl


【解决方案1】:

您在程序中错过了_。错误很明显。我认为这里粘贴的代码与您运行的代码不同。 在您的程序中将您的 _kernel 更正为 __kernel

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多