error语言 - 11 OpenCL
error -11 OpenCL
这一行出现了-11错误
checkerror(clBuildProgram(program, deviceidcount, deviceids.data(), nullptr, nullptr, nullptr));
我的内核是
__kernel void render(double playerx,double playery,double playerz,double yaw,double pitch,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3,__global int* texture){
//const int i = get_global_id(0);
//x[i] = a*x[i];
//x[i] = cos(a);
x1 = x1-playerx;
y1 = y1-playery;
z1 = z1-playerz;
x2 = x2-playerx;
y2 = y2-playery;
z2 = z2-playerz;
x3 = x3-playerx;
y3 = y3-playery;
z3 = z3-playerz;
double smallyaw = yaw - M_PI_2;
double bigpitch = pitch + M_PI_2;
double screenx1 = cos(smallyaw)*cos(pitch)*x1 + sin(smallyaw)*cos(pitch)*y1 + sin(pitch)*z1;
double screeny1 = cos(yaw)*cos(bigpitch)*x1 + sin(yaw)*cos(bigpitch)*y1 + sin(bigpitch)*z1;
double screenz1 = cos(yaw)*cos(pitch)*x1 + sin(yaw)*cos(pitch)*y1 + sin(pitch)*z1;
printf(screenx1);
printf(screeny1);
printf(screenz1);
}
在语法方面我看不出有什么问题。我还尝试用浮点数替换所有的双精度。
这是愚蠢的看了这个最长的时间后,我注释掉了printf行,它工作。我该如何检查这些变量等于什么呢?有人能告诉我怎样正确地打印东西吗?
printf("value = %#gn", 3.012);
打印3.012到控制台。
打印到控制台应该以线程安全的方式完成,因此您的cl线程应该与控制台冲洗线程相同。
打印多个内核的输出可能会产生意想不到的结果。计时不准,指纹没有任何特定的顺序等等。尝试仅从一个工作项进行打印。
if i == 0{
printf(...)
}
如果需要的话,您还可以在上面放置一个屏障,并循环遍历工作项0中的多个值。
我看不出语法有什么问题。
我们再努力看看,因为printf不是这么用的。
如果要打印双精度值,请使用
printf("%f", value);
如果这没有意义,我建议阅读通用C printf和OpenCL printf的文档。
由于-11是CL_BUILD_PROGRAM _FAILURE,您可以使用clGetProgramBuildInfo来检索构建日志并检查编译出错的地方
相关文章:
- 使用std::vector的OpenCL矩阵乘法
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- OpenCL 内核参数中的字符***?
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- OpenCL 是否支持向量作为内核参数?
- 向量加法代码 OpenCL 返回 clCreateKernel 错误 -46
- error语言 - 11 OpenCL